|
я начинающий в этих делах с МСП (3 день как осваиваю) так что не сорри за тупые вопросы..
1) счетчик тймера А почему-то не симулируется (при FET считает), мож это только у меня так ?
2) хотел изучить прерывания и слепил прогу : прерывание при переполнении таймера А. флаг TAIFG при переполнении устанавливается а подпрогр. обработки не вызывается/ Сложилось такое впечатление что с адресами векторов напортачил.
вообщем подскажите плз. что я тут не так сделал ?
IAR v3.10a trial
void init(void)
{
unsigned int i;
WDTCTL = WDTPW + WDTCNTCL + WDTHOLD; // WDT is off
// Oscillator
DCOCTL = DCO2 + DCO1; // DCOCLK ~ 1 MHz
BCSCTL1 = RSEL2 + XTS + XT2OFF; // LFXT1 High freq mode, XT2 is Off
do
{
IFG1 &= ~OFIFG; for (i=0xFF; i>0; i--);
}
while ((IFG1 & OFIFG) != 0); // OSCFault flag still set?
BCSCTL2 |= SELM1 + SELM0; // MCLK=LFXT1CLK, SMCLK=DCOCLK
// TIMER A - типа 32 mS
TACTL = TASSEL1 + ID1 + ID0 + MC1 + TAIE; // ACLK, TAIE, 1:8
_EINT(); // Enable interrupts
// PINs
P1OUT = 0x00;
P1DIR = BIT5 + BIT6;
_NOP(); // Breakpoint, required only for C-spy
P5OUT = 0x00;
P5DIR = BIT4 + BIT5 + BIT6;
P5SEL = BIT4 + BIT5 + BIT6;
}
Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
if (TAIV==10) g_led_tgl;
_NOP(); // Breakpoint, required only for C-spy
}
void main(void)
{
init();
while(1);
}
E-mail: info@telesys.ru