[Icc-avr] Global Interrupts
Andrew
andrew_166 at msn.com
Tue Jan 8 13:54:46 PST 2008
Hi,
i have an ADC connect to my system using SPI and in the back ground a tick timer overflow interrupt (100ms). when i call my read ADC function to avoid any interrupts messing things i was going to do the follwing: -
CLI(); // Disable all interrupts
Get 4 Channels of results
SEI(); // Re-enable interrupts
My question is will doing that screw the timer up or will it carry on from where it left off after i re-enable the interrupts.
Andy
----- Original Message -----
From: Paul Mateer
To: Discussion list for ICCAVR and ICCtiny Users. You do NOT need tosubscribe to icc-announce if you are a member of this.
Sent: Tuesday, January 08, 2008 8:13 PM
Subject: Re: [Icc-avr] Software Delay
...then I test dbc_kpd for my keypress.
On Jan 8, 2008 11:31 AM, Paul Mateer <paul.aa9gg at gmail.com> wrote:
Keybounce "delays" can get you into trouble sometimes. I use this code placed into an timer-overflow interrupt:
#define KEYPADS PINH
unsigned int dbc_j, dbc_i, dbc_idx, dbc_kpd,State[10]; // key-debounce stuff
interrupt routine()
{
// begin new keypad debounce routine
State[dbc_idx] = KEYPADS & 0xFF;
++dbc_idx;
dbc_j = 0xff;
for(dbc_i=0; dbc_i < 4; dbc_i++) dbc_j = dbc_j & State[dbc_i];
dbc_kpd = dbc_j;
if(dbc_idx >= 5) dbc_idx = 0;
}
On Jan 8, 2008 10:45 AM, Daub, Stephan < stephan.daub at sap.com> wrote:
Hi andy,
To determine the length of the loop you simpy add the inner loop maschine cycles plus the entry cycles plus for/while time. Once you have calc this you multiply this with your systemclock and youre done.
Best, stephan
-----Original Message-----
From: icc-avr-bounces at imagecraft.com < icc-avr-bounces at imagecraft.com>
To: Discussion list for ICCAVR and ICCtiny Users. You do NOT needtosubscribeto icc-announce if you are a member of this. < icc-avr at imagecraft.com >
Sent: Tue Jan 08 17:18:10 2008
Subject: [Icc-avr] Software Delay
Hi,
I need a good software time delay that sit's in an interrupt handler. Basically i need it to de-bounce a pin (INT1). and i cannot use a timer as the timer interrupts are disabled at this point in the code.
I was thinking of using : -
#pragma interrupt_handler int1_isr:iv_INT1
void int1_isr(void)
{
delay_2();
}
//-----------------------------------------------------------------------------
//
// Function name : Delay_2
//
// Returns : None
//
// Parameters : None
//
// Purpose : De-Bouce delay
//
//-----------------------------------------------------------------------------
void delay_2 (void)
{
for (loop_int = 0; loop_int < 100; loop_int++)
{
NOP();
}
loop_int = 0x00;
}
Only probem is that i have no clue how long this delay is? ( i am running the main clock at 8Mhz)
Does anydy have a better software delay function.
Andy
_______________________________________________
Icc-avr mailing list
Icc-avr at imagecraft.com
http://dragonsgate.net/mailman/listinfo/icc-avr
--
Paul Mateer, AA9GG
Elan Engineering Corp.
www.elanengr.com
--
Paul Mateer, AA9GG
Elan Engineering Corp.
www.elanengr.com
------------------------------------------------------------------------------
_______________________________________________
Icc-avr mailing list
Icc-avr at imagecraft.com
http://dragonsgate.net/mailman/listinfo/icc-avr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://dragonsgate.net/pipermail/icc-avr/attachments/20080108/1055f6df/attachment-0001.html
More information about the Icc-avr
mailing list