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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.