Проблема - таймер А0 никак не запускается, смотрю в протеусе, при заходе в обработчик прерывания должны дёрнуть ножкой, но увы...Я вот и думаю, мб в протеусе такие вещи вообще бесполезно делать, хотя вроде всего лишь таймер.... Мб в коде что-то не то, т.к. с CCS дела уже более года не имел, привожу код:
Насколько я помню там по-умолчанию мк тактируется от внутренного источника на DCOCLK , а он в свою очередь является источником для MCLS и SMCLK ...
схему в протеусе приводить смысла не вижу т.к. там просто голый мк и ничего более
Код: Выделить всё
#include "msp430f2112.h"
//#include "defines.h"
//#include "initialization.h"
//#include "keyboard.h"
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer0_A0 (void)
{
P3OUT |= BIT0; // вкл зелёный диод (в основном это для отладки)
}
void init()
{
// ports
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
// timer_a
TA0CCR0 = 12000; // Count limit (16 bit)
TA0CCTL0 = 0x10;
TA0CTL |= TAIE | TASSEL_1 |TACLR;; // вкл таймер и прерывание на нём
TA0CTL |= MC0;
}
int main(void)
{
init(); // функция инициализации
__bis_SR_register(GIE);
while(1)
{
if (TAR != 0)
P3OUT |= BIT0; // вкл зелёный диод (в основном это для отладки)
}
return 0;
}