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
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
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...
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 :-((
>Gibt es das BDRCON Register beim 89S8252 >wirklich nicht? Nein . Bei UART-Problemen hilft : http://wwwiti.cs.uni-magdeburg.de/~buchmann/privat/generator.htm
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.