SapegoAL 0 14 ноября, 2016 Опубликовано 14 ноября, 2016 · Жалоба Мне надо по событию однократно изменить период RTC. Примерно такой код: RTCMOD = rt; // скорректировать RTCCTL = RTCSS__XT1CLK | RTCPS__64 | RTCSR; // запретить прерывания от RTC + загрузить значение теневого регистра // софтовая задержка RTCMOD = RTCSEC(120); // Начать заново RTCIV; // сбросить прерывания от RTC RTCCTL |= RTCIE; // разрешить прерывания от RTC Процессор ведёт себя так, как будто я RTCMOD первый раз не загружаю. В документации указано, что по RTCSR я его загружаю принудительно. А второй раз он должен загрузиться только при переполнении. Тем не менее таймер сбрасывается отсчитывается 2 минуты и прерывание. То есть ведёт себя так, как будто первой загрузки не было. Кто сталкивался и как бороться? из документации The value in RTCMOD is loaded to the shadow register under two conditions: 1. When the counter reaches the value in the shadow register, which also triggers an overflow signal and clears the counter value. 2. When a software reset is triggered by software writing logic 1 to the RTCSR bit in the RTCCTL register. Because the shadow register always updates its value from RTCMOD, software must set RTCMOD before the hardware overflow occurs. Using the software reset lets software immediately set the target modulo value into shadow register without waiting for the next overflow. If the value in RTCMOD is not updated when the hardware overflow occurs, the shadow register fetches the previous modulo value stored in RTCMOD. If RTCMOD is changed multiple times before the overflow, only the last value is loaded to the shadow register. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба Короче хомут нашёл. Я ставил задержку, там где написано "софтовая задержка" Но написал её типа while(RTCCNT<2); Но не учёл что сброс таймера может не пройти. Судя по всему он и не проходит. То есть задержку лучше поставить типа for(int i=0;i<5;i++) RTCNT; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться