| ??? 10/31/11 10:14 Read: times |
#184474 - try this - maybe Responding to: ???'s previous message |
Here's how I do it
//-----------------------------------------------------------------------------
// TIMER2_ISR
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters : None
//
// This is the ISR for the TIMER2.
//
//-----------------------------------------------------------------------------
void ONE_KHZ_ISR (void) interrupt 5 {
TF2 = 0; // Reset Interrupt
WDTCN = 0xA5; //this is not ideal but needed here for other reasons.
gui_mSecCount++;
gb_mSecTick = TRUE;
guc_LCD_delay_mSec--;
}
then in my main() function
while(1){
if (gb_mSecTick == TRUE) {
gb_mSecTick = FALSE;
fun1mSec();
}
if (gb_10mSecTick == TRUE) {
gb_10mSecTick = FALSE;
fun10mSec();
}
if (gb_100mSecTick == TRUE) {
gb_100mSecTick = FALSE;
fun100mSec();
}
if (gb_250mSecTick == TRUE) {
gb_250mSecTick = FALSE;
fun250mSec();
}
if (gb_SecTick == TRUE) {
gb_SecTick = FALSE;
fun1Sec();
}
if (gb_MinTick == TRUE) {
gb_MinTick = FALSE;
fun1Min();
}
}
}
//this function carries out the period timed functions
//that are not time critical.
void fun1mSec(void) {
//kick the dog
if (gui_mSecCount % 10 == 0){
gb_10mSecTick = TRUE;
}
if (gui_mSecCount % 100 == 0){
gb_100mSecTick = TRUE;
}
if (gui_mSecCount % 250 == 0){
gb_250mSecTick = TRUE;
}
if (gui_mSecCount % 1000 == 0){
gb_SecTick = TRUE;
}
if (gui_mSecCount >=60000){
gui_mSecCount = 0;
gb_MinTick = TRUE;
}
}
.... and so on
These are not time critical values, here, they are ABOUT the time period you expect, for time critical functions you can use the other timers. not associated with your tick function |
| Topic | Author | Date |
| Multiple calls to segment | 01/01/70 00:00 | |
| General ISR Design Principle | 01/01/70 00:00 | |
| Incorrect use of ISR | 01/01/70 00:00 | |
| the missed issue | 01/01/70 00:00 | |
| Delay Routines.... | 01/01/70 00:00 | |
| Thanks a million... | 01/01/70 00:00 | |
| us, not ms | 01/01/70 00:00 | |
| try this - maybe | 01/01/70 00:00 | |
Thanks Brown.. | 01/01/70 00:00 |



