UART Reveive Interrupt

Gast #360523
Lesenswert?

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 #360524
Lesenswert?

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 #360526
Lesenswert?

@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 #360527
Lesenswert?

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 #360528
Lesenswert?

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 #360530
Lesenswert?

@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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren