Cepгeй Бopщ (22.02.2010 17:24 - 17:27, просмотров: 180) ответил zx_ на не получается настроить прерывания по таймеру. iar+msp
Сразу в лоб: IFG1 &= !OFIFG; - это неправильно. Правильно IFG1 &= ~OFIFG; Далее - вы разрешаете прерывание TAIE, а обработчика этого прерывания у вас нет. У вас только обработчик TCCR0.
Еще замечания, как начинающему:
TACTL = TASSEL_1+MC_1+TAIE; //ACLK, Режим «вверх», Разрешение прерыванияНе используйте в таких выражениях "+", используте "|". В общем случае они дают одинаковый результат, но если процессе отладки вы (случайно) добавите один из битов дважды, то в случае сложения результат будет несколько неожиданный. Сравните: TACTL = TAIE + TASSEL_1 + MC_1 + TAIE
и
TACTL = TAIE | TASSEL_1 | MC_1 | TAIE .
do i--;
while (i != 0); сравните листинг с таким циклом: while (--i != 0);
или еще короче:
while (--i);
Константы вроде вашей BEEPER удобнее записывать в виде #define BEEPER (1<<3)сразу видно, что это единица, сдвинутая влево на 3 бита, т.е. что это единица в третьем бите, нет необходимости в уме переводить из шестнадцатиричной системы в двоичную, рискуя ошибиться.