wip:
This commit is contained in:
		| @@ -1,5 +1,5 @@ | |||||||
| #include "zh_avr_ac_dimmer.h" | #include "zh_avr_ac_dimmer.h" | ||||||
|  | // https://avr-start.ru/?p=3983 | ||||||
| static zh_avr_ac_dimmer_init_config_t _init_config = {0}; | static zh_avr_ac_dimmer_init_config_t _init_config = {0}; | ||||||
| volatile static bool _is_dimmer_work = false; | volatile static bool _is_dimmer_work = false; | ||||||
| volatile static uint8_t _dimmer_value = 0; | volatile static uint8_t _dimmer_value = 0; | ||||||
| @@ -48,27 +48,28 @@ avr_err_t zh_avr_ac_dimmer_set(uint8_t value) | |||||||
|  |  | ||||||
| void zh_avr_ac_dimmer_isr_handler(void) | void zh_avr_ac_dimmer_isr_handler(void) | ||||||
| { | { | ||||||
|     uint8_t flag = false; |     bool flag = false; | ||||||
|     switch (_init_config.zero_cross_port) |     switch (_init_config.zero_cross_port) | ||||||
|     { |     { | ||||||
|     case AVR_PORTB: |     case AVR_PORTB: | ||||||
|         if ((PINB & (1 << _init_config.zero_cross_gpio)) == 0) |         if ((PINB & (1 << _init_config.zero_cross_gpio)) == (1 << _init_config.zero_cross_gpio)) | ||||||
|         { |         { | ||||||
|             flag = true; |             flag = true; | ||||||
|         } |         } | ||||||
|         break; |         break; | ||||||
|     case AVR_PORTC: |     case AVR_PORTC: | ||||||
|         if ((PINC & (1 << _init_config.zero_cross_gpio)) == 0) |         if ((PINC & (1 << _init_config.zero_cross_gpio)) == (1 << _init_config.zero_cross_gpio)) | ||||||
|         { |         { | ||||||
|             flag = true; |             flag = true; | ||||||
|         } |         } | ||||||
|         break; |         break; | ||||||
|     case AVR_PORTD: |     case AVR_PORTD: | ||||||
|         if ((PIND & (1 << _init_config.zero_cross_gpio)) == 0) |         if ((PIND & (1 << _init_config.zero_cross_gpio)) == (1 << _init_config.zero_cross_gpio)) | ||||||
|         { |         { | ||||||
|             flag = true; |             flag = true; | ||||||
|         } |         } | ||||||
|         break; |         break; | ||||||
|  |  | ||||||
|     default: |     default: | ||||||
|         break; |         break; | ||||||
|     } |     } | ||||||
| @@ -101,9 +102,11 @@ void zh_avr_ac_dimmer_isr_handler(void) | |||||||
|             } |             } | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|  |                 cli(); | ||||||
|                 TCNT0 = 0; |                 TCNT0 = 0; | ||||||
|                 TIFR0 = (1 << OCF0A); |                 // TIFR0 = (1 << OCF0A); | ||||||
|                 TIMSK0 |= (1 << OCIE0A); |                 TIMSK0 |= (1 << OCIE0A); | ||||||
|  |                 sei(); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -235,6 +238,7 @@ static avr_err_t _zh_avr_ac_dimmer_timer_init(void) | |||||||
|  |  | ||||||
| ISR(TIMER0_COMPA_vect) | ISR(TIMER0_COMPA_vect) | ||||||
| { | { | ||||||
|  |     ++_dimmer_count; | ||||||
|     if (_dimmer_count >= (100 - _dimmer_value)) |     if (_dimmer_count >= (100 - _dimmer_value)) | ||||||
|     { |     { | ||||||
|         _dimmer_count = 0; |         _dimmer_count = 0; | ||||||
| @@ -259,5 +263,5 @@ ISR(TIMER0_COMPA_vect) | |||||||
|             break; |             break; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     ++_dimmer_count; |     // ++_dimmer_count; | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user