Hallo,
ich versuche gerade Software UART auf einem Atmega 32 zum laufen zu
bekommen.
Ich verwende den Code zur Appnote 305 von Atmel.
Dann rufe ich das ganze so auf:
1 | loop:
|
2 | ldi Txbyte,01 ;Clear terminal
|
3 | rcall putchar
|
4 | ldi Txbyte,0xAA ;Clear terminal
|
5 | rcall putchar
|
6 | ldi Txbyte,'T' ;Clear terminal
|
7 | rcall putchar
|
8 | ldi Txbyte,'E' ;Clear terminal
|
9 | rcall putchar
|
10 | ldi Txbyte,'S' ;Clear terminal
|
11 | rcall putchar
|
12 | ldi Txbyte,'T' ;Clear terminal
|
13 | rcall putchar
|
14 | ; =============================
|
15 | ; Warteschleifen-Generator
|
16 | ; 8000000 Zyklen:
|
17 | ; -----------------------------
|
18 | ; warte 7999992 Zyklen:
|
19 | ldi R17, $48
|
20 | WGLOOP000: ldi R18, $BC
|
21 | WGLOOP100: ldi R19, $C4
|
22 | WGLOOP200: dec R19
|
23 | brne WGLOOP200
|
24 | dec R18
|
25 | brne WGLOOP100
|
26 | dec R17
|
27 | brne WGLOOP000
|
28 | ; -----------------------------
|
29 | ; warte 6 Zyklen:
|
30 | ldi R17, $02
|
31 | WGLOOP300: dec R17
|
32 | brne WGLOOP300
|
33 | ; -----------------------------
|
34 | ; warte 2 Zyklen:
|
35 | nop
|
36 | nop
|
37 | ; =============================
|
38 | rjmp loop
|
Ich habe den b Wert des UART Codes auf 66 gestellt. Laut Appnote passt
das für 4 MHz und Baud 9600.
Allerdings wird so nur 6 mal Test gesendet. Jedoch sollte doch immer
weiter gesendet werden, oder? Wo liegt denn der Fehler?
Gruß Michael