hallo, hallo juhu, habe die UART-kommunikation (einseitig TX) mit dem ATmega168 in .asm gebastelt. Erste Versuche mit nem Terminalprogramm ergaben: Ursprungstext: Joerg draus geworden: ...Mé+r¦... bzw. ...233 43 114 166 77... Was ist da los?
Aus der Reihe "Passende Kommentare" ;-)
1 | ldi temp, LOW(UBRRVAL) ; Highbyte: 0x00 |
2 | sts UBRR0L, temp ; im Register setzen |
3 | ldi temp, HIGH(UBRRVAL) ; Lowbyte: 0x2F |
4 | sts UBRR0H, temp ; im Register setzen |
Ich habe nicht geprüft, ob das das Problem ist.
Hallo Joerg, Interessant wäre in diesem Zusammenhang zu wissen, was Du senden willst (Originalnachricht). Es scheint ja erstmal was zu passieren, das ist nicht schlecht. Wie sendest Du die Daten an den PC? Mittels MAX232 oder ähnlichem? MfG Thomas
sende über max232 und hab grad mal mit dem oszi gemessen, dass die bitlänge 0,09868ms beträgt. Resultierende BAUD: 10134, also timingproblem. habe ein 7.3728MHz Quarz und dieses auch in den fusebits eingestellt.
@joerg_seemann >sende über max232 und hab grad mal mit dem oszi gemessen, dass die >bitlänge 0,09868ms beträgt. Resultierende BAUD: 10134, also >timingproblem. >habe ein 7.3728MHz Quarz und dieses auch in den fusebits eingestellt. >trotzdem geht´s nich... Waaaaas? Soooo ein toller Baudratenquarz und der UART geht trotzdem nicht? Kaum zu glauben!!!! Ok, das musst jetzt raus, war nicht persönlich gemeint. Aber wieso verwendest du immer STS um die Konfigurationsregister zu schreiben? Die Registernamen sind für die Verwendung von IN/OUT ausgelegt. Ausserdem ist der Befehl STS 2 Worte lang, OUT nur einen. Das da überhaupt was zuckt wundert mich sowieso. MfG Falk
ich behaupte:
1 | ldi temp, 0x03 ; Asynchron, Paritätsbit N, Datenlänge 8Bit, Stopbit 1 | |
2 | sts UCSR0C, temp |
ist falsch (ok, war unfair, ich hab im Datenblatt nachgeschaut, d.h. ich weiß, dass das falsch ist) -> du stellst auf 6 datenbits und UCPOL0 gesetzt
1 | ldi temp, 1<<UCSZ1 | 1<<UCSZ0 |
2 | ... |
geht wahrscheinlich @Falk: st(s) ld(s) sind bei den megax8ern nötig, die USART regs liegen außerhalb der 64 I/Os :(
Ich bedanke mich und bitte um nachsicht, bin erst seit knapp 14 tagen mit AVR und ASM beschäfftigt... nen perfekten tag wünsch ich...
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.