залипает RTT внутри обработчика прерывания, плата ARDUINO DUE
- Войдите на сайт для отправки комментариев
Пнд, 29/06/2015 - 12:05
void setup() {
int prescaler = 0x8000; //предделитель на 32768 (один тик в секунду)
RTT->RTT_MR = (prescaler | RTT_MR_RTTRST | RTT_MR_ALMIEN);
RTT->RTT_AR = 0x2; // alarm на третьей секунде
// NVIC_DisableIRQ(RTT_IRQn);
// NVIC_ClearPendingIRQ(RTT_IRQn);
// NVIC_SetPriority(RTT_IRQn, 0);
NVIC_EnableIRQ(RTT_IRQn); // разрешить прерывания от RTT
Serial.begin(115200);
}
void RTT_Handler() {
//тут будет обработчик если этот сраный таймер заработает
}
void loop() {
int a = RTT->RTT_VR;
Serial.println(a);
delay(100);
}
Вижу что таймер тикает, входит в прерывание на третьей секунде и висит.
У сообщества есть идеи почему висит?
Вижу что таймер тикает, входит в прерывание на третьей секунде и висит.
в обработчике пишем
Serial.println ("somesing");и в терминале видим ровно первую половинку от этого слова
Вот от того и ваша проблема ,что неправильно смотрите.
volatile bool s = 0; void RTT_Handler() { s = 1; } void loop() { if(s) { Serial.println("somesing"); s = 0; } }сам подведу итог
заработало вот так
добавить в loop() и RTT_Handler()
на 240 странице сказано
If the counter value matches the alarm, the bit ALMS in RTT_SR is set.
Reading the RTT_SR status register resets the RTTINC and ALMS fields.
не знаю как связано чтение регистра состояния таймера с залипоном, но факт работоспособности "налице"(с)
будем считать тему закрытой