-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
the ,,mode" byte & eeprom use #3
Comments
New kind of message, with MOD=4, it activates a double-color short flash : a very short Color1 lightning immediately followed by a short Color2 lightning : |
It seems that "mode" is only on the 4 lower bits of byte 1. Setting the 2 higher bits of first byte has apparently no effect. |
mode bit1 = play from memory |
Interresting : in mode=2, reaction time (from end of message transmission to first change on LED outputs) is much faster (<0.6ms) compared to mode=0 (about 8ms when no attack ramp). |
Mode = 0x10 => same as mode 0x00 but with a "no-repeat". If the exactly same message is received a second time, it is ignored. |
Mode = 0x11 = "LOOP" => same as mode 0x00 but effect is automatically repeated until next command |
mode = 0x12 => same as 0x02 with the no-repeat feature |
As a summary :
|
in my case the speed in mode=4 is the same like the packets are send. (40ms) |
ah, I understand what you mean with loop: |
Yes, when "loop" is activated, playing continues. In case of EEPROM, each successive memory position is played up to END and then it restarts from START. |
No able to activate a "double flash" + "loop" mode... |
I think double flash needs the timing of the data-input to switch between the two colors loop mode doesn't need that data in, so loop would not work with double flash. |
loop-Mode is a permanent mode: when activated it stays active even when power is cycled. when a new message arrives eeprom 0x04 is written back to 0x00
mem mode has special byte-order: byte 1.0 = start.0 byte 1.4 = end.4 some values of mode do not give a valid checksum... maybe the message length is longer or shorter for that modes. |
Something is hapening with MOD = 0x0f, a flash is emitted with : |
the first message is reading @0x01 ( value 0x00) and @0x08 (0x01) the second message does not use the eeprom. It displays magenta which would be the normal mode0 behavior (except it is another mode) |
Exploring the mode=0x0F, the byte 6 seems to specify a kind of sub-mode :
|
ok, mode 0x0f is eeprom-write-mode: message = 0x0f,green, red, blue, memLocation, Sub-mode?, group it shows the simplicity of internal checksum generation and that the values are internal shifted left by 2 |
each batch has 8 group memories which can be predefined and switched easy during the show. to write Master Group (tell the batch witch memory is active) a write operation to eeprom byte 0x01 has to be done: after success the group-value from corresponding eeprom-register is read back and set. the color-information is only to show success: it is activated after all write and read operations are done |
a few bytes eeprom are missing... (but some are read @startup) |
(wrong assumption removed...) |
aaaawwww... no. |
group is ... imagine you have 32 different wristband-,,fixtures" of crowd in a stadium, each block can have its own color or fx - so it is possible to let a rainbow cycle over all pixelgroups. |
Ok, got it. Thanks !
|
And by the way, I've found the missing 2 bits for the End location of EEPROM read, they replace the Random value :
|
Question : where is stored the background color set by mode F/0 with location=01???? ? The 4 bits of location address seem to be ignored... |
it is not stored... as there is no eeprom use with that command. and after power cycle the information is lost. I updated the readme yesterday evening. have a look at /readme.md and at /eeprom/readme.md |
updated readme and wiki |
yes, did some testing... no result for 0x02 for 0x03 I have no idea yet |
here the values of 0x03 are little different... 0bYYXXXXXX to adress 0x03 |
Mode 0x0f / submode 0x0f is also playing with the EEPROM |
it seems to be deleting all values @0x02 and 0x03 to zero |
wiki updated... |
have you found the missing bit in memory play mode?
|
library is updated with all store/recall/send stuff except the unknown bytes |
I did some extra testing using mode 0x13 and checking how this command is stored in EEPROM[0x50-0x57]:
What I finally found:
Other memory play modes (0x02 and 0x12) have most probably the same syntax, but it's more difficult to test as they are not stored in EEPROM[0x50-0x57]. |
I checked with a logic analyzer... group bit 5 is random on mine... ok, hold 7 does write the random byte ... special. does the eeprom 0x02 and 0x03 have some effect? |
Hi, |
byte 0x02 and 0x03 do not change anything here |
Most of all changes in PWM cycles happen every 16.2ms. The HOLD time is always multiple of 16.2ms. Let's name T this 16.2ms period :
|
Hi cra0 ! Welcome here ! |
Stored colors & checksumThe 16 colors are stored in the EEPROM starting at address 0x0010, each color uses 4 bytes:
What if the checksum is incorrect when a "read from EEPROM" command is received?
Note: if the wrong checksum is on the 16th storage location (0x004c), the MCU continues to read above address 0x0050 which is not intended to contain colors values.
|
I think they store something to be in 4 byte count. because 4 is more easy to handle and to calculate than 3 (shifting) they store value<<2 because I think the internal process is to receive the values, then convert it and then do something with it... the conversion is made in input function and not in output to save time. because of that the Attack hold release values are translated from 0-7 virtual values into real 0-255 byte values |
your pic is measuring on the wrong edge of pwm... it starts with rising edge so there is no fade, it is a jump. |
Yes, the PWM cycle starts with a HIGH and then a LOW, and the active state is LOW (LED is on). I cannot do this setting with my logic analyzer, I can only choose active LOW or HIGH and it considers always that the active level is first and inactive is second in the cycle. This doesn't change the duty % calculation except right at the time of the change. But if you look at few cycles before and a few cycles after the 16ms mark, there is a difference. |
OK, got your point. No real fade just a change of duty % on the rising edge. The intermediate value shown is fake, just created by the logic analyzer. |
Do you guys have a discord or IRC/IM to chat about this in real time. |
@cra0 remember... pi PICO has only 3.3V tolerant input pins... edit: link added |
@Serge-45 have a look at the manual of the transmitter there are some things to find: firmware readout... |
I searched for such a manual but was not able to find it. Great ! Yes, some more commands to discover. I think that this manual refers to some older revisions of the PIXMOB as some advanced features are not described (group settings, random, background color...). I'm not sure about the "impact mode", maybe the double flash mode ? |
impact mode is maybe for receivers that have an IMU attached. there are some with infrared which recognize a handclap. it is also possible to get the battery level or to set the timeout... hmm, eeprom 0x02 or 0x03 ? https://user-images.githubusercontent.com/6167947/208201576-fb3d5d79-1454-4e71-af5f-e3e55a69fb99.png |
eeprom 0x02 could be the timeout after data loss. it changes between 60 sec when set to 0 and 120 sec when set to 0xf0 impact mode is maybe what we call one-shot-mode |
found ... https://github.com/jamesw343/PixMob_IR/blob/master/docs/ir_protocol.md which are IR versions but share many...many similarities with the RF version |
when message arrives, eeprom is read. in my case
mode=0 --> normal operation
mode seems to be divided into bits:
bit0: unknown
bit1: is memory mode
memory mode:
byte 2 = 0xEESSSS (end end start start start start)
maybe the missing 2 End-bits are coded into mode itself
byte 3 = Attack + random
byte 4 = release + hold
byte 5 = unknown changing the value has no effect
byte 6 = same like byte 5
byte 7 = could be group
there are 16 memorys each containing 4 bytes from 0x10 to 0x4F
it is always played from start to end (if start is after end all 16 are played)
when you get mode 4 working, you could reverse the byte5 and byte7 table values - because its not group and random anymore
Originally posted by @sueppchen in #1 (comment)
The text was updated successfully, but these errors were encountered: