-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: int0/ int1 löst unerwünscht aus

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379

    int0/ int1 löst unerwünscht aus

    Anzeige

    Hallo zusammen!

    Ich habe eine kleine, eigentlich recht simple AVR-Schaltung in einem Alu-Gehäuse untergebracht. Die Schaltung löst u.a. einen HW-Interrupt aus, wenn ein Signal auf Int0 bzw. Int1 seinen Pegel ändert (0V -> 5V). Der interne Pullup für die entsprechenden Pins ist jeweils eingeschaltet. Prinzipiell funktioniert die Schaltung. Allerdings wird der Interrupt auch unabhängig von dem zu detektierenden Flankenwechsel ausgelöst, oft wenn ich das Gehäuse mit den Fingern berühre - aber nicht nur, manchmal auch aus "heiterem Himmel". Das Gehäuse liegt an verschiedenen Punkten auf Masse, das kann ich auch kaum ändern. Hat jemand eine Idee, was da genau passiert und vor allem was ich dagegen tun kann?

    Vielen Dank!
    Malte

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Das Problem werden vermutlich Störungen sein.
    Die Eingänge reagiern ja auch schon auf ziehmlich kurze Störungen - bei ganz kurzen Pulsen nicht unbedingt zuverlässig, aber ab etwa 5 ns Pulslänge könnte der AVR schon gelegentlich reagieren. Das Problem ist ähnlich wie mit eingekoppelten Störungen am Reset Pin. Entsprechend ähnlich ist auch der Lösungsansatz:
    1) ein etwas kleineren Pullup (z.B: 10 K)
    2) ein kleiner Kondensator gegen GND (z.B. 1 nF)

    Es gibt hier auch noch eine Software Lösung, die aber nicht bei jedem Programm geht: In der ISR jeweils nochmal den Eingang testen und so kurze Störungen (sind dann unter etwa 20 Zyklen) erkennen und die ISR gleich wieder verlassen.

    Für einen Eingang könnte man eventuell auch den ICP Eingang statt einem externen Interrupt nehmen, der hat eine extra Funktion zur Unterdrückung von Pulsen unter 4 Zyklen.

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Hallo!

    Danke, ich war auch von soetwas ausgegangen... Blöde Frage: spielt es noch eine Rolle, wo sich der zusätzliche Pullup befindet? Ich hatte einen ein ganzes Stück weg vom Controller eingebaut, der hat leider nichts geholfen. Eine Kapazität hab ich noch nicht probiert, weil ich nicht einschätzen konnte, wie "rund" dadurch die Flanke wird, sprich, ob ich Gefahr laufe, was sehr kurzes am Eingang zu verpassen. Ich werde es mal mit 1 nF probieren.

    ICPs kann ich nicht verwenden, die werden schon anderweitig gebraucht. Muss mal überlegen, ob ich das auch in Software versuchen kann.

    Danke!
    Malte

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wo der Pullup-Widestand ist, ist nicht so wichtig. Dicht am µC hat aber einen kleinen Vorteil, wenn größere Störungen über die GND leitung kommen. Der Kondensator sollte besser dicht an den µC.

    Wie schnell muß den reagiert werden ?

    Eine bessere Abschirmung oder Masseführung ist natürlich auch eine Option.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Hallo!

    Wenn ich das jetzt richtig überschlage, ist der Puls, den ich zeitlich möglichst genau erkennen möchte, im Bereich von 1 ms lang. Ich möchte aber gerne eine größere Genauigkeit erreichen. Ich kann in kürze nochmal genauere Zahlen nachliefern...

    Die Masseführung sollte eigentlich recht ordentlich sein, die Schaltung ist auf einer sauber geätzten Platine mit Massefläche aufgebaut. Und zur Schirmung: ich dachte eigentlich, dass das Aluminiumgehäuse abschirmend wirkt.

    Wie ich leider festrstellen musste, ist das Problem noch etwas genereller. Zum einen habe ich das Problem mit den Ints (s.o.). Sehr selten (aber eben öfters als nie...) gerät der Controller außerdem in einen undefinierten Zustand, wenn ich das Gehäuse berühre. Mir ist nicht wirklich klar, was der Controller in diesem Zustand macht, auf jeden Fall fällt dann das angeschlossene LCD aus. Einige Funktion, zB Tastenabfrage und entsprechende Reaktionen funktionieren aber noch.

    Ich bin mit meinem Latein etwas am Ende, weil es sich hierbei nun nicht um mein erstes Projekt handelt - ich denke ich habe keine extrem blöden Fehler gemacht...

    Ich werde morgen mal versuchen, das Gehäuse von der Masse zu trennen (Kunstoffschrauben u.ä.). Aber das ist ja ein kurieren an den Symptomen, es kann ja nicht so schwer sein eine primitive µC-Schaltung in einem Blechgehäuse zum Laufen zu bekommen...

    Wenn noch jemandem was einfällt, ich wäre intertessiert

    Etwas frustriert,
    Malte

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Wie sieht denn die Stromversorgung des Gerätes aus ?
    Mit welcehn externen Schaltungen ist das Gerät verbunden ?

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Da der Fehler beim Berühren des Gehäuses auftritt, spricht das für ein ESD Problem oder was ähnliches. Die Schaltung gegen das Gehäuse zu isolieren hilft da nur bedingt. Mehr als eine Verbindung zur Schaltung ist vielleicht nicht ideal. Kritisch sollte das berühren des Gehäuses eigentlich nur sein, wenn da noch irgendwo Kabel abgehen, da müßte man dann mit dem ESD Schutz anfange.

    Ist denn der Brounoutdetektor aktiv, und die Spannungsversorgung OK ?

    Wenn der Strom nicht so knapp ist, kann man die Pullups auch noch deutlich niederohmiger machen (z.B. 1 K). Der Kondensator bringt schon etwas Verzögerung, bei 1 K und 1 nF halt grob 1 µs, aber diese Verzögerung ist im wesentlichen konstant, sollte also nicht so stören.

    Wenn das Programm noch teilweise funtioniert, spricht das doch etwas gegen ein Hardwareproblem und etwas für ein Softwareproblem. Das der µC nur teilweise läuft ist durch einen Hardwarefehler nur schwer zu erreichen. Der Teilweise Ausfall könnte auf das LCD beschränkt sein. Nur selten auftretende Fehler könnte z.B. durch ein zusammentreffen von 2 ISRs, einen Stacküberlauf oder ähnliches passieren.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Das der µC nur teilweise läuft ist durch einen Hardwarefehler nur schwer zu erreichen. Der Teilweise Ausfall könnte auf das LCD beschränkt sein.
    Meine Vermutung ist, das der Controller neu Bootet, das Display, das ja schon initialisiert war, sich nicht mehr vernüftig neu initialisiert.

    Mit der Folge, das eigentlich alles soweit läuft, nur das Display nicht mehr richtig funktioniert.

    Ich würd in das Gehäuse zu Testzwecken einen Akku als Stromversorgung einbauen und dann gucken was dann passiert.

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Hallo!

    Danke für die Hinweise! Zur Stromversorgung: das Gerät wird mit einem 9V Steckernetzteil versorgt. Auf der Platine befindet sich nach einer Diode als Verpolungsschutz ein 7805 mit einer kleinen Siebung. Da sollte eigentlich alles okay sein. Ich probiere bei nächster Gelegenheit eine andere Stromversorgung aus.

    Ich hab natürlich auch schon an ein Softwareproblem gedacht, allerings ist sehr auffällig, dass die Probleme nach Berührung des Gehäuses auftreten.

    Tatsächlich ist die Masse der Platine über mehr als nur einen Punkt mit dem Gehäuse verbunden, allderings sollten das alles sehr niederohmige Verbindungen sein (6kantbolzen die auf der Massefläche der Platine und dem Gehäuse aufliegen). Mir ist allerdings nicht ganz klar, warum die Trennung des Gehäuses von Schaltungsmasse nichts bringen soll - ich dachte der "Dreck" kommt über die Masse...

    Ich melde mich, wenn ich noch was rausgefunden habe. Falls ansonsten noch jemandem etwas einfällt: ich bin sehr interessiert...

    Dank&Gruß
    Malte

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.111
    Ich schlage ebenfalls vor, die Spannungsversorgung zu überprüfen, zwingenderweise mit einem Oszi.
    Es wäre möglich, dass Du Dir hochfrequente Störungen mit der Beschaltung ansich in die Versorgung einkoppelst, zB indem Du Pulse an Ausgängen ausgibst, die an langen Leitungen und möglicherweise in der Luft hängen, zB weil Stecker abgezogen sind, usw.
    Gruß

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •