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
Einen niederohmigen ziehrunter oder ziehrauf Widerstand benutzen.
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.
>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
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
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.
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.
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.
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
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.