Hi Leute Ich bin neu hier und habe ein dringendes Problem. Ich versuche die UART Slave Schnittstelle an meinem C8051F410 von Silicon Laboratories zum laufen zu bringen. Da ich aber bis jetzt nur einmal was mit SPI gemacht habe, habe ich keine Ahnung wie ich das hinkriege. Die Signale sind immer 8bit lang und haben zusätzlich ein Start und ein Stopbit also eigentlich 10bits. Dem Datenblatt habe ich entnommen, dass die Signale über die Crossbar ins Input shift register und von dort ins SBUF Register kommen. Allerdings schaff ichs nicht die da raus zu holen. Deshalb wär ich froh wenn mir jmd sagen könnte wo und wie ich die Daten abholen kann. Ich nehm mal an, dass meine Frage extrem dumm ist zumal der Controller noch acht andere register an der UART schnittstelle besitzt, aber ich hoffe ihr könnt mir trotzdem helfen. PS: ich hab euch einen Ausschnitt aus dem Datenblatt zur UART Schnittstelle angehängt. Danke im Voraus für die Antworten.
Der UART beim 8051/8031 funtioniert immer gleich. Sorge für eine Taktung, setze etwas in dein SBUF - Register und es wird rausgeschoben. Was Du über die Crossbar sagst dreht sich rein um die Pins zur Außenwelt, die must du vorher definieren, damit dein TX-Pin auch wackelt -:) Was meinst Du in dem Zusammenhang mit SPI ? SPI spielt doch hier gar keine Rolle !?
Bastler schrieb: > Allerdings schaff ichs nicht die da raus zu holen. Wie versuchst Du es denn? Schaltplan + Sourcecode würden hier helfen. Für die Crossbar gibt es das Config2 Tool.
P.S. hab übersehen das Du eigentlich was empfangen willst. Ich würde trotzdem vorschlagen erst mal was zu senden. (ist einfacher, Du kannst prüfen ob dein Portpin wackelt). Du kannst außerdem die Baudrate abschätzen mit der das Byte gesendet wird. Zum Empfangen braucht es etwas mehr, hier muß REN gesetzt sein und die Baudrate muss soweit stimmen, das die 10 Bit korrekt erkannt werden! Gruß
Der Empfang wir mit gesetztem RI-Flag angezeigt. Also:
1 | char Zeichen; |
2 | init_seriell(); |
3 | ...
|
4 | if (RI==1) |
5 | { // jetzt ist was in SBUF |
6 | Zeichen = SBUF; |
7 | RI = 0; // Flag wieder löschen |
8 | }
|
Wenn die serielle Schnittstelle korrekt konfiguriert ist, kann man auch einfach mit printf("Text") und gtechar()/putchar() arbeiten.
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.