Moin!
Ich habe ein Problem mit einem kleinen Dongle das ich bauen möchte. Das
Teil soll im Prinzip nur die RC5-Codes von einer bestimmten
Fernbedienung empfangen und via RS232 an einen PC weiterleiten. Um's mir
einfach zu machen, habe ich das Projekt "avr410.asm" verwendet, weil das
ja schon ein fertiger RC5-Encoder in Assembler ist. Da wollte ich jetzt
lediglich noch den USART als Ausgabeschnittstelle installieren, aber das
klappt nicht so ganz wie ich es mir erhofft habe.
Habe erstmal nur gemessen, was am TxD-Pin rauskommt. Der ist in erster
Linie auf High-Pegel und macht in regelmäßigen Abständen (hab's nicht
genau gemessen) zwei kleine "Absacker". Wenn ich auf einer FB eine Taste
drücke, triggert der Oskar neu, aber es bleibt bei diesen 2 Low-Pegeln.
Hier mal die Code-Stelle die ich verändert habe, der Rest ist im Anhang.
1 | reset: ldi temp,low(RAMEND) ;Initialize stackpointer
|
2 | out SPL,temp
|
3 | ldi temp,high(RAMEND)
|
4 | out SPH,temp
|
5 |
|
6 | ldi temp,1 ;Timer/Counter 0 clocked at CK
|
7 | out TCCR0,temp
|
8 |
|
9 | ldi temp,1<<TOIE0 ;Enable Timer0 overflow interrupt
|
10 | out TIMSK,temp
|
11 |
|
12 | ;### Ab hier:
|
13 | ldi temp, high(12)
|
14 | out UBRRH, temp
|
15 | ldi temp, low(12)
|
16 | out UBRRL, temp
|
17 | ldi temp, 0b00001000
|
18 | out UCSRB, temp
|
19 | ;###
|
20 | sei ;Enable gobal interrupt
|
21 |
|
22 | main: rcall detect ;Call RC5 detect routine
|
23 |
|
24 | ;### Und hier:
|
25 | cpi system,SYS_ADDR ;Zum testen weggelassen!
|
26 | brne release
|
27 |
|
28 | andi command,0x3F ;Remove control bit
|
29 | transmit:
|
30 | sbis UCSRA, UDRE
|
31 | rjmp transmit
|
32 | out UDR, command
|
33 |
|
34 | ;###
|
35 |
|
36 | rjmp main
|
37 |
|
38 |
|
39 | release: clr command ;Clear PORTB
|
40 | rjmp main
|
Bei 4MHz Takt soll der USART auf 19,2k laufen. Die Fuse-Bits sitzen auch
alle richtig (CKSEL 1111, CKOPT 1, SUT 11 -> also nicht gesetzt).
Hoffe mir kann jemand helfen...
Vielen Dank schonmal,
Lasse