p...@heypete.com said:
> I'm a little concerned about the speed at which the pulses need to be
> counted. The 32kHz pulses come in every ~30.5 microseconds, and handling an
> interrupt on an ATmega328 running at 16MHz takes about 5.125 microseconds[1]

Huh?

Instruction cycle time is 62.5nS for almost all instructions at that clock.
That’s a pretty long ISR by my standards.

1: Reserve a couple of registers for handling data inside ISRs, avoiding push 
and pop.
2: Reserve a register for holding SREG during the ISR.

ISR:    in STEMP,SREG
        At this point you can fearlessly trash SREG and ITEMP and ITEMP2
        Do Stuff using ITEMP and ITEMP2.
        Do as little as practical in the ISR, letting the non-isr code do the 
heavy lifting.
        Out SREG,STEMP
        RETI

Optionally, set a register (I usually call it "ZERO") to 0x00 to speed up 16 
bit operations.
Keep data you need FAST in registers in the low page, rather than in RAM.


        

        
_______________________________________________
time-nuts mailing list -- time-nuts@febo.com
To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
and follow the instructions there.

Reply via email to