ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
9 мая
84862 Топик полностью
ReAl (29.03.2007 17:10, просмотров: 1) ответил LordN на вобщем кое-что нашел, но там сделано по другому
Ну, в первом варианте можно было без плавучки обойтись, в целых числах. Если я правильно помню, оно DDA называется. В целых числах делается без проблем, а если "период" (число M) степень двойки, то и начальное <c>inr = 256*N/M</c> не нужно. Если код мощности от 0 до 127, то можно вообще байтом обойтись: <c> uint8_t power; ISR(AC_LINE_vect) { enum { CARRY_BIT = 0x80 }; static uint8_t accum=0; accum += power; if( accum & CARRY_BIT) bit_on(TRIAC_GATE); else bit_off(TRIAC_GATE); accum &= ~CARRY_BIT; } </c> Собственно, тут код мощности можно иметь от 0 до 128 для мощности от 0% до 100% А "155ИЕ8" - это так <c> uint8_t bit_reversed_power_code; ISR(AC_LINE_vect) { static uint8_t ac_counter=0; ++ac_counter; if( ac_couter & bit_reversed_power_code ) bit_on(TRIAC_GATE); else bit_off(TRIAC_GATE); } </c> bit_reversed - это из 0x15 делать 0xA8.