| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Вопросик по RTC в LPC23xx
24.05.2011, 09:39
|
|
|
Гражданин KAZUS.RUN
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Вопросик по RTC в LPC23xx
Доброго времени суток! Ваяю устройство, где надо раз в секунду обновлять показания. Решил сделать по прерыванию от RTC по инкриментированию секундного регистра (использую внешний часовой кварц). При этом получаются стабильные подвисания программы. Уважаемые знатоки, можете ткнуть носом, где ошибка. Код программы:
конфиг RTC:
RTC_CCR = 0x00000000; //Clear the clock control register
RTC_CIIR = 0x00000001; //Enable seconds counter interrupt
RTC_AMR = 0x000000FE; //Enable seconds Alarm
RTC_CCR |= 0x1 | 0x1‹‹4; //Start the RTC
обработчик прерывания:
void RTC_isr (void) __irq
{
sec++;
FIO1SET|= _BV(15);
pause(10);
FIO1CLR|=_BV(15);
pause(10);
TFT_wr_3dig (15,250, sec);
RTC_ILR = 0x01; //Clear the interrupt register
VICVectAddr = 0;
return;
}
В проге поотключал уже другие все прерывания, оставил токо от RTC
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
24.05.2011, 11:12
|
|
|
Частый гость
Регистрация: 02.02.2010
Адрес: Одесская обл.
Сообщений: 32
Сказал спасибо: 0
Сказали Спасибо 24 раз(а) в 12 сообщении(ях)
|
Re: вопросик по RTC в LPC23xx
Сообщение от serb-radio
|
обработчик прерывания:
void RTC_isr (void) __irq
{
sec++;
FIO1SET|= _BV(15);
pause(10);
FIO1CLR|=_BV(15);
pause(10);
TFT_wr_3dig (15,250, sec);
RTC_ILR = 0x01; //Clear the interrupt register
VICVectAddr = 0;
return;
}
|
Возможно из-за пауз в теле прерывания, я имею ввиду не только функции pause() но и TFT_wr_3dig(). Вынесите их из тела прерывания
|
|
|
|
24.05.2011, 11:20
|
|
|
Гражданин KAZUS.RUN
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: вопросик по RTC в LPC23xx
а тогда как мне сделать вывод по интеррупту? зачем он нужен если я не могу в его теле сделать вызов нужной мне функции или я чего то не так понял
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
24.05.2011, 11:24
|
|
|
Гражданин KAZUS.RUN
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: вопросик по RTC в LPC23xx
И еще интересная штука получается. В век-ре прерывания по РТС я дергаю пином, ели я запитываю плату от программатора, то частота дерганья пином 1 Гц, если же я запитываю плату от БП частота дерганья пином около 2кГц!!!  что это может быть?
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
24.05.2011, 11:27
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: вопросик по RTC в LPC23xx
Некоторые компиляторы вообще не позволяют писать в прерывание паузу. И некоторые функции тоже.
|
|
|
|
24.05.2011, 11:32
|
|
|
Гражданин KAZUS.RUN
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: вопросик по RTC в LPC23xx
Компилятор Keil. Так все же остальное работает и функции в других прерываниях работают. Сейчас же я все другие прерывания поотключал чтоб выяснить что же все таки слияет на РТС но увы пока ни какого эффекта
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
24.05.2011, 11:34
|
|
|
Гражданин KAZUS.RUN
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: вопросик по RTC в LPC23xx
Пробовал запускать и на внешнем кварце и через предделители опорной частоты периферии - та же ботва
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
24.05.2011, 12:01
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: вопросик по RTC в LPC23xx
Вам надо сам принцип изменить. У вас камень уходит в прерывание и оттуда не возвращается. Так код писать нельзя даже в состоянии алкогольного опьянения.
В прерывании поднимаете флаг.
В теле флаг опрашиваете и выполняете процедуру, с ним связанную. Вот вам и малое подобие операционной системы.
|
|
|
|
24.05.2011, 14:29
|
|
|
Гражданин KAZUS.RUN
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: вопросик по RTC в LPC23xx
т.е. в прерывании нельзя ничего писать коме выстановки флага то что прерывание произошло?, а выполнять все операции в основном цикле?
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
24.05.2011, 15:18
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
|
Re: вопросик по RTC в LPC23xx
ну как бы есть исключения...но в основном - именно так.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:03.
|
|