Hi Leute
also erst mal hab ich das Protokoll jetzt kapiert :o)
Befehl
0x01: Reset, keine Daten
0x02: Set Color, 3 Byte Daten: je kanal 1 Byte
0x03: Fade to color: 5 Byte Daten: 2Byte für den 16-bit Zeitwert (größer =
schneller) 1. Byte HByte 2. Byte. LByte des 16 bit Wertes, dann je Kanal 1
Byte
Leider habe ich keine Zeitinfo gefunden, also welcher Zeitwert welche
Geschwindikgeit bedeutet, laut Messung habe ich bei Helligkeitswechels
200-->0 mit Zeitwert hbyte 0 lbyte 100: 4 Sekunden.
Ein Problem:
Dann noch ein kleines Aufpassen aufgrund der RS485 Adressabfrage, das mir
gestern aufgefallen ist, als ich schon mal 2 Lichter an den Bus gehängt habe
und nicht im Broadcast gearbeitet habe:
Erst mal der relevante Programmabschnitt (fnordlicht.c)
---snip---
if (UCSR0A & _BV(MPCM0) || address) { /* if MPCM mode is still
active, or ninth bit set, this is an address packet */
/* check if we are ment */
if (data == 0 || data == RS485_ADDRESS) {
/* remove MPCM flag and reset buffer fill counter */
UCSR0A &= ~_BV(MPCM0);
fill = 0;
continue;
} else {/* turn on MPCM */
UCSR0A |= _BV(MPCM0);
continue;
}
}
---snap---
Also MCPM aktiv oder 9tes bit gesetzt
* Ja: Überprüfen, ob ich gemeint bin.
** Ja: MCPM aus und weiter --> Alles in ordnung, Befehlsausführung
** Nein MCP an und weiter --> hier hakt es, wenn das nächste Paket kommt,
dass die Daten ja für eine andere Adresse enthält
Die Schleife von neuem (war ja vorhin nicht meine Adresse)
MCPM aktiv oder 9tes bit: 9tes Bit nein, aber MCPM aktiv: also Adresse
prüfen: haben die Daten meine Adresse, geh ich in die Befehlsausführung
rein, obwohl das Daten-Paket nicht für mich gedacht ist. (das vorherige
Adress-Paket war ja nicht für mich), naja interessante Lichteffekte.
*Grumel* mal was überlegen...
Muss man eigentlich auf MCPM-Mode _prüfen_, denn Adressen sind ja gerade
über das 9te bit definiert...?
Eine dirty Lösung wäre dafür zu sorgen, dass keine Adresse in einem
Datenpaket vorkommt.
Also Adresse != 0x01 0x02 0x03 (Das sind ja die Befehle)
und entsprechend Datenwerte != der gewählten Adressen.
Naja *Würg* :o(
Viele Grüße,
Chris