Hallo zusammen. Ich lerne gerade für meine Mikrocontroller-Prüfung und hänge bei einer Sache fest. Initialisierung vom USART: Aus meinen Unterlagen werde ich leider nicht ganz schlau. Die Berechnung von UBRR und das richtige setzten der Bits im Register ist ja kein Problem aber wie bringe ich den UBRR(Teilungsfaktor) im Programm unter. Da gibt's ja UBRRH und UBRRL, also high und low weils ein 16bit Register ist. Aber wie könnte die Zuweisung eines Wertes im Programm aussehen? Angenommen UBRR währe 5000, wie würde die entsprechende Zeile im Programm aussehen? Ich hoffe jemand erbarmt sich und nimmt sich die Zeit mir zu helfen.
rmu schrieb: > UBRRH=19; UBRRL = 136; währe noch hilfreich zu erfahren wie du auf die Zahlen kommst.
Schüler schrieb: > rmu schrieb: >> UBRRH=19; UBRRL = 136; > > währe noch hilfreich zu erfahren wie du auf die Zahlen kommst. das sind einfach die oberen und unteren 8 bit von 5000. 5000 = 0001001110001000|2. 00010011|2 = 19, 10001000|2 = 136.
Joe S. schrieb: > UBRR = (uint16_t)5000; Währe es dann so auch richtig?? UBRRH=(uint16_t)5000>>8; UBRRL=(uint16_t)5000;
Schüler schrieb: > Joe S. schrieb: >> UBRR = (uint16_t)5000; > > Währe es dann so auch richtig?? > > UBRRH=(uint16_t)5000>>8; > UBRRL=(uint16_t)5000; besser so:
1 | uint16_t ubrr = 5000; |
2 | UBRRH = (unsigned char)(ubrr>>8); |
3 | UBRRL = (unsigned char)ubrr; |
:
Bearbeitet durch User
Schon mal besten Dank für die Hilfe. Nur noch eine Frage: Wieso jetzt unsigned char?
Schüler schrieb: > Schon mal besten Dank für die Hilfe. Nur noch eine Frage: Wieso jetzt > unsigned char? Weil es von 0 bis 255 geht. Oder uint8_t.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.