Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: вопрос про ресет
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Sergei_K
У меня вопрос: как корректно сбросить перриферию при помощи Reset Controller?

Я делаю сброс так:
pRSTC->RSTC_RCR = AT91C_RSTC_PERRST |
AT91C_RSTC_KEY_PASS;

Однако после выполнения этой команды программа подвисает пока не производится внешний сброс..
aaarrr
Встречный вопрос: а зачем это нужно?

Прерывания запрещены? С remap'ом как обстоят дела?
Сергей Борщ
Цитата(Sergei_K @ Dec 5 2007, 13:45) *
Однако после выполнения этой команды программа подвисает пока не производится внешний сброс..
Ага, тоже наступал. Надо после этой команды дождаться сброса флага SRCMP.
Sergei_K
Цитата(aaarrr @ Dec 5 2007, 18:06) *
Встречный вопрос: а зачем это нужно?


Интересный вопрос.. smile.gif Ну если уж вам так интересно: при работе с Timer/Counter используется функция выставления на ноге TIOA высокого, либо низкого уровня при достижении счетчиком значений, прописанных в регистры RA, RC (то есть переключение уровней).. Так вот, в некоторые моменты на данной ноге остаются нежелательные уровни, поэтому перед прописыванием очередных значений в регистры RA и RC хотелось бы сбрасывать Таймер (чтобы на TIOA был дефолтный уровень).. Команда SWTRG: Software Trigger Command сбрасывает только значение регистра CV и не влияет на TIOA.. Поэтому не вижу другой альтернативы, кроме как сбрасывать перриферию..

Цитата(aaarrr @ Dec 5 2007, 18:06) *
Прерывания запрещены? С remap'ом как обстоят дела?


Прерывания запрещать пробовал.. эффекта нет.. Ремап не делал..

Цитата
Ага, тоже наступал. Надо после этой команды дождаться сброса флага SRCMP


попробовал, результат тот же.. Дожидаюсь флага SRCMP следующим образом:

pRSTC->RSTC_RCR = AT91C_RSTC_PERRST |
AT91C_RSTC_KEY_PASS;

while ((pRSTC->RSTC_RSR & AT91C_RSTC_SRCMP) != 0);
Сергей Борщ
Цитата(Sergei_K @ Dec 5 2007, 15:32) *
попробовал, результат тот же..
У меня сбрасывалось... Учитываете, что настройки pll тоже сбрасываются? Может оно у вас работает, но мееедленно?
Цитата(Sergei_K @ Dec 5 2007, 15:32) *
Команда SWTRG: Software Trigger Command сбрасывает только значение регистра CV и не влияет на TIOA..
Судя по даташиту, за реакцию TIOA на Sofware Trigger влияет значение битов ASWTRG. Не пробовал, но в эррате противопоказаний нет.
Sergei_K
Цитата(Сергей Борщ @ Dec 5 2007, 19:54) *
У меня сбрасывалось... Учитываете, что настройки pll тоже сбрасываются? Может оно у вас работает, но мееедленно?


вот это возможно.. при первой возможности проверю..

Цитата(Сергей Борщ @ Dec 5 2007, 19:54) *
Судя по даташиту, за реакцию TIOA на Sofware Trigger влияет значение битов ASWTRG. Не пробовал, но в эррате противопоказаний нет.


а вот за это вам огромное спасибо smile.gif Этот бит я проморгал.. С ним все заработало как надо, так что вопрос со сбросом перриферии откладывается до лучших времен.. Тем более, что конструкция:

pRSTC->RSTC_RCR = AT91C_RSTC_PROCRST |
AT91C_RSTC_PERRST |
AT91C_RSTC_KEY_PASS;

в принципе работает и пока устраивает..
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.