Terrabyte
Mar 13 2008, 09:07
У меня такой вопрос,
можно ли сделать переход в препывание - по неисправности основного генератора, - при этом попытаться снова запустить тактирование.. а в случае сбоя - предусмотреть определённые действия..
если можно то как это сделать, как настроить такое прерывание.. ?
в msp430 такую защиту я делал всегда, в каждом устройстве, а в ARM7 - ???
хорошо бы было иметь возможность перейти в обраб. прер-я по сбросу бит: MOSCS или MCKRDY или LOCK регистра PMC_SR , но почему-то нельзя настроить internal прерывание по спаду или по низкому уровню - ???
у меня последняя документация (от 03-Dec-07) , в ней нарисованы ещё какие-то 2 бита в регистрах настройки прерываний PMC - бит 5: UOSCS и бит 6: LOCKU , вот, но что это за биты ничё не написано...
defunct
Mar 13 2008, 12:13
Цитата(Terrabyte @ Mar 13 2008, 11:07)

хорошо бы было иметь возможность перейти в обраб. прер-я по сбросу бит: MOSCS или MCKRDY или LOCK регистра PMC_SR , но почему-то нельзя настроить internal прерывание по спаду или по низкому уровню - ???
А в основном цикле программы нельзя мониторить этот флажек?
Да и смысла особого нет, все же проц не с микропотреблением, срыв основного генератора мало вероятен
Terrabyte
Mar 13 2008, 12:46
всё же вероятность есть, например, стоит дотронуться пинцетом до pina XIN, - как тактирование прекратиться - и следовательно MCU перейдет на SCLK.. , тогда, чтобы возобновить работу, нужно снова перезап. PLL ..
да, можно мониторить эти биты в осн. программе, согласен, просто я думал можно это как-ниб. по цивильней сделать.
Но я уже почти решил этот вопрос - запускаю WDT ! и вкл. прерывание от него (без reset MCU), а в прерывании уже смотрю что стряслось..
Terrabyte
Mar 14 2008, 06:58
и всё же,
может кто-нибудь скажет - что это за биты - UOSCS, LOCKU , в регистрах PMC_IER, PMC_IDR, PMC_SR , пятый и шестой -? за что они отвечают ? , негде не нашёл описания !
aaarrr
Mar 14 2008, 07:18
Цитата(Terrabyte @ Mar 13 2008, 12:07)

у меня последняя документация (от 03-Dec-07) , в ней нарисованы ещё какие-то 2 бита в регистрах настройки прерываний PMC - бит 5: UOSCS и бит 6: LOCKU , вот, но что это за биты ничё не написано...
Странно: раньше Атмел только убирал описания всяких вредных битов из регистров, а тут вдруг добавил

В FAQ'ах и на форумах эти биты не упоминаются, в последних описаниях других семейств их тоже нет. Можно, конечно, написать в суппорт или исследовать их поведение самостоятельно, но это, по-моему, пустая трата времени - как появились, так и исчезнут в один прекрасный день.
Terrabyte
Mar 14 2008, 07:45
исчезнунт опять, ха ! тогда это будет действительно юмор,
попытаюсь всё таки посмотреть их поведение..., было бы не плохо. если б они
были инверсией MOSCS и LOCK..
Terrabyte
Mar 17 2008, 10:06
Здравствуйте господа!
У меня опять проблема,
при срабатывании Watchdog Timerа, в случае когда остановлен основной генератор (CPU тактируется от SLCK) - не сбрасываются биты в регистре PMC_SR ! - ?
генератор останавливаю простой подтяжкой XIN (pin 62) к GND
*****Вопрос - Как тогда определить, запущен или нет основной генератор ? - получается что биты PMC_SR : MCKRDY, LOCK, MOSCS - не сбрасываются никогда, даже после User Reset (NRST pin detected low) они в единице -?
пробовал Watchdog Timer и по прерыванию и при - reset только ядра
в обоих случаях PMC_SR не сбрасывается вообще никак !
// 1) system interrapt
WDT_p ->WDTC_WDMR = WDFIEN | WDD | _wdt_5sec; // то есть без сброса CPU при срабатывании (has no effect on the resets)
// 2) WDT_p ->WDTC_WDMR = WDRPROC | WDRSTEN | WDD | _wdt_5sec; // Watchdog fault (underflow or error) activates the processor reset
aaarrr
Mar 17 2008, 10:31
Цитата(Terrabyte @ Mar 13 2008, 15:46)

всё же вероятность есть, например, стоит дотронуться пинцетом до pina XIN, - как тактирование прекратиться - и следовательно MCU перейдет на SCLK.. , тогда, чтобы возобновить работу, нужно снова перезап. PLL ..
MCU переходит на SLCK только по reset'у, автоматического переключения нет.
Цитата(Terrabyte @ Mar 17 2008, 13:06)

У меня опять проблема,
при срабатывании Watchdog Timerа, в случае когда остановлен основной генератор (CPU тактируется от SLCK) - не сбрасываются биты в регистре PMC_SR ! - ?
генератор останавливаю простой подтяжкой XIN (pin 62) к GND
Бит MCKRDY регистра PMC_SR сбрасывается при записи PMC_MCKR.
Terrabyte
Mar 17 2008, 13:15
- проверил не раз, - "затыкаю" main генератор, и программа продолжает работать! с частотой прибл. 32кГц, даже помигал светодиодами, находясь в `SYS` прерывании.
но биты PMC не сбрасываются!
аналогично при сбросе по WDT - только ядра процессора, CPU работает на RC генераторе, и этот переход на RC нигде не отображён, PMC_MCKR как был настроен на PLL, так и остался без изменений.
- бит MCKRDY в PMC_SR не сбрасывается при записи PMC_MCKR - почему-то..
- биты MOSCS и LOCK сбрасываются при записи CKGR_MOR -> причем только если MOSCEN=0 (если выключить генератор)
и естественно, я проверил и без эмулятора, что CPU продожает работать (продолжает мигать св. диодами в system_irq ).
если в этом состоянии - убирать подтяжку- тактирование возобновляется! - без повторного программного перезапуска,
и программа продолжает работу на 48МГц, без RESRT-a , как и положено,
как же всё-таки отследить остановку основного тактирования ?
aaarrr
Mar 17 2008, 13:23
Цитата
как же всё-таки отследить остановку основного тактирования ?
Однако. В голову приходит только совсем ломовой способ: отслеживать с помощью какой-нибудь периферии с тактированием от SLCK (RTT, например).
А есть ли практический смысл в его отслеживании? ИМХО, или генератор запустится самостоятельно, или ему уже ничего не поможет.
Terrabyte
Jan 6 2014, 10:29
вопрос был решен. Извиняюсь за некорректные сообщения.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.