void avr_cycle_timer_register_usec( avr_t * avr, uint32_t when, avr_cycle_timer_t timer, void * param) { avr_cycle_timer_register(avr, avr_usec_to_cycles(avr, when), timer, param); }
void ac_input_init(avr_t *avr, ac_input_t *b) { const char * name = ">ac_input"; b->irq = avr_alloc_irq(&avr->irq_pool, 0, IRQ_AC_COUNT, &name); b->avr = avr; b->value = 0; avr_cycle_timer_register_usec(avr, 100000 / 50, switch_auto, b); printf("ac_input_init period %duS or %d cycles\n", 100000 / 50, avr_usec_to_cycles(avr, 100000 / 50)); }
static avr_cycle_count_t switch_auto(struct avr_t * avr, avr_cycle_count_t when, void * param) { ac_input_t * b = (ac_input_t *) param; b->value = !b->value; //printf("ac=%d\n", b->value); avr_raise_irq(b->irq + IRQ_AC_OUT, b->value); return when + avr_usec_to_cycles(avr, 100000 / 50); }