Forum: Mikrocontroller und Digitale Elektronik AVR mega8 und RC5 an RS232


von Lasse Beyer (Gast)


Angehängte Dateien:

Lesenswert?

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

von Flo (Gast)


Lesenswert?

Hmmm
1
.def  timerH  =R16
16 soll wohl 18 sein ...

funktioniert denn der Orginal Code bei dir?

von Lasse Beyer (Gast)


Lesenswert?

Das Register war wohl nicht schuld. Funktioniert immer noch nicht.

Den Originalcode habe ich so nicht ausprobiert. Bin eigentlich davon 
ausgegangen, dass der funktioniert, wenn schon ATMEL drin steht. Das 
Datenblatt zweifel' ich schließlich auch nicht an, die werden schon 
wissen was die entwickelt haben (...).

Naja. Dann werde ich den Kram mal schritt für Schritt durchgehen müssen 
und das Rad neu erfinden :(.

Trotzdem danke!

von Flo (Gast)


Lesenswert?

Nein, ich danke dir. Wie der Zufall es will hab ich gestern auch mit dem 
orginal Code gespielt. Aber nicht zum laufen bekommen (sind meine erste 
Gehversuche mit asm) weil ich nicht wusste wie ich ihn portieren muss. 
Dank deiner Portierung funktioniert der einwandfrei :)

von Florian .. (flori)


Lesenswert?

Ach ja, noch ein Link:
http://vamposdecampos.googlepages.com/infrahid.html

Nicht genau das was du willst, abre vielleicht hilfts ja.

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
Noch kein Account? Hier anmelden.