??? 04/26/07 19:05 Modified: 04/26/07 19:16 Read: times |
#138049 - Serial ISR and TIC or Timer 2 |
The problem is that serial isr works fine, but when I add TIC or Timer 2 counter the code doesn't work anymore. Without Serial ISR ,"ES=0", the timer does work fine. I'm using ADUC848 controller and SDCC compiler. Could someone please point out what I'm doing wrong since this is really bugging me.
#include <stdio.h> #include <ADuC845.h> volatile unsigned char temp=0; unsigned char i=0; unsigned char x=0; void delay(int length) { while (length >=0) length--; } void RS_int (void) interrupt 4 { if(RI) //if something is received { RI = 0; printf("RI "); } } void TIC_int (void) interrupt 10 { temp++; } void main (void) { //Configure UART T3CON = 0x83; //9600 Baud rate T3FD = 0x12; SCON = 0x52; //Configure Time Interval Counter IEIP2 = 0x04; // enable TIC interrupt TIMECON = 0xD0; //Count in seconds, clear TCEN INTVAL = 0x02; //Value to count to, 4sec delay(10000); //Delay to allow TIC registers be written to. TIC registers are clocked //from the 32kHz clock and so reading from or trying to use TIC registers //too quickly can have unforeseen results. TIMECON = 0xD3; //Start counting, enable INTVAL counter & TIC counter EA = 1; //enable interrupts ES = 1; //enable UART serial port interrupt while(1) //Wait here for TIC interrupt. { if(temp>x) { x=temp; printf("%d ",temp); } } } //*********************************************************************** // external function for sending character through serial port void putchar(char c) { while(!TI); TI=0; SBUF = c; } // send ASCII string to screen, the string must be stored in code memory putstr(char *s) { //char idata i=0; char data c; i=0; while((c=*(s+(i++)))!= 0) putchar(c); // while byte is not terminator, keep sending return 0; } |
Topic | Author | Date |
Serial ISR and TIC or Timer 2 | 01/01/70 00:00 | |
Calling printf from within an ISR... | 01/01/70 00:00 | |
It is worse than that | 01/01/70 00:00 | |
Cross-Reference | 01/01/70 00:00 | |
Serial interrupt | 01/01/70 00:00 | |
Thanks to you all again | 01/01/70 00:00 | |
why \"somehow\"? | 01/01/70 00:00 | |
Nothing to do with 'C'? | 01/01/70 00:00 | |
why "C" | 01/01/70 00:00 | |
made it a FAQ | 01/01/70 00:00 | |
Nothing wrong with setting TI![]() | 01/01/70 00:00 |