Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программный сброс pic 32 
V
    Опции темы
ОВиталий
Дата 28.8.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



привет всем!

в даташите не нашел команды reset.
подскажите, кто знает как сбросить pic32 программно.
PM MAIL   Вверх
Mazzi
Дата 28.8.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Нужно сделать переход по вектору сброса.

что-то вроде:
Код

...........
     JMP   RESET_VECTOR;
...........



--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
ОВиталий
Дата 28.8.2009, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



Цитата

Код

...........
     JMP   RESET_VECTOR;
...........



и все?а что в том векторе что-то прописывать?

Добавлено через 5 минут и 16 секунд
не знает сишный компилятор такого вектора...

Добавлено через 8 минут и 46 секунд
мысль вашу понял, буду ее развивать! спасибо за совет!
PM MAIL   Вверх
ОВиталий
Дата 28.8.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



#define _CORE_TIMER_VECTOR                       0  

как думаете,это и есть вектор сброса?
PM MAIL   Вверх
Mazzi
Дата 28.8.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Цитата(ОВиталий @ 28.8.2009,  13:37)
#define _CORE_TIMER_VECTOR                       0  

как думаете,это и есть вектор сброса?

Я думаю это вектор прерывания от таймера, хотя не уверен. Посмотрите документацию на ваш контроллер, там должно быть указано с какого адреса начинается выполнение программы по сбросу.
Чаще всего это адрес равен нулю, хотя бывают и исключения.
На этот адрес вам и нужно перейти с помощью безусловного перехода. Это будет полноценный сброс.


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
UniBomb
Дата 28.8.2009, 20:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(Mazzi @  28.8.2009,  15:06 Найти цитируемый пост)
На этот адрес вам и нужно перейти с помощью безусловного перехода. Это будет полноценный сброс.

Нет, это не будет полноценный сброс...

Простите что я (аврщик) влазаю в эту замечательную дискуссию, но я в своём устройстве когда то тоже так делал программный сброс. Столкнулся я тогда с небольшими глюками, типа программа в определённые моменты ведёт себя неправильно, иногда не вызывались нужные функции и т.д. Посему истинно правильный программный сброс - включить сторожевой таймер и уйти в бесконечный цикл. Вот после сброса по срабатыванию от сторожевого таймера всё работало как часы.


--------------------
PM MAIL ICQ Skype   Вверх
Mazzi
Дата 31.8.2009, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Цитата(UniBomb @ 28.8.2009,  20:11)
Нет, это не будет полноценный сброс...

Да, пожалуй вы правы. Помимо программного сброса, там ещё значения разных регистров могут аппаратно сбрасываться. Мой вариант годится для сброса только программы.

Помимо сторожевого таймера можно ещё соединить вывод сброса с выводом ввода/вывода, и в случае необходимости дёргать им за вывод сброса.
 



--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
UniBomb
Дата 31.8.2009, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(Mazzi @  31.8.2009,  08:27 Найти цитируемый пост)
Мой вариант годится для сброса только программы.

Моё такое мнение, что в подобных системах сам мк и его программа связаны между собой намного теснее, чем скажем в компютерах. Просто сброс программы не имеет смысла и даже больше - он (сброс этот) даже вредит ей (программе). Связано это с большим числом факторов, будь то:
  •  Как уже было сказанно - в памяти может хранится чёрте-что. И если в программе есть какие либо сравнения до вычисления сравнимых величин (например идёт проверка на первый запуск функции или что то подобное), то логика программы летит к чертям.
  •  Действующие прерывания не запрещены и соответсвенно могут быть вызваны во время ре-инициализации перифирии.
  •  Ре-инициализация переферии до её остановки чревата глюками.
  •  Надо ещё сделать ручную очистку памяти
  •  и т.д. и т.п.

Если соединения ножки с выводом ресета тоже не всё гладко - в случае наличия кнопки сброса надо будет встремлять дополнительные элементы, дабы не вызвать КЗ в случае если скажем кнопка нажата, а на выводе сигнал установлен в "1". Да и потом подобная схема ещё не гарантирует требуемую длительность импульса сброса - после того, как на этой ножке появился "0" мк уходит в ресет и тут эта ножка переходит в третье состояние.  Тут признаться я не знаю что будет, но скорее всего такое срабаотывание не может быть стабильным.

Посему единственно верный способ - использовать сторожевой таймер, который кстате говоря и создан для этого. В этом случае не надо ничего дополнительного мутить ни программно, ни аппаратно.


--------------------
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1411 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.