www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage USART-Interrupt Atmega8


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.