Hi @ all!
I'm confused about the examples for TimerB. I want to create a dynamic
signal started from a Port 1 Interrupt.
After 30% of time I want to generate a high-impulse and when timer is
reaching the maximum the high-impulse should end.
I think that should work with:
TBCCR0=1000;
TBCCR1=333;
But in the example this values doesn't work. Sometimes the Interrupt-Vector
"TIMERB1_VECTOR" is used and in the other examples The Interrupt-Vector
"TIMERB0_VECTOR" is used. Where is the difference an why allways my debugger
shows that "TBIV" is 14 - overflow?
Is the overflow simmilar to the TBCCR0-Value?
#include <signal.h>
#include <io.h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP14PF; // Configure load caps
TBCTL = TBSSEL1 + TBCLR + TBIE; // SMCLK, clr. TBR, interrupt
P5DIR |= 0x02; // Set P5.1 to output direction
TBCTL |= MC1; // Start Timer_B in continous
_EINT(); // Enable interrupts
for (;;)
{
_BIS_SR(CPUOFF); // CPU off
_NOP(); // Required only for C-spy
}
return 0;
}
// Timer_B7 Interrupt Vector (TBIV) handler
interrupt (TIMERB1_VECTOR) Timer_B(void)
{
switch( TBIV )
{
case 2: break; // CCR1 not used
case 4: break; // CCR2 not used
case 14: P5OUT ^= 0x02; // overflow
break;
}
}
Greetings
Ben
--
NEU +++ DSL Komplett von GMX +++ http://www.gmx.net/de/go/dsl
GMX DSL-Netzanschluss + Tarif zum supergünstigen Komplett-Preis!