реклама на сайте
подробности

 
 
> проблемма с таймером, проблемма с таймером
jjjjjjein
сообщение Oct 31 2011, 06:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 31-10-11
Пользователь №: 68 059



Хочу, что бы 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;
}
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 21:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016