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

 
 
 
Reply to this topicStart new topic
> Инициализация МК
ingord
сообщение Nov 10 2007, 02:37
Сообщение #1


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

Группа: Свой
Сообщений: 86
Регистрация: 18-09-07
Пользователь №: 30 627



Подскажите, пожалуйста, как правильно инициализировать МК. Раньше я записывал в нужные мне регистры то, что нужно. Все работало. Сейчас решил сделать "по-правильному" - через формирователь начального кода в ICC, CV. И тот, и другой выдает кучу записей типа "регистр = 0х00". Причем набор регистров у разных компиляторов разный. Так вот, обязательно ли записывать нули в неиспользуемые регистры? При включении питания или сбросе там нули или случайный "мусор"?
Go to the top of the page
 
+Quote Post
war4one
сообщение Nov 10 2007, 04:09
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 16-07-05
Из: г. Уфа
Пользователь №: 6 851



Цитата(ingord @ Nov 10 2007, 05:37) *
При включении питания или сбросе там нули или случайный "мусор"?


При включении питания в регистрах записана информация в соответствии с пунктом Initial Value (посмотрите в datasheet, строчка сразу после описания битов регистра).


--------------------
Электронные устройства Open Hardware
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 10 2007, 09:50
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(ingord @ Nov 10 2007, 04:37) *
Подскажите, пожалуйста, как правильно инициализировать МК.
Если выполнение программы начинается со сброса контроллера, то можно полагаться на значения по умолчанию. С другой стороны, если какая-то периферия используется, то лучше явно описать инициализацию всех нужных для этой периферии регистров - при чтении программы сразу будет бросаться в глаза что этот регистр проинициализирован конкретными значениями, а не забыт. Когда память будет кончаться, такие лишние строчки можно будет закомментировать, приписав комментарий, что регистр по умолчанию уже содержит эти значения. Причем по закомментированной строке будет видно - какие именно и не придется лезть в даташит.

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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


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


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