
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Eigentlich wollte ich ausprobieren, ob sich mit RC5 über einzelne Steuercodes hinaus auch "längere" Bytesequenzen übertragen lassen, welche Übertragungsrate man erreichen kann ... Ich teste auf einer c-control 2 OS 2.01. Die erste Problem zeigt sich beim Senden. In einer gestaffelten for .. next .. step Schleife arbeitet die innere Schleife fehlerhaft, sobald die Schrittweite > 1 gewählt wird. Das Problem ist am nachfolgenden Programm dargestellt: '------------------------------------------------ ' Testprogramm für RC5-Datenübertragung define i byte[1] define j byte[2] i = 0 j = 0 ' Auskommentiert zur Ausgabe auf COM1: ' print"#ON_IR#"; FOR i = 0 to 127 step 1 FOR j = 0 to 63 step 1 ' FOR j = 0 to 63 step 2 ' mit step 1 funktioniert die innere Schleife, aber ... ' bei Schrittweite von z.B. 2 wird ' die innere Schleife nicht mehr verlassen und es wird ' bis 255 hochgezählt (obwohl bei 63 Schluss sein sollte)! ' Auskommentiert zur Ausgabe auf COM: 'put i 'put j ' Ausgabe auf COM: Print i, j pause 2 NEXT NEXT Als weiteres Problem stellt sich heraus, dass die Unit immer wieder den Code "255" als Adresse und gelegentlich auch als Kommando empfängt, obwohl die parallel horchende "alte" c-control und die micro die richtigen Zeichen empfangen (allerdings in geringerer Geschwindigkeit). Auch beim Senden mit einer normalen Fernbedienung tauchen diese Fehler auf. Nachfolgend das auf dem Empfänger laufende Programm: '---------------------------------------------------------------------- ' Testprogramm für den Empfang von RC5-Codes und Anzeige auf LCD 2 x 20 define TOG bit[1] define ADDR byte[2] define CMD byte[3] define counter1 byte[4] define counter2 byte[5] define ADDR2 byte[6] define CMD2 byte[7] define counter3 byte[8] counter1 = 0 counter2 = 0 counter3 = 0 addr2 = 0 cmd2 = 0 print"#ON_LCD#"; print"#INIT#"; ' Ausgabe der feststehenden Textmaske print"#L101#"; 'CURSOR AUF ZEILE 1 POS 1 print"ADR ... CMD .. : ..."; 'TEXTAUSGABE print"#L201#"; 'CURSOR AUF ZEILE 2 POS 1 print"ADR ... CMD .. : ..."; 'TEXTAUSGABE print"#OFF#"; '----------------------------------------------------- #LOOP '-- UMLEITUNG DER PRINT-FUNKTION AUF DAS IR-MODULE---- print"#ON_IR#"; '---------- IR MODULE DATEN ABFRAGEN ------------------ get ADDR get CMD '------- ABFRAGE OB DATEN EMPFANGEN WURDEN ------------ if (ADDR and CMD)=&HFF then goto loop else gosub SHOWDATA ' eigentlich überflüssig ... goto LOOP '----------------------------------------------------- '----------------------------------------------------- #SHOWDATA ' Bit 6 maskieren TOG = ADDR and &b00100000 ' Adresse maskieren ADDR = ADDR and &b00011111 ' Kommando maskieren CMD = CMD and &b00111111 ' Zähler für Anzahl der empfangenen Sendungen erhöhen counter1 = counter1 + 1 '--------- UMLEITUNG AUF DAS IR-MODULE ABSCHALTEN ----- print"#OFF#"; '--------- UMLEITUNG AUF DAS LCD MODULE EINSCHALTEN --- print"#ON_LCD#"; '---------- EMPFANGENE DATEN FORMATIERT AUSGEBEN ------ print"#L105#"; 'CURSOR AUF ZEILE 1 POS 5 IF (ADDR < 10 and ADDR < 100) Then print " "; IF (ADDR < 100 and ADDR > 9) Then print " "; print ADDR; 'ADRESSE AUSGEBEN print"#L113#"; 'CURSOR AUF ZEILE 1 POS 13 IF CMD < 10 Then print " "; print CMD; print"#L118#"; 'CURSOR AUF ZEILE 1 POS 18 IF (counter1 < 10 and counter1 < 100) Then print " "; IF (counter1 < 100 and counter1 > 9) Then print " "; print counter1 print"#L205#"; 'CURSOR AUF ZEILE 2 POS 5 IF (ADDR2 < 10 and ADDR2 < 100) Then print " "; IF (ADDR2 < 100 and ADDR2 > 9) Then print " "; print ADDR2; 'ADRESSE AUSGEBEN print"#L213#"; 'CURSOR AUF ZEILE 2 POS 13 IF CMD2 < 10 Then print " "; print CMD2; print"#L218#"; 'CURSOR AUF ZEILE 2 POS 18 IF (counter3 < 10 and counter3 < 100) Then print " "; IF (counter3 < 100 and counter3 > 9) Then print " "; print counter3 addr2 = addr cmd2 = cmd counter3 = counter1 '-------- UMLEITUNG AUF DAS IR-MODULE ABSCHALTEN ------ print"#OFF#"; ' pause 1 return Hat dazu jemand irgendwelche Erkenntnisse ? Wer macht die Fehler, ich oder das OS ? |
| Antwort schreiben |