Forum: Mikrocontroller und Digitale Elektronik Frage USART-Interrupt Atmega8


von Thomas (Gast)


Lesenswert?

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

von gerd (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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.

von gerd (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.