реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> сбой в работе основного генератора AT91SAM7, прерывание по неисправности MainOscillator
Terrabyte
сообщение Mar 13 2008, 09:07
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



У меня такой вопрос,
можно ли сделать переход в препывание - по неисправности основного генератора, - при этом попытаться снова запустить тактирование.. а в случае сбоя - предусмотреть определённые действия..
если можно то как это сделать, как настроить такое прерывание.. ?
в msp430 такую защиту я делал всегда, в каждом устройстве, а в ARM7 - ???

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

у меня последняя документация (от 03-Dec-07) , в ней нарисованы ещё какие-то 2 бита в регистрах настройки прерываний PMC - бит 5: UOSCS и бит 6: LOCKU , вот, но что это за биты ничё не написано...
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 13 2008, 12:13
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Terrabyte @ Mar 13 2008, 11:07) *
хорошо бы было иметь возможность перейти в обраб. прер-я по сбросу бит: MOSCS или MCKRDY или LOCK регистра PMC_SR , но почему-то нельзя настроить internal прерывание по спаду или по низкому уровню - ???

А в основном цикле программы нельзя мониторить этот флажек?
Да и смысла особого нет, все же проц не с микропотреблением, срыв основного генератора мало вероятен
Go to the top of the page
 
+Quote Post
Terrabyte
сообщение Mar 13 2008, 12:46
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



всё же вероятность есть, например, стоит дотронуться пинцетом до pina XIN, - как тактирование прекратиться - и следовательно MCU перейдет на SCLK.. , тогда, чтобы возобновить работу, нужно снова перезап. PLL ..
да, можно мониторить эти биты в осн. программе, согласен, просто я думал можно это как-ниб. по цивильней сделать.
Но я уже почти решил этот вопрос - запускаю WDT ! и вкл. прерывание от него (без reset MCU), а в прерывании уже смотрю что стряслось..
Go to the top of the page
 
+Quote Post
Terrabyte
сообщение Mar 14 2008, 06:58
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



и всё же,
может кто-нибудь скажет - что это за биты - UOSCS, LOCKU , в регистрах PMC_IER, PMC_IDR, PMC_SR , пятый и шестой -? за что они отвечают ? , негде не нашёл описания !
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 14 2008, 07:18
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Terrabyte @ Mar 13 2008, 12:07) *
у меня последняя документация (от 03-Dec-07) , в ней нарисованы ещё какие-то 2 бита в регистрах настройки прерываний PMC - бит 5: UOSCS и бит 6: LOCKU , вот, но что это за биты ничё не написано...

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

В FAQ'ах и на форумах эти биты не упоминаются, в последних описаниях других семейств их тоже нет. Можно, конечно, написать в суппорт или исследовать их поведение самостоятельно, но это, по-моему, пустая трата времени - как появились, так и исчезнут в один прекрасный день.
Go to the top of the page
 
+Quote Post
Terrabyte
сообщение Mar 14 2008, 07:45
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



исчезнунт опять, ха ! тогда это будет действительно юмор,
попытаюсь всё таки посмотреть их поведение..., было бы не плохо. если б они
были инверсией MOSCS и LOCK..
Go to the top of the page
 
+Quote Post
Terrabyte
сообщение Mar 17 2008, 10:06
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



Здравствуйте господа!
У меня опять проблема,
при срабатывании 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
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 17 2008, 10:31
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(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.
Go to the top of the page
 
+Quote Post
Terrabyte
сообщение Mar 17 2008, 13:15
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



- проверил не раз, - "затыкаю" 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 , как и положено,

как же всё-таки отследить остановку основного тактирования ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 17 2008, 13:23
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата
как же всё-таки отследить остановку основного тактирования ?
Однако. В голову приходит только совсем ломовой способ: отслеживать с помощью какой-нибудь периферии с тактированием от SLCK (RTT, например).

А есть ли практический смысл в его отслеживании? ИМХО, или генератор запустится самостоятельно, или ему уже ничего не поможет.
Go to the top of the page
 
+Quote Post
Terrabyte
сообщение Jan 6 2014, 10:29
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 124
Регистрация: 2-01-07
Из: Russia
Пользователь №: 24 042



вопрос был решен. Извиняюсь за некорректные сообщения.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th July 2025 - 10:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01434 секунд с 7
ELECTRONIX ©2004-2016