Forum: Mikrocontroller und Digitale Elektronik UART Reveive Interrupt


von jürgen (Gast)


Angehängte Dateien:

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

von Wolfgang (Gast)


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

von jürgen (Gast)


Lesenswert?

Wenn ich jetzt zb. daten empfange.Wie kann ich die Register auslesen bzw
wo stehen die Daten?

von Witwenbetreuer (Gast)


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.

von jürgen (Gast)


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.

von crazy horse (Gast)


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.

von jürgen (Gast)


Lesenswert?

ok.thx .super danke

von johnny.m (Gast)


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!

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.