Forum: Mikrocontroller und Digitale Elektronik Uart Interrupt Steuerung


von Finn m. (masu)


Lesenswert?

Hallo,
Ich bin noch ein ziemlicher Anfänger und meine Frage ist wahrscheinlich 
ziemlich Plump, dennoch komme ich auf keinen Grünen Zweig und hoffe, 
dass ihr mir vlt. weiterhelfen könnt ;).

Ich habe zwei uC, welche sich gegenseitig Buchstaben, sowie Werte 
schicken können (über UART ... C++).
Der Interrupt wird ausgelöst, sobald ich bei einem uC etwas empfange.
Mein kleines Problem ist, dass ich gerne unterscheiden will, ob er mir 
jetzt das char - Array (10 Buchstaben)sendet, oder den integar Wert. 
Denn beide haben den selben IRQ - Handler.

Senden und Empfangen jeweils für den Wert und jeweils für die Buchstaben 
funktioniert, nur die Fallunterscheidung nicht. Genau dort fehlt mir 
noch ein kleiner Denkanstoß, da die Buchstaben sowie der Wert zufällig 
gewählt sind. D.h. ich kann nicht in der IR Abfragen, ob diese 
eintreffen. (Außerdem folgt das senden des Buchstabenarrays und des 
Wertes, keinem Muster (d.h. es kann mehrmals der Wert geschickt werden 
ohne den Buchstaben usw.)

Ich hoffe das war nicht zu kompliziert erklärt,
Danke schonmal für die Rückmeldungen

von Michael (Gast)


Lesenswert?

Guten Morgen.

Vergiss es - ob ein Integer oder ein Chararray gesendet wurde, kann die 
UART nicht erkennen. Für die UART kommen nur mehrere Bytes an. Ob diese 
zusammengesetzt dann als Integer oder Chararray interpretiert werden, 
ist deine Sache. Du brauchst irgendeine Art Protokoll.

Zum Beispiel:
Zunächst kommt ein 'I' für Integer und anschließend wird der 
Intergerwert übertragen. Dein uC weiß dann, dass es die nächsten zwei 
Bytes als Integer zu werten hat.
Kommt zunächst ein 'C' für Char, weiß dein uC, dass die folgenden 20 
Bytes als char zu interpretieren sind.

Kommt als erstes Zeichen ein anderes, wird es ignoriert, bis ein 'I' 
oder ein 'C' kommt.

Ich hoffe, einen Denkanstoß gegeben zu haben.
Michael

von Finn m. (masu)


Lesenswert?

Vielen Dank für die vorallem schnelle Rückmeldung.

An ein Start-Byte hab ich auch schon gedacht gehabt, denn ein 
Terminierungsbyte für das Array hatte ich schon. Nur das wollte nicht 
ganz funktionieren...
Habs allerdings gerade zum laufen gebracht, war wohl einfach schon zu 
spät ;).
Vielen Dank nochmal!
Lg
Masu

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.