Forum: Mikrocontroller und Digitale Elektronik RC5 unsauber Übertragung?


von Michael O. (michi26206)


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

von Peter D. (peda)


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

von Michael O. (michi26206)


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.

von Helge W. (hwaltr01)


Lesenswert?

Hallo

welchen IR Empfänger nutzt du?

setze mal so dicht wie möglich 4,7µF an die Spannungsversorgung der IR 
Diode

ich hatte da auch mal Stress, dass die Fernbedinung nicht richtig 
erkannt wurde. War en Hardwareproblem.

Helge

von Michael O. (michi26206)


Lesenswert?

Hi,

ich hab den TSOP 1136.

Kondensator ist schon vorhanden. Ich verwende im moment das Atmel 
Addon-Board v 1.0 da ist ein 47 µF zwischen Vs und GND.

am Getrc5 kanns aber auch nicht liegen, habe gerade das gefunden:

http://www.ledstyles.de/ftopic1760.html

Das wir hier auch verwendet.

Ich werde mir morgen das ganze wahrscheinlich mal in C anschaun.

Gruß Michi26206

von Peter D. (peda)


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

von roffez (Gast)


Lesenswert?

Bei mir hats erst funktioniert mit einem Tiefpass 100R + (10u||100n) in 
der Spannungsversorgung, steht auch so im Datenblatt vom SFH5110.

von Michael O. (michi26206)


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ß

von Helge W. (hwaltr01)


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]

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.