FS20 Protokoll mit PIC senden

Begonnen von kleindi, 02 Dezember 2014, 23:23:25

Vorheriges Thema - Nächstes Thema

kleindi

Hallo Zusammen,

ich habe schon das eine oder andere in meinem Haus automatisiert. Bei mir sind Homematic, FS20, FHT, Intertechno, Wut, Simocode. u.a bereits erfolgreich im Einsatz. Gerade die Intertechno für die Weihnachtbeleuchtung ist durch viele Informationen aus diesem Forum entstanden. Nun möchte ich mir einen FS20 Funkschalter mit 4 Taster selber programmieren. Das liegt daran, das ich vor einiger Zeit einige Kopp Free Control im Busch und Jäger Design erhaschen konnte. Diese sind wohl aus eine fehlerhaften Charge.

Aufgebaut sind diese mit ein Microcontroller, der Pinkompatibel zum Microchip 16f87/88 ist. Die vier Taster gehen jeweils auf einen Eingang. Ein Ausgang schaltet die Status LED und ein Ausgang schaltet den 868,3MHz Sender ein und aus.

Daher nun meine Idee, dies mit einem eigenen 16f88 zu bestücken und diesem das FS20 Protokoll beizubringen.

Dazu habe einen PIC mit einem RC Oszillator ausgestattet, der wie der Kopp dann mit 480kHz getaktet wird. Ich habe dann zwei Wartefunktionen (400µs/600µs) programmiert und mit einem Frequenzzähler und Oszilloskop kontrolliert.

wait400
movlw D'14'
movwf loops
loop400 decfsz loops,1
goto loop400
nop
retlw 0

wait600
movlw D'22'
movwf loops
loop600 decfsz loops,1
goto loop600

Daraus habe ich mir die Funktionen Sende_1 und Sende_0 gebaut:

Send_1
bsf PORTB,0
call wait600 ; Wartezeit
bcf PORTB,0
call wait600 ; Wartezeit
retlw     0
Send_0
bsf PORTB,0
call wait400 ; Wartezeit
bcf PORTB,0
call wait400 ; Wartezeit
retlw     0


Den Sender habe ich mit einem Spektrumanalyzer geprüft. Er sendet sehr exakt und ist mit der genutzten Bandbreite absolut mir einer anderen FS20 Fernbedienung zu vergleichen.

Danach habe ich Siegessicher ein komplettes Telegramm aus dem Internet gesendet und ging davon aus, das ich das Signal auf dem CUNO sehen kann. Leider ist nichts zu sehen. Egal ob X21,X67 oder X77.

Hier das Telegramm (aus dem Roboternetz)
HC:54-19 ADR:0 ARG:166 ARG:0 CRC:251 (Bits:67 Bytes:7 End:3696)
0000000000001001101100000100111000000000101001100000000000111110111

An PortB,1 ist eine Status LED gegen +5V geschaltet und die wait5000 ist eine Warteschleife von 5s. Damit dieses Telegramm alle 5s gesendet wird.

und hier der Code:


Loop
bcf PORTB,1
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_1
call Send_0
call Send_0
call Send_1
call Send_1
call Send_0
call Send_1
call Send_1
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_1
call Send_0
call Send_0
call Send_1
call Send_1
call Send_1
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_1
call Send_0
call Send_1
call Send_0
call Send_0
call Send_1
call Send_1
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_0
call Send_1
call Send_1
call Send_1
call Send_1
call Send_1
call Send_0
call Send_1
call Send_1
call Send_1
bsf PORTB,1
call wait5000 ; Wartezeit

goto Loop


Kann mir jemand von euch auf die Sprünge helfen, was schief geht?
Danke und Gruß,
Dietmar


kleindi

Hat sich erledigt.
Kleine Modifikation am Sender und schon ging es.  :)