Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблемы с rtt
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
odys
всем привет!!!!
Компилирую проект из IAR 5.30 basic-rtt-project заливаю в at91sam7x256... все вроде бы работает..
но после маленькой модификации проекта возникает проблема... наблюдается множественный вход в подпрограмму обработки прерывания...
////////////////////////////////////////////////////////////////////////////////
#define test_pin (1<<20)
#define led_test_on() *AT91C_PIOB_CODR|=test_pin;
#define led_test_off() *AT91C_PIOB_SODR|=test_pin;
#define led_test_blink() if((*AT91C_PIOB_ODSR&test_pin)==0) led_test_off() else led_test_on();
////////////////////////////////////////////////////////////////////////////////
void ISR_Rtt(void)
{
unsigned int status;
// Get RTT status
status = RTT_GetStatus(AT91C_BASE_RTTC);
// Time has changed, refresh display
if ((status & AT91C_RTTC_RTTINC) == AT91C_RTTC_RTTINC) {
led_test_blink();
// RefreshDisplay();
}
// Alarm
// if ((status & AT91C_RTTC_ALMS) == AT91C_RTTC_ALMS) {
//alarmed = 1;
// RefreshDisplay();
//}
}
//////////////////////////////////////////////////////////////////////////////
вхождение в пп наблюдаю осциллографом.. когда подключаю RefreshDisplay(); все работает как надо.. видимо задержка как то влияет на процесс..
может кто нибудь сталкивался с такой проблемой и знает как решить..?
aaarrr
Цитата(odys @ Nov 30 2009, 18:09) *
может кто нибудь сталкивался с такой проблемой и знает как решить..?

Все дело в том, что флаги RTT сбрасываются через 2 периода SCLK (~61us) после чтения статусного регистра.
А вообще, лучше бросьте бяку - исключительно уродский таймер, годится разве что для побудки процессора из режима с малым потреблением.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.