Хочу, что бы 2 светодиода меняли своё состояние с разным периодом. Один, раз в 100 мс, второй - в 500мс. Ошибка в обработчике прерываний. Как её исправить? подскажите, кто знает)
int main( void )
{
WDTCTL = WDTPW + WDTHOLD; // Остановка сторожевого таймера, чтобы предотвратить время сброса
_DINT(); // Запрещаем прерывания
InitializationPortIO (); // Вызов функции инициализации портов ввода/вывода микроконтроллера
InitializationTimersMSP430 (); // Вызов функции инициализации внутренних аппаратных таймеров микроконтроллера MSP430F135
_EINT(); // Разрещаем прерывания
while (1)
{
if (Flag_500ms == true) // Если поставлен флаг 500мс
{
P4OUT = ~(P4OUT & BIT4); // Состояние 3 вывода 4 порта меняется
Flag_500ms = false; // Флаг убирается
}
if (Flag_100ms == true) // Если поставлен флаг 100мс
{
P4OUT = ~(P4OUT & BIT3); // Состояние 4 вывода 4 порта меняется
Flag_100ms = false; // Флаг убирается
}
}
}
//********************************************************************************
*********************************************************************************
******************************
//********************************************************** ОБРАБОТЧИКИ ПРЕРЫВАНИЙ ********************************************************************************
*********************
#pragma vector = TIMERA0_VECTOR // Прерывание от таймера А (срабатывает каждые 10 мс)
__interrupt void isr_TACCR0() // прерывание
{
t ++;
y ++;
if ( t >= 10 )
{
Flag_100ms = true;
t = 0;
}
if ( y >= 50 )
{
Flag_500ms = true;
y = 0;
}
}