mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt "unempfindlicher" machen


Autor: Jörg W. (yorgi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend zusammen.

Ich arbeite im Moment an einem Projekt, bei dem ich Interrupt-gesteuert 
ein kabelgebundenes/kabelloses Signal mit den INT Eingängen eines 
ATmega16 abtaste. Das ganze läuft auf TTL Basis, was die Auslösung eines 
Interrupts aber sehr empfindlich macht. Schon beim bloßen berühren der 
Pins, wird der Interrupt ausgelöst.
Ich suche eine Möglichkeit, das ganze ein wenig unempfindlicher zu 
machen. Ich hatte an einen Schmitt-Trigger gedacht oder die Nutzung des 
A/D-Wandlers. Die Eingangssignale haben eine Frequenz von 2kHz, welche 
ich berücksichtigen muss.

Hättet ihr Tipps oder andere Vorschläge, wie ich das Problem lösen 
könnte??

Danke schonmal.

mfG

Yorgi

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum nicht einfach ein Pull-Down Widerstand verwenden?

Autor: YS-500 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen niederohmigen ziehrunter oder ziehrauf Widerstand benutzen.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TTL macht die Auflösung gerade unempfindlich, dazu isses ja da. du 
hast doch da schon eine Hysterese eingebaut -- oder ists doch kein 
echtes TTL...?

Ein echter TTL-Totempol sorgt für stabile Verhältnisse, da wackelt nix.

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Schon beim bloßen berühren der Pins, wird der Interrupt ausgelöst.

Hast du eventuell Eingänge offen gelassen ?
Bei einer richtig dimensionierten Schaltung sollte das eigentlich nicht 
passieren. Wie meine Vorredner schon gesagt haben mach mal niederohimge 
Pullup/Pulldownwiderstände an deinen Eingängen. Wenn nötig noch ein 
kleines C nach GND.

Es wäre auch hilfreich wenn du mal deinen Schaltplan posten würdest.

Gruss Helmi

Autor: Jörg W. (yorgi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

danke erstmal für die Antworten.
Das mit den Pullsups werde ich testen.
Einen wirklichen Schaltplan gibt es nicht, da ich im Moment nur mit zwei 
STK500 Boards und den ATmegas arbeite.
Der grobe Aufbau sieht wie folgt aus:

Messgerät -> µC1 ----------> µC2 -> Anzeige

Die Verbindung von µC1 und µC2 ist zu Testzwecken mit Kabeln aufgebaut, 
soll aber durch Funkmodule ersetzt werden.
Die Verarbeitung der Eingangssignale ist an beiden Controllern mit 
Interrupts realisiert. Die Ausgänge des ersten Controllers sind einfach 
mit den INT-Eingängen des zweiten verbunden. Leider reagiert der 
INT-Eingang des zweiten Controllers schon beim Einschalten des ersten 
STK Boards, was natürlich so nicht gedacht ist. Das gleiche passiert 
beim Einschalten des Messgerätes. Die Spannungsspitzen beim Einschalten 
reichen also schon für das Auslösen der Interrupts aus. Daher meine 
Bezeichnung der "empfindlichen" Eingänge. Bei den Funkmodulen ergibt 
sich auch später das Problem, dass ich ein starkes Rauschen am Empfänger 
habe, falls der Sender nicht sendet.
Diese Probleme muss ich lösen, damit meine Interrupt-Routinen korrekt 
arbeiten.

Werde mal posten, ob die Pullups was gebracht haben.


mfG Jörg

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was spuckt denn das Meßgerät für ein Übertragungsprotokoll aus? 
Vielleicht kann man ja ein Hardware-Interface des Controllers nutzen 
oder gar keinen externen Interrupt, sondern timerbasiertes Polling.

Autor: Jörg W. (yorgi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das "Protokoll", wenn du es so nennen willst, habe ich selber 
geschrieben.
Ist ein Manchester-Code mit einer Frequenz von 2kHz und ner Baud von 
1000.
Für die Abtastung nutze ich Timer und Interrupts, ob an den passenden 
Stellen abzutasten.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dafür brauchst Du aber keinen externen Interrupt, das kannst Du per 
Polling machen. Du läßt einen Timer beipielsweise alle 200µs auslösen, 
in dessen ISR kontrollierst Du den Signalpin und notierst Dir, wie weit 
der Timer gezählt hat, um auf Deine Bits zu kommen. Eventuell 
synchronisierst Du dann noch den Timer zum eintreffenden Signal und gut 
ist. Auf diese Weise kannst Du Signalstörungen, die kürzer als ein Bit 
sind, ganz gut filtern. Zusätzlich machst Du noch einen externen PullUp 
oder PullDown von 10k dran und in Serie zum AVR-Pin noch einen 
10kOhm-Widerstand. Dieser schützt den Portpin vor statischen Entladungen 
und anders gearteten Fehlspannungen.

Autor: Jörg W. (yorgi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muss aber irgendwie an den "Beginn" meiner Übertragung kommen
und dazu nutze ich den Interrupt, da ich ja sonst nicht sagen kann, ob 
und an welcher Stelle ich bei meinen gesendeten Informationen bin.
Das mit den Widerständen werde ich testen, danke.

mfG Jörg

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Beginn einer Übertragung kannst Du zum Beispiel mit einer überlangen 
"1" deklarieren, die länger ist, als ein langer Bitphasenwechsel. Da Du 
das Protokoll selbst schreibst, kannst Du doch mit allen Tricks arbeiten 
und trotzdem eine zuverlässige Übertragung erreichen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.