UART Reveive Interrupt

Gast #360523
Hallo Leute.Bin leider ein Anfänger in sachen controller programmieren
und hänge gerade an dem Verständnis von codevision zu "receive über
usat
mit interrupt.Verstehe nicht wie ich nun empfangene daten speichern
kann ohne das sie mir verloren gehen?Wird immer ein Interrupt beim
empfangen ausgelöst?
Habe mal den code mitgeschickt ,den mit codevision"codewizar" erzeugt
hat.Hoffe jemand hat Zeit bzw lust mir weiterzuhelfen
Angehängte Dateien:
Gast
Hallo,
"Verstehe nicht wie ich nun empfangene daten speichern
kann ohne das sie mir verloren gehen?"

Warum sollen sie verloren gehen?

"Wird immer ein Interrupt beim
empfangen ausgelöst?"

Das wird über ein Interrupt-enable-Flag eingestellt. Vielleicht bietet
der Compiler auch eine Funktion dazu.

Gruß

Wolfgang
--
www.ibweinmann.de
Brushless Development Kit
Gast
@Jürgen lade dir am besten die PDF-Datei deines Atmel von der
Herstellerseite herunter. Dort ist das besser beschrieben(Funktion UART
mit C-Codeschnipsel)Wahrscheinlich siehst du gerade den Wald vor lauter
Bäumen nicht ^^. Und nimm dir das AVR-Tutorial von diesem Forum, da ist
auch C noch ein wenig erklärt(Voraussetzung)ansonsten kannst du dir
C-Tutorials ergoogeln.
Gast
Hallo .Also programmieren selbst kann ich eigentlich(mehr oder weniger)
Fange aber erst gerade an controller zu programmieren.Das datenblatt
habe ich auch schon durchgeforstet und tranmittnen bekomme ich auch gut
hin.Uart Prinzip (Welche Register man setzt )ist eigentlich auch
klar.Mein problem ist (auch wenn das verrückt klingt),das ich nicht
verstehe mit der obrigen code-einstellung ,Daten die ich erhalte zb:
12 AB (als hex)  , zu speichern und später auszulesn.
Gast
brauchst du dich bei CodeVision kaum drum zu kümmern.
Der Interrupthandler schreibt die angekommenen Daten in einen
Ringbuffer, Buffergrösse kannst du einstellen, je nach Baudrate,
Datenaufkommen und wie oft du nachschauen kannst, ob Daten da sind.
Wieviele Bytes da sind, steht in rx_counter, abholen kannst du die
Daten mit getchar(). Zu guter Letzt gibt es noch das Bit
rx_buffer_overflow. Wenn gesetzt, ist der Buffer übergelaufen, d.h. du
hast Daten verloren -> neu anfordern. Kommt bei ordentlicher
Programmplanung aber nicht vor.
Gast
@jürgen:
ACHTUNG! Wenn Du die kostenlose Evaluation-Version von CodeVision
benutzt, kannst Du keine Interrupt-gesteuerte UART-Bearbeitung machen!
Das ist neben dem Code Size Limit eine der Einschränkungen der
Freeware-Version!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 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.