X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Favr%2Fao_pwmin.c;h=73a153b2e4cc67332b879e18b02febe1333687c5;hp=84397357a7ee89ee4967b3300f0e2b49950cb62f;hb=294b1ec85a37e375a0ac70cbffc6398309d63a7f;hpb=ec9e1186dce079a2f2b7be8050216ddb1bc1af66 diff --git a/src/avr/ao_pwmin.c b/src/avr/ao_pwmin.c index 84397357..73a153b2 100644 --- a/src/avr/ao_pwmin.c +++ b/src/avr/ao_pwmin.c @@ -25,40 +25,20 @@ * project payload developed at Challenger Middle School. */ -volatile __data uint16_t ao_icp3_count = 0; -volatile __data uint16_t ao_icp3_last = 0; - -uint16_t ao_icp3(void) -{ - uint16_t v; - ao_arch_critical( - v = ao_icp3_count; - ); - return v; -} +volatile __data uint16_t ao_icp3_count; static void ao_pwmin_display(void) __reentrant { /* display the most recent value */ - printf("icp 3: %5u\n", ao_icp3()); + printf("icp 3: %5u\n", ao_icp3_count); } - - ISR(TIMER3_CAPT_vect) { - uint8_t lo = ICR3L; uint8_t hi = ICR3H; - uint16_t ao_icp3_this = (hi <<8) | lo; - - /* handling counter rollovers */ - if (ao_icp3_this >= ao_icp3_last) - ao_icp3_count = ao_icp3_this - ao_icp3_last; - else - ao_icp3_count = ao_icp3_this + (65536 - ao_icp3_last); - ao_icp3_last = ao_icp3_this; + ao_icp3_count = (hi <<8) | lo; } __code struct ao_cmds ao_pwmin_cmds[] = { @@ -76,7 +56,7 @@ ao_pwmin_init(void) (0 << ICES3) | /* input capture on falling edge (don't care) */ (0 << WGM33) | /* normal mode, OCR3A */ (0 << WGM32) | /* normal mode, OCR3A */ - (3 << CS30)); /* clk/64 from prescaler */ + (4 << CS30)); /* clk/256 from prescaler */