Например TDA7294

Форум РадиоКот • Просмотр темы - Вопрос по RESET
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс дек 28, 2025 09:52:43

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Вопрос по RESET
СообщениеДобавлено: Ср июн 08, 2022 11:42:10 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Всем доброго времени суток! Я новичок, потихоньку познаю микроконтроллер stm32, возник вопрос по таблицы, что описывается в столбике "Main function(3) (after reset)" ? (фото приложил). Как я понял это режимы выводов после сброса. Но как происходит сброс? По моему пониманию это осуществляется следующим образом - программа работает в цикле while, при нажатии кнопки reset, программа начинает работать с самого начала, то-есть с начала функции main, правильно ли я понимаю? 


Вложения:
11.png [47.26 KiB]
Скачиваний: 83
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по RESET
СообщениеДобавлено: Ср июн 08, 2022 12:04:09 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24630
Откуда: Московская область, Фрязино
Рейтинг сообщения: 1
У контроллера есть референсный мануал (кроме даташита) и в нем ресету (вместе с доменом осциллятора) отведен целый параграф. Вот там и рассмотрены все варианты формирования сброса контроллера. А так да, сброс - это установка дефолтных значений регистров и обнуление программного счетчика.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по RESET
СообщениеДобавлено: Ср июн 08, 2022 12:07:37 
Потрогал лапой паяльник
Аватар пользователя

Карма: -6
Рейтинг сообщений: -2
Зарегистрирован: Вс апр 03, 2022 07:01:29
Сообщений: 362
Рейтинг сообщения: 1
Сброс происходит:
- при подаче питания на микроконтроллер и выполнения POR (Power On Reset)
- при подаче сигнала низкого уровня на вход NRST
- в остальных случаях: по сигналу вачдогов, по сигналу детектора пониженного напряжения, по выходу из режима Standby, по программному сигналу.
В общем, суть в том, что микроконтроллер после выполнения процедуры сброса приходит в первоначальное состояние - все регистры устанавливаются в состояние, помеченное как Reset State, счетчик программ устанавливается на начало адресов памяти программ, выбранной для загрузки (например, на 0x0800'0000). Выбор режима загрузки и адреса старта производится пинами Boot0, Boot1 или через биты регистра опций, если таковые есть.. В начале адресов загрузки должна быть размещена таблица векторов - по сути это просто таблица адресов перехода, куда обращается микроконтроллер, когда ему надо, в частности, при сбросе. Из нее микроконтроллер берет адрес вершины стека (как правило последний адрес SRAM) и адрес, по которому будет расположена первая исполняемая инструкция - Reset Vector. Счетчик программ устанавливается на этот адрес и начинается работа, выполняет то, что дальше уж было написано.
До входа в main() там выполняется довольно много чего, на что обычно не обращают внимания. В принципе, всё это - произвольно и в разных реализациях старта-файлов может написано по-разному. Посмотрите файл startup_stm32...., чаще всего он ассемблерный. В нем ищите строчку Reset_Handler:
Вот именно оттуда и начнёт работать микроконтроллер после сброса. Как правило, там выполняется подготовка переменных для Си, затем запускается функция SystemInit (находится в файле system_stm32...), и лишь после неё будет запущена main.
Состав функции SystemInit достаточно условный и в принципе то произвольный, но чаще всего там выполняется настройка частот тактирования и режимов питания.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по RESET
СообщениеДобавлено: Ср июн 08, 2022 12:38:52 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
НовыйДень писал(а):
Сброс происходит:
- при подаче питания на микроконтроллер и выполнения POR (Power On Reset)
- при подаче сигнала низкого уровня на вход NRST
- в остальных случаях: по сигналу вачдогов, по сигналу детектора пониженного напряжения, по выходу из режима Standby, по программному сигналу.
В общем, суть в том, что микроконтроллер после выполнения процедуры сброса приходит в первоначальное состояние - все регистры устанавливаются в состояние, помеченное как Reset State, счетчик программ устанавливается на начало адресов памяти программ, выбранной для загрузки (например, на 0x0800'0000). Выбор режима загрузки и адреса старта производится пинами Boot0, Boot1 или через биты регистра опций, если таковые есть.. В начале адресов загрузки должна быть размещена таблица векторов - по сути это просто таблица адресов перехода, куда обращается микроконтроллер, когда ему надо, в частности, при сбросе. Из нее микроконтроллер берет адрес вершины стека (как правило последний адрес SRAM) и адрес, по которому будет расположена первая исполняемая инструкция - Reset Vector. Счетчик программ устанавливается на этот адрес и начинается работа, выполняет то, что дальше уж было написано.
До входа в main() там выполняется довольно много чего, на что обычно не обращают внимания. В принципе, всё это - произвольно и в разных реализациях старта-файлов может написано по-разному. Посмотрите файл startup_stm32...., чаще всего он ассемблерный. В нем ищите строчку Reset_Handler:
Вот именно оттуда и начнёт работать микроконтроллер после сброса. Как правило, там выполняется подготовка переменных для Си, затем запускается функция SystemInit (находится в файле system_stm32...), и лишь после неё будет запущена main.
Состав функции SystemInit достаточно условный и в принципе то произвольный, но чаще всего там выполняется настройка частот тактирования и режимов питания.

Я, в общем и целом понял, но если абстрактно обьясняться, то в этом столбике(Main function(3) (after reset) ) указаны режимы выводов, которые будут установлены еще дом выполнения main, верно полагаю?


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Вопрос по RESET
СообщениеДобавлено: Ср июн 08, 2022 12:47:30 
Потрогал лапой паяльник
Аватар пользователя

Карма: -6
Рейтинг сообщений: -2
Зарегистрирован: Вс апр 03, 2022 07:01:29
Сообщений: 362
Рейтинг сообщения: 1
Вполне возможно, если до входа в main их настройки не будут изменены в функции SystemInit, о которой я ранее писал


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по RESET
СообщениеДобавлено: Ср июн 08, 2022 13:05:54 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
НовыйДень писал(а):
Вполне возможно, если до входа в main их настройки не будут изменены в функции SystemInit, о которой я ранее писал
Понял, спасибо!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по RESET
СообщениеДобавлено: Вт июн 14, 2022 12:43:22 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 187
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1661
Рейтинг сообщения: 0
в этом столбике(Main function(3) (after reset) ) указаны режимы выводов, которые будут установлены еще дом выполнения main, верно полагаю?
Не обязательно. Это зависит также от состояния BOOT-пинов. Если выбираются режимы, использующие встроенный бутлоадер (см. раздел "Boot configuration" RM, table "Boot modes", line "System memory"), то (в зависимости от того какой бутлоадер активируется) ноги, необходимые коммуникационному интерфейсу бутлоадера, будут также проинициализированы для него.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y