C18, PIC18F252: Setting timer0 with an interrupt ?
From: Rodo (dsp1024_at_yahoo.com)
Date: 01/24/04
- Next message: Ralph Malph: "Re: Power supply in automotive environment"
- Previous message: Lewin A.R.W. Edwards: "Anyone using ARMcore from Compulab (Israel) with Linux?"
- Next in thread: Gary Kato: "Re: C18, PIC18F252: Setting timer0 with an interrupt ?"
- Reply: Gary Kato: "Re: C18, PIC18F252: Setting timer0 with an interrupt ?"
- Reply: Grog: "Re: C18, PIC18F252: Setting timer0 with an interrupt ?"
- Reply: Gary Kato: "Re: C18, PIC18F252: Setting timer0 with an interrupt ?"
- Reply: Rodo: "Found the error."
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sat, 24 Jan 2004 04:29:02 GMT
Hi all...
I'm trying to set up timer0 to time about 10ms and inc a global variable
that gets displayed on an LCD. Everything is pretty much working except that
I can't change the time out value for timer0. I init the timer before a
while loop that display the variable "time". The isr inc the value on every
time out of timer0. It also toggles RB4 so I can check the freq (for
testing). The freq is always about 4 Hz.
TIME_TIMEOUT is defined as 5000. I've tried to change this value but nothing
happens. What am I missing ?
Thanks
BTW it runs at 2MHz. There is only one isr.
//------------- code begins --------------------------
OpenTimer0(TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_1);
WriteTimer0(TIME_TIMEOUT);
// INTCON=0; //make sure interrupts are disable
// INTCONbits.GIE=1; //enable global interrupts
// INTCONbits.PEIE=1; //enable peripheral interrupts
// INTCONbits.TMR0IE=1; //enable TMR0 overflow interrupt enable bit
INTCON=0xe0; //all 4 lines above combined
while(1)
{
itoa(time,timeStr);
SetDDRamAddr(LCD_LINE2); // Display value of time
while(BusyXLCD()); // Wait if LCD busy
putsXLCD(timeStr);
};
//--------------- code ends ----------------------
The isr is here:
//------------- code begins ----------------------
#pragma code
#pragma interrupt InterruptHandlerLow
void InterruptHandlerLow()
{
if (INTCONbits.TMR0IF==1)
{
time++;
PORTBbits.RB4=~PORTBbits.RB4;
WriteTimer0(TIME_TIMEOUT);
INTCONbits.TMR0IF=0; //clear interrupt flag
}
}
//--------------- code ends ----------------------
- Next message: Ralph Malph: "Re: Power supply in automotive environment"
- Previous message: Lewin A.R.W. Edwards: "Anyone using ARMcore from Compulab (Israel) with Linux?"
- Next in thread: Gary Kato: "Re: C18, PIC18F252: Setting timer0 with an interrupt ?"
- Reply: Gary Kato: "Re: C18, PIC18F252: Setting timer0 with an interrupt ?"
- Reply: Grog: "Re: C18, PIC18F252: Setting timer0 with an interrupt ?"
- Reply: Gary Kato: "Re: C18, PIC18F252: Setting timer0 with an interrupt ?"
- Reply: Rodo: "Found the error."
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]