Forum: Mikrocontroller und Digitale Elektronik [Anfänger] Bitmusterübertragung -> M16C Ausgabe


von Christian (Gast)


Lesenswert?

Hallo,

ich bin ein blutiger Anfänger in Sachen MCUs und habe dort eine kleine 
Bitte an euch.
Könnte mir vielleicht erklären oder noch viel besser beispiel Quelltext 
zeigen, wie man ein Bitmuster zB. in c++ erstellt dieses dann über die 
serielle Schnittstelle an den m16c (Mitsubishi) übertragen kann? Es soll 
einfach so geschehen:
Bitmuster 1 -> Out1 high
Bitmuster 2 -> Out2 high

Wäre jeden sehr dankbar der mir dabei helfen könnte ;)

von Sascha Weitkunat (Gast)


Lesenswert?

Du willst also per PC dem MCU Daten (Bytes) senden auf die er dann 
reagieren soll?

Du meinst Bitmuster, aber im Endeffekt kommt es aufs selbe raus:

 MSB....LSB
  |      |
0b00001000 -> 0x08 -> 8
0b00011010 -> 0x1A -> 26
0b11111111 -> 0xFF -> 255

MSB ist das Most-Significant-Bit und LSB das Least-Segnificant-Bit. Du 
siehst, ein Bitmuster ist nichts anderes als eine Zahl im Dualsystem 
welche sich problemlos in andere Zahlensysteme übersetzen lässt.

Nun sendest du per PC (Terminalprogramm z.B.) die Zahl 26 welche dem 
Bitmuster 00011010 entspricht. Der MC muss das Recieve-Register des UART 
auslesen und mit den Vorgaben vergleichen:

if (ucRegisterinhalt == 26)
{
  // Bitmuster 00011010 empfangen
}

if (ucRegisterinhalt == 255)
{
  // Bitmuster 11111111 empfangen
}

Usw.. Es ist natürlich nicht unbedingt angebracht einzellne 
IF-Statements zu basteln.
Wenn das Bitmuster länger als 8 Bit sein soll gibt es Probleme da das 
UART im normalmodus eben nur 8 Datenbits (ein Byte) übertragen kann. Man 
könnte nun zwei Bits senden welche der MC vor dem vergleichen puffert 
und zusammensetzt... Aber das ist jetzt sehr fiktiv da ich keineswegs 
weiss was du überhaupt anstellen willst.

von Sascha Weitkunat (Gast)


Lesenswert?

Kleiner Formatierungsfehler! Der | unter LSB soll natürlich auch auf das 
letzte Bit in der Kette zeigen...

von Christian (Gast)


Lesenswert?

Vielen Dank Sascha, ich werde es gleich weiter ausprobieren. Erste 
Ergebnisse (?) kann ich dir wohl heute mittag oder nachmittag berichten 
;)
Also ich muss zuerst ein c++ Programm schreiben, dessen Datenbank 
abgefragt werden kann und dieser Artikel dann als Bitmuster zur MCU 
übertragen werden soll. Jedes Bitmuster soll dann für jeden Artikel (ca. 
50) eine Anzeige im Lager aktivieren.
Falls du und andere mir noch weiter Tipps geben könnten, ich wäre 
dankbar =)

von Christian (Gast)


Lesenswert?

sooo, da bin ich wieder

also die c++ umsetzung und sachen habe ich glaube mittlerweile soweit in 
etwa.
nun meine frage zu der programmierung des m16c. ich kann mir leider 
absolut nicht richtig vorstellen wie ich da vorgehen soll?
Wie kann ich aus dem Recieve Register daten auslesen? Wie kann ich bei 
dem m16c die UART initialisieren, so dass er dann die Bits empfängt vom 
PC diese Auswertet (evtl. mit dem PC vergleicht ob das Empfangene auch 
richtig ist) und dann anschließend Ausgibt?
Ihr wäre über jegliche Hilfe, Beispielcodes oder Tutorials wirklich sehr 
dankbar. Habe nämlich soweit keine Erfahrung mit so etwas bis jetzt und 
muss diese Woche unbedingt weiter kommen in dem Punkt :(

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.