89S8252 UART

Gast #235118
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
#235119
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
Gast #235120
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...
Gast #235123
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..

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren