Hallo, ich hätte mal eine Frage zum Interrupt der seriellen Schnittstelle bei einem Atmega8. Mein Gerät läuft normalerweise ohne Verbindung an der seriellen Schnittstelle. Um Parameter ändern zu können, soll man das Gerät an den PC anschließen und dann erkennen dass eine Kommunkation stattfindet und in einen anderen Modus gehen. Also ich sende vom PC ein vorher Initialzeichen. Da das Gerät normalerweise aber im Auto laufen wird, habe ich Bedenken dass das Gerät aufgrund von irgendwelchen Einstreuungen evtl. auch ohne angeschlossenes Gerät ein Zeichen erkennen könnte. Der AVR startet ja den Empfang bei einem Startbit, das RXC-Bit löst den Interrupt dann ja nur aus wenn ein vollständiges Zeichen angekommen ist (also nach dem Stoppbit). Oder ist das recht unwahrscheinlich, dass so etwas vorkommt? Ich könnte natürlich auch auswerten, ob ein bestimmtes Zeichen angekommen ist (am besten natürlich 0xAA oder 0x55), aber nicht dass mein Gerät dann andauernd im USART-Interrupt rumhängt ;-) Meinungen? Thomas
Also erstmal ist echtes RS232 mit einem hohen Störabstand gesegnet, da müssen schon einige Volt auf dem Eingang sein, um etwas schalten zu können. Aus "Versehen" empfangene Zeichen haben meist schon einen kaputten Rahmen. Das heißt, dass das Stopbit nicht stimmt. Ein solches "Zeichen" löst einen RX-Interrupt aus, das FE-Error-Bit ist dann aber gesetzt und das Zeichen wird abgeholt, aber schlicht verworfen. (Achtung: Zeichen IMMER abholen, auch wenn es falsch ist, sonst gibt es endlose Interrupts, weil immer noch ein Zeichen vorhanden und das RX-Int-Bit gesetzt ist). Es reicht m.E.n. völlig aus, auf ein Carriage-Return-Zeichen zu warten und dann loszulegen. Wer es ganz korrekt machen will, benutzt zur Erkennung des angeschlossenen Computers die RS232-Leitung DTR. Vorausgesetzt, man hat nicht mit Kabeln gespart und die Hardware wird vom Terminalprogramm korrekt bedient. mfg gerd
Ich habe mit Kabeln gespart ;-) und zwar aus dem Grund, dass mein Gerät ziemlich klein ist und ich den RS232 Pegelwandler in den 9poligen Sub-D-Stecker verlegen will. An meinem Gerät selber befindet sich eine 4polige Modularbuchse (wie am Telefonhörer). Da hab ich dann RxD, Txd, GND und 5V für den Wandler drauf. Wenn kein Kabel angeschlossen ist, hängen RxD und TxD ja quasi in der Luft. Aber die Auswertung des FE-Error Bits ist ein guter Tipp.
Ja wenn das so ist: auf jeden Fall einen Pullup-/Pulldown vor den AVR-RXD-Eingang, dann ist Ruh', wenn das Kabel nicht angeschlossen ist. mfg gerd
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.