Yahoo Groups archive

AVR-Chat

Index last updated: 2026-04-28 22:41 UTC

Message

Re: [AVR-Chat] Speed of execution

2009-02-24 by wagnerj@proaxis.com

>> Well, interrupts are disabled inside ISRs!
>
> I'm well aware of that.
>
> I'm trying to get the ISRs (especially the first one) to be as fast as
> possible.
>
> This is clipped from the file, it worked in monospaced font.
>
>
> /----------------------------------------------- Start aquiring A
>                                                                 |
>        /--------------------------------- Stop aquiring A
> 				|             |        /------------------------ Start aquiring B
> 				|             |        |           /------------ Stop aquiring B
> 				|             |        |           |
> 				|             |        |           |      /----- Start aquiring A
> again
> 				|             |        |           |      |      and so on.
> Channel
> A:000000111111110000001111111100000011111111000000111111110000001111111100000011111111
> Channel
> B:000001111111000001111111000001111111000001111111000001111111000001111111000001111111
>
> Channel A is on INT0
> Channel B is on INT1
>
> INT0 should fire on the first high edge of channel A, after it is enabled.
>
> The only code that executes in that case is:
> TCNT1H=0;				// Timer starts at 0
> TCNT1L=0;
> Raw_Edge_Flag = 0xFF;	// Next time is the end of a pulse
>
> Then I exit the ISR.
>
> On the next high edge of channel A,  the ISR fires again, and the
> following executes:
>
> // Store output into serial buffer
> Raw_Data[0][*Raw_Data_In_Pointer] = TCNT1;
> GICR  |= (0<<INT0)|(1<<INT1);	// Disable INT0, Enable INT1
> Raw_Edge_Flag = 0; 	// Next time is the beginning of a pulse
>
> Now if this second part is a little long, that does not matter.
> I'm going to then be looking for input on the B channel, and doing the
> same thing.
> The idea is to capture the period of oscillation of the A channel and
> the B channel, as close as possible to the same point in time.
>

Check the NAKED attribute for the ISR. I think that it significantly
reduces or eliminates the pushes and pops at each end to save working
registers. But, then, you need to take care of just what you need your
self.

Jim

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.