Hello everyone. I am trying to make an AC dimmer. Upto now I had a program in which the interrupt routine was written in assembly language. I am trying to change it to work with DT_INT's. To do that, I would like to understand it 100% to be able to conclude my next step in this process. Firstly, please have a look to the ISR code below in assembly:
So this is what I have understood upto now:Code:; context save T0Overflow bcf INTCON, T0IF ; clear the timer overflow flag movlw 158 addwf TMR0 incf _DimrWork ; advance the timer ; check if channel value is crossed movf _DimmerVal,w subwf _DimrWork,w btfsc STATUS,C bsf _Dimr1 goto EndInt ZeroCrossingInt bcf INTCON, INTF ; clear the interrupt clrf _DimrWork ; Dimmer Working variable bcf _Dimr1 ;context restore
The timer0 prescaler is 1:8, so after 97 counts this timer runs out which means around after 750uS. This micro also receives signal from a noisy rf receiver @2400 baud where the first 3 bytes are the qualifiers bytes and then one more byte of data. I understand that (1/2400) * 8*4 = 14mS appx for the complete transmission. Now at interrupts happening @750uS - MY FIRST QUESTION is HOW is this micro able to receive the full transmission? this is baffling me a lot.
Zero-Detection is provided using 2 zener diodes and a high value resistance direct from the AC.




Bookmarks