Hi,
I am developing a prototype using the CC2430 evaluation boards. I need to test the lowest time period that i can count using a timer. I set the CC2430 system clock to 32MHz, timer tick period = 32MHZ and am running Timer1 at 32MHz (prescaler = 0). The Lowest interval period i could acieve was about 1600ns.
I expected to get a much better resolution since TI specifies that most instructions are 1 cycle, and also the minimum interrupt delay is 7cycles. Since i have not enabled any other interrupts except timer1 Channel, i dont see why i shud compromise with 1.6us.
Thanks in advance for your time advice.
Cheers, Lewis
Plz: I am using IAR embedded workbench
What are you trying to solve?
A polling loop is the fastest solution, but you will not manage to do anything else then.
Thanks for replying.
I am trying to implement a simple solution for counter with a resolution of 1us or better without the complexity of managing my software counter in addition to timer ticks.
Thanks in advance for your time and advice
I set the CC2430 system clock to 32MHz, timer tick period = 32MHZ and am running Timer1 at 32MHz (prescaler = 0). The Lowest interval period i could acieve was about 1600ns.
something is amiss as 7* 1/32M is ~ 33*7 ~ 230ns
show the part(s) of your code involved in this
I do not know your chip but you are using the RCAP reload, I hope.
Erik
Hi Erik, Thanks for replying . Please find below my source code
////////////////////////////////////////////// int main( void ) {
P1DIR |= 0x01;
SLEEP &= ~ (0x03 + 0x04) ;// poweer mode 0, both oscillators powered up
for(int i =0; i<0xFFFF; i++)
{}//wait for osc to stabilize
CLKCON = 0; // 32K crsyt, 32MHz sys clock, Tickspeed 32MHz
T1CTL = 0x02;//Timer1 running upto T1CC0
T1CC0L = 32 ; // 32 * 31.25ns = 1.0 us - channel 0 compare cnt
T1CC0H = 0;
//TIMIF |= 0x40;//enable timer1 overflow interrupt
T1CCTL0 = (0x40 + 0x04); //enable Timer1 compare interrpts , compare mode on channel 0
T1IE = 1; //enable timer1 Interrots
EA = 1;
while(1)
{}
}
#pragma vector=T1_VECTOR
__interrupt void my_interrupt_handler(void)
{
if(T1CTL & 0x20) //timer 1 channel0 interrupt
P1 ^=0x01;
//////////////////////////////////////////////
I dint understand the meaning of 'RCAP load'
Thanks for your time and advice Cheers, Lewis
strange beast you have (not that necessarily is wrong)
I dint understand the meaning of 'RCAP load' have a look at any timer 2 in a 'regular' '51.
Your chip,evidently is so far from the norm that I can not help any without diving into the datasheet, unfortiunately time does not permit that.
let's hope somebody familiar with your chip comes to teh reescue.