Understanding: DALI uses Async data decoding using 1 start bit and 2 stop bits. The 1 start bit is logical one (1), also encoded during Manchester encoding and the 2 stop bits(Signal is HIGH for long periods, at least 2*833us) designate the idle_signal.
Now, if I am decoding this data using the measured pulse width method or sampling method, I will not have a closing interrupt for last bit "1"!! I am specifically using pulse-width method decoding for Manchester decoding.
I can solve this problem by checking the LSB bit during Manchester encoding. If LSB is 1, I will include a short reset-set signal at the end. I will make sure that I will ignore the rest of the data after I have received my required frame. Anyway, this short reset-set signal will not fall in my long or short range and I can also stop my timer to respond to any other interrupt after the required frame is received!
- Is it valid according to DALI standard?? What could go wrong with my approach?
- In general, which method is used for DALI standard? Sampling-based or pulse-width based??
- The lack of preamble, does it cause any problems?
Thanks in advance!
- I am not sure of the terminology "Asynch data decoding", what I meant is that there is no preamble data involved giving the decoder enough time to sync!
- Sampling-based [page 7], pulse-width based [page 6] methods are described in this app-note.
- Image from this source.
EDIT: My logic of Manchester_Decoding is here.
Yeah! It is a clear misunderstanding, as soon as I put the logic on Paper, I got it figured! I was thinking how the last pulse will end if the SIGNAL is high for longer times but as we can see from the figure the last 1 will be decoded before itself.
Still, I wish to know about the general implementation standard for DALI and problems caused by lack of preamble data in DALI context.