RC5 unsauber Übertragung?

OP #1331505
Lesenswert?

Hi,

ich hab ein kleines Problem. Und zwar spiele ich im moment mit RC5.

Hier mal mein Bascomcode:
1
Do
2

3
 Getrc5(address , command)
4
 If Address = 0 Then
5
    command = command And &B10111111
6
    Locate 2 , 1
7
    Lcd "Adr:" ; Address ; "  Cmd:" ; command ; "  "
8
    If command = 12 Then
9
       Toggle Portc.1
10
 End If
11

12
Loop

Geht auch soweit wunderbar, nur habe ich manchmal das Problem das ein 
anderer Code an kommt, als wie der Code der Taste die ich gedrückt habe.

Was ist die Ursache dafür, und wie kann ich es beheben?
Ich habe 2 Fernbedienungen, welche im alltags Gebrauch zuverlässig 
arbeiten, bei beiden leigt das gleiche Problem vor.

Gruß Michi262
#1331517
Lesenswert?

Michael O. schrieb:
> Geht auch soweit wunderbar, nur habe ich manchmal das Problem das ein
> anderer Code an kommt, als wie der Code der Taste die ich gedrückt habe.

Die Bascom-Programmiere sind auch nur Menschen. Könnte ein Fehler in der 
Getrc5() sein.
Guck mal, obs irgendwo den Quelltext der Getrc5() gibt oder ne andere 
Getrc5().

Hast Du dem Bascom auch den richtigen Takt Deines AVR angegeben?


> wie kann ich es beheben?

Wenn Dein Takt stimmt, das Getrc5() selber schreiben.

In der Codesammlung gibts ein Beispiel, was sehr fehlertolerant ist. 
Dazu müßtest Du allerdings C können.


Peter
OP #1331519
Lesenswert?

Peter Dannegger schrieb:
> Michael O. schrieb:
>> Geht auch soweit wunderbar, nur habe ich manchmal das Problem das ein
>> anderer Code an kommt, als wie der Code der Taste die ich gedrückt habe.
>
> Die Bascom-Programmiere sind auch nur Menschen. Könnte ein Fehler in der
> Getrc5() sein.
> Guck mal, obs irgendwo den Quelltext der Getrc5() gibt oder ne andere
> Getrc5().
>
> Hast Du dem Bascom auch den richtigen Takt Deines AVR angegeben?
>

ok. kann sein. da ich keinen externes Quarz habe, habe ich nichts 
angegeben. (wurde mir so gesagt)

>
> Wenn Dein Takt stimmt, das Getrc5() selber schreiben.
>
> In der Codesammlung gibts ein Beispiel, was sehr fehlertolerant ist.
> Dazu müßtest Du allerdings C können.
>
>
> Peter

Ich kann etwas C aber bis jetzt habe ich noch nichts für uC gemacht.
Evtl. soltle ich doch mal damit anfgangen ;) Ma schaun, evtl. kann ich 
ja was daraus verwenden.
#1331624
Lesenswert?

Michael O. schrieb:
> ok. kann sein. da ich keinen externes Quarz habe, habe ich nichts
> angegeben. (wurde mir so gesagt)

Die feine Art ist das aber nicht.

Vermutlich steht Dein AVR noch auf fabrikneu, also 1MHz und Bascom nimmt 
1MHz an.

Es kann aber nichts schaden, wenn Du mal den AVR auf 4 oder 8MHz setzt 
(CLKPR-Register).


Peter
OP #1331644
Lesenswert?

Peter Dannegger schrieb:
> Michael O. schrieb:
>> ok. kann sein. da ich keinen externes Quarz habe, habe ich nichts
>> angegeben. (wurde mir so gesagt)
>
> Die feine Art ist das aber nicht.
>
> Vermutlich steht Dein AVR noch auf fabrikneu, also 1MHz und Bascom nimmt
> 1MHz an.
>
> Es kann aber nichts schaden, wenn Du mal den AVR auf 4 oder 8MHz setzt
> (CLKPR-Register).
>
>
> Peter

könntest du mir sagen wei das geht? Habe das noch nicht gemacht.

Oder muss ich dann nur
1
$crystal = 8000000
 angeben?

Gruß
#1331898
Lesenswert?

probiere es in C aus, aber es bleibt ein Hardwareproblem...

Ich hatte alle möglichen Probleme als ich 4,7µF auf der Platine hatte, 
und dann nur 4cm Kabel zur IR Diode.

Setze mal einen 4,7µF direkt an die IR Diode von Vs nach GND Parallel 
dazu noch einen 22nF auch von Vs auf GND zum Schluss noch einen pull-up 
Widerstand 22k Ohm von Vs auf Out

Wichtig DIREKT an der IR Diode
dann solte alles richtig erkannt werden.

Um den µC auf 8 MHz laufen zu lassen musst du das FuseBit setzen und
$crystal = 8000000
angeben

Stelle in Bascom in den Fuses das ein:
100100:Int. RC Osc. 8 MHz; Start-up time: 6 CK + 64 ms; [CKSEL=0100 
SUT=10]

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren