Hi everyone,
I have many problems with timers.
could someone tell me what I have to do to have a timer wich reset and works forever, with interrupts.
Thanks.
#include <MC9S12NE64.h> /* derivative information */#include "lib.h"#include "Cpu.h"static long absoluteTime = 0;static long absoluteTimeUp = 0;static long msDelai = 0;static int b=1;static void startTimeBase(void){ absoluteTime = 0; msDelai=500; absoluteTimeUp=absoluteTime+msDelai; }volatile unsigned int count;#pragma CODE_SEG NON_BANKEDinterrupt void _Vtimovf (void) { int i =0; absoluteTime++; //i=setPortPinValue('g', 0, ON); TFLG2 = 0x80;// clear the interrupt flag count++; //increment counter } #pragma CODE_SEG DEFAULTvoid main(void) {int i =0; /* put your own code here */ TSCR1=0X80;//enable timer TSCR2=0x85; //select prescler bus clock/32 TFLG2=0x80;// clear timer flag i=setPortPinDirection('g', 0, OUTPUT); i=setPortPinDirection('h', 0, INPUT); PTG_PTG0 =1; //i=setPortPinValue('g', 0, OFF); startTimeBase(); EnableInterrupts; while(1) { while(absoluteTimeUp>absoluteTime) { } absoluteTime=0; if(b==0) { b=1; i=setPortPinValue('g', 0, OFF); } else { b=0; i=setPortPinValue('g', 0, ON); } } /* wait forever */}
here is my code
Why then i=setPortPinValue('g', 0, ON); line is commented out?
Did you initialize interrupt vectors table properly? Is there some dedicated *.c module with interrupts table defined? Maybe set interrupt vectors in *.prm file? If not then you should change timer overflow ISR like this:
interrupt VectorNumber_Vtimovf void _Vtimovf (void)
{
...
}
You should probably post your code in order for us to help you. Also, you might want to look at http://users.ece.utexas.edu/~valvano/Starterfiles/ which has plenty of starter code for timers if you search for "output compare" on the page.