Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: сбой в работе основного генератора AT91SAM7
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Terrabyte
У меня такой вопрос,
можно ли сделать переход в препывание - по неисправности основного генератора, - при этом попытаться снова запустить тактирование.. а в случае сбоя - предусмотреть определённые действия..
если можно то как это сделать, как настроить такое прерывание.. ?
в msp430 такую защиту я делал всегда, в каждом устройстве, а в ARM7 - ???

хорошо бы было иметь возможность перейти в обраб. прер-я по сбросу бит: MOSCS или MCKRDY или LOCK регистра PMC_SR , но почему-то нельзя настроить internal прерывание по спаду или по низкому уровню - ???

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

А в основном цикле программы нельзя мониторить этот флажек?
Да и смысла особого нет, все же проц не с микропотреблением, срыв основного генератора мало вероятен
Terrabyte
всё же вероятность есть, например, стоит дотронуться пинцетом до pina XIN, - как тактирование прекратиться - и следовательно MCU перейдет на SCLK.. , тогда, чтобы возобновить работу, нужно снова перезап. PLL ..
да, можно мониторить эти биты в осн. программе, согласен, просто я думал можно это как-ниб. по цивильней сделать.
Но я уже почти решил этот вопрос - запускаю WDT ! и вкл. прерывание от него (без reset MCU), а в прерывании уже смотрю что стряслось..
Terrabyte
и всё же,
может кто-нибудь скажет - что это за биты - UOSCS, LOCKU , в регистрах PMC_IER, PMC_IDR, PMC_SR , пятый и шестой -? за что они отвечают ? , негде не нашёл описания !
aaarrr
Цитата(Terrabyte @ Mar 13 2008, 12:07) *
у меня последняя документация (от 03-Dec-07) , в ней нарисованы ещё какие-то 2 бита в регистрах настройки прерываний PMC - бит 5: UOSCS и бит 6: LOCKU , вот, но что это за биты ничё не написано...

Странно: раньше Атмел только убирал описания всяких вредных битов из регистров, а тут вдруг добавил smile.gif

В FAQ'ах и на форумах эти биты не упоминаются, в последних описаниях других семейств их тоже нет. Можно, конечно, написать в суппорт или исследовать их поведение самостоятельно, но это, по-моему, пустая трата времени - как появились, так и исчезнут в один прекрасный день.
Terrabyte
исчезнунт опять, ха ! тогда это будет действительно юмор,
попытаюсь всё таки посмотреть их поведение..., было бы не плохо. если б они
были инверсией MOSCS и LOCK..
Terrabyte
Здравствуйте господа!
У меня опять проблема,
при срабатывании 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
Цитата(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
- проверил не раз, - "затыкаю" 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
Цитата
как же всё-таки отследить остановку основного тактирования ?
Однако. В голову приходит только совсем ломовой способ: отслеживать с помощью какой-нибудь периферии с тактированием от SLCK (RTT, например).

А есть ли практический смысл в его отслеживании? ИМХО, или генератор запустится самостоятельно, или ему уже ничего не поможет.
Terrabyte
вопрос был решен. Извиняюсь за некорректные сообщения.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.