Forum: Mikrocontroller und Digitale Elektronik UART mit C8051F410


von Bastler (Gast)


Angehängte Dateien:

Lesenswert?

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.

von THaala (Gast)


Lesenswert?

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 !?

von Jim M. (turboj)


Lesenswert?

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.

von THaala (Gast)


Lesenswert?

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ß

von Bernhard S. (b_spitzer)


Lesenswert?

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
Noch kein Account? Hier anmelden.