Forum: Mikrocontroller und Digitale Elektronik 89S8252 UART


von Tabaluga (Gast)


Lesenswert?

Hallo zusammen!

Ich bin hier langsam am verzweifeln. Den ganzen Tag schon versuche ich
den UART am 89S8252 zum laufen zu bringen aber es klappt einfach nicht.
Ich will im Modus 2, also interner Baudratengenerator, Bytes ans
Hyperterminal versenden. Wenn das klappt auch welche empfangen. Ich
habe leider keinen der 3 Timer mehr frei und will desswegen auf den
Generator zurück greifen.
Der Code sieht folgendermaßen aus:

    SM0 = 0;
    SM1 = 1;
    SM2 = 0;
    REN = 0;    // empfang aus
    TI = 0;     // reset-Wert
    RI = 0;     // reset-Wert
    TB8 = 0;    // 9. Bit

    // PCON so lassen (SMOD = 0 -> 4800 Baud)

    ES = 1; // Serielle Schnittstelle darf IRQ aufrufen
    SBUF = 65;

Interrupt Routiene habe ich auch...

Wenn ich mit dem Oszi messe, sendet er die Bits ungefähr im
Sekundentakt, was sicher nicht 4800 Baud entsprechen. In den
allgemeinen Datenblättern von Atmel ist die Rede von einem BDRCON
Register, dass es aber anscheinend hier nicht gibt?!?

Kann mir jemand weiterhelfen?

Tabi

von Peter D. (peda)


Lesenswert?

Wenn Du nichts weiter einstellst, ist T1 der Baudratengenerator.

Im T2MOD kannst Du wahlweise fürs Senden und/oder Empfangen T2
auswählen.


Was machst Du denn mit den Timern, damit sie nicht ausreichen ?

In der Regel kommt man doch für alles Zeitabhängige mit einem Timer
aus. Nur als Frequenzzähler oder PWM braucht man extra welche.

Du kannst aber auch 4 Timer bilden, indem Du T0 aufteilst (Mode 3).
Sind dann zwar nur 8-bittig, aber man kann sie ja im Interrupthandler
erweitern.


Peter

von Tabaluga (Gast)


Lesenswert?

Die Timer brauche ich, da der Controller mehrere Sachen gleichzeitig
machen soll. Z.B. wird auf eine Tastatureingabe gewartet und
gleichzeitig soll währen des gesamten Programmablaufs eine Überwachung
mehrerer Pins stattfinden. Das geht doch nur über Timer oder hast du ne
bessere Idee? Ich bin für alles offen.
Kaum hab ich das abgeschickt, fiel mir auf, dass ich SM0 und SM1
vertauscht hab kopf gegen die Wand schlag
Also es kommt was raus, aber irgendwie stimmt die Baudrate noch nicht.
Ich muss mal weiter gucken...

von Tabaluga (Gast)


Lesenswert?

Weiß da noch jemand was zu? Gibt es das BDRCON Register beim 89S8252
wirklich nicht? Ich habe hier eine Baudrate von ungefähr 167000 Baud
und weiß nicht warum :-((

von buz11 (Gast)


Lesenswert?

>Gibt es das BDRCON Register beim 89S8252
>wirklich nicht?

Nein .

Bei UART-Problemen hilft :
http://wwwiti.cs.uni-magdeburg.de/~buchmann/privat/generator.htm

von Tabaluga (Gast)


Lesenswert?

Also kann ich im Modus 2 mit einem 12 MHz Quart nur eine feste Baudrate
von 187500 Baud oder eben das Doppelte davon erzeugen?
Weil ich immer gelesen habe, dass da eine Feste Baudrate von 4800 oder
9600 Baud raus kommen soll..

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.