Frage USART-Interrupt Atmega8

Gast #156459
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
Gast
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
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.