Какое состояние Ram при включении и при сбросе через mclr

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Klassik
Родился
Сообщения: 5
Зарегистрирован: Пт авг 07, 2015 14:30:08

Какое состояние Ram при включении и при сбросе через mclr

Сообщение Klassik »

Добрый вечер всем участникам, возник такой вопрос: при включении контроллера, происходит сброс ram "железно" во всех регистрах в 00 или у вас бывали случаи, что в ram висит мусор? Просто есть подозрения, что есть мусор в ram при включении...
Буду рад Вас услышать.
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Какое состояние Ram при включении и при сбросе через mcl

Сообщение otest »

мусор
Реклама
Аватара пользователя
valentinovich
Электрический кот
Сообщения: 1004
Зарегистрирован: Ср окт 04, 2017 20:47:40

Re: Какое состояние Ram при включении и при сбросе через mcl

Сообщение valentinovich »

Пардон, а зачем тов. Klassik понадобилось искать чего в RAM после включения МК?
Ведь (из знаний того, что есть в МК и что для чего предназначено) явно следует как использовать RAM.
Правда, если вместо осмысления даташита искать: а что там за пределами адресного пространства, чего в ячейке, в которую я ничего не клал или будет ли работать МК без подачи питания и т. д., то "исследования" можно продолжать. :solder:
Аватара пользователя
Siarzhuk
Потрогал лапой паяльник
Сообщения: 353
Зарегистрирован: Вс янв 19, 2014 22:41:55

Re: Какое состояние Ram при включении и при сбросе через mcl

Сообщение Siarzhuk »

[uquote="Klassik",url="/forum/viewtopic.php?p=3218481#p3218481"]происходит сброс ram "железно" во всех регистрах в 00 или у вас бывали случаи, что в ram висит мусор?[/uquote]
Предположим, что вы работаете с PIC18F14K50 и имеете ввиду его набортный SRAM - тогда заглянув в даташит http://ww1.microchip.com/downloads/en/D ... 01350F.pdf и дочитав до раздела "3.3 Data Memory Organization" можно заметить, что область эта называется GPR и как написано в разделе

3.3.4 GENERAL PURPOSE REGISTER FILE
PIC18 devices may have banked memory in the GPR
area. This is data RAM, which is available for use by all
instructions. GPRs start at the bottom of Bank 0
(address 000h) and grow upwards towards the bottom of
the SFR area. GPRs are not initialized by a Power-on
Reset and are unchanged on all other Resets
.

Но если вы пишете на С то до момента вызова вашей реализации main() все глобальные инициализированные переменные уже будут иметь заданные в исходном коде значения, а неинициализированные глобальные переменные - будут занулены. Пространство стека, впрочем, остаётся непроинициализированным - т.е. локальные переменные всё-же будут иметь неопределённые значения - но у них судьба такая. Если-же наш сферический С-ишник додумается организовать кучу и будет выкалывать из неё кусочки malloc-ом - в них тоже будет мусор. Ну а для ассемблерщика, как уже ответили, всё проще - 100% мусора исключая область занятую SFR. А правила инициализации SFR-ов нужно глядеть в их [регистров] личных делах.
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)
Реклама
Эиком - электронные компоненты и радиодетали
Klassik
Родился
Сообщения: 5
Зарегистрирован: Пт авг 07, 2015 14:30:08

Re: Какое состояние Ram при включении и при сбросе через mcl

Сообщение Klassik »

Просто у меня в программе используются битовые флаги и через некоторое время программа зависает, пишу на ассемблере и не полный нуб в программировании. Регистры в ram используются как 8 битовые флаги. И если значение в ram будет фиг знает что, значит программа улетит не туда куда надо. Наверное самое оптимальное будет при запуске мк чистить ram через косвенную адресацию, это так, мысли вслух....
Реклама
Аватара пользователя
Flasher
Мудрый кот
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Re: Какое состояние Ram при включении и при сбросе через mcl

Сообщение Flasher »

Ну если ты туда пишешь что-то перед прочтением, то какая разница что там было ДО?
Реклама
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Какое состояние Ram при включении и при сбросе через mcl

Сообщение Albert_V »

Лично я, давным-давно взял за правило, при старте программы, полностью очищать "оперативку".
И самому спокойнее и, один фиг, всё равно время девать некуда, поскольку приходится ещё ждать до начала инициализации разной периферии, подключенной к контроллеру.
А, образно говоря, включите вы светодиод через 1µS или 1mS после подачи питания - никто не заметит...
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Re: Какое состояние Ram при включении и при сбросе через mcl

Сообщение -=Vovka=- »

[uquote="Klassik",url="/forum/viewtopic.php?p=3218670#p3218670"]Наверное самое оптимальное будет при запуске мк чистить ram через косвенную адресацию, это так, мысли вслух....[/uquote]
Это правило программирования: объявил переменную - инициализируй!
Аватара пользователя
Родэрик
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы
Контактная информация:

Re: Какое состояние Ram при включении и при сбросе через mcl

Сообщение Родэрик »

[uquote="Albert_V",url="/forum/viewtopic.php?p=3218776#p3218776"]... всё равно время девать некуда, поскольку приходится ещё ждать до начала инициализации разной периферии, подключенной к контроллеру...[/uquote]

Я так понял, что пока там что-то "инициализируется" идёт чистка ram. Но если идёт эта чистка, то ничего собственно происходить больше и не может. Так что же подразумевается под словами "приходится ждать"?

Кстати, я как-то проводил эксперимент. Не очищая оперативу, сразу выводил текущие значения нескольких байтов поразрядно в зуммер. В итоге всегда показывало FF.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Какое состояние Ram при включении и при сбросе через mcl

Сообщение Albert_V »

Я о том что, к примеру, если у вас в системе индикатор на HD44780, SI4xxx, CMX7xxx и т.д., вы не имеете право делать их INIT сразу (мгновенно) после подачи питания.
Для каждого из них (в pdf) указано минимальное время между подачей питания и начала работы с ними.
Как правило, это время более 100mS и только по истечении этого времени можно приступать к их инициализации.
До истечении этого времени можно делать что угодно, но изделие не будет полностью рабочим.
За это время можно очистить память, настроить внутреннюю периферию контроллера и т.д..
В программе я делаю отдельным битом (в битовом регистре) указание на то, что вся периферия проинициализирована и разрешается выполнение основного алгоритма работы программы.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25261
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Какое состояние Ram при включении и при сбросе через mcl

Сообщение КРАМ »

В настройках ассемблера есть опция инициализации корректно объявленных переменных нулем. При ее активации ассемблер сдвигает код пользователя и вставляет оную инициализацию. Не знаю есть ли эта опция у MPASM, а у ASM30/ASM16 имеется. Причем в MPLAB X она по дефолту включена.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15572
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Какое состояние Ram при включении и при сбросе через mcl

Сообщение BOB51 »

[uquote="Klassik",url="/forum/viewtopic.php?p=3218670#p3218670"]Просто у меня в программе используются битовые флаги и через некоторое время программа зависает, пишу на ассемблере и не полный нуб в программировании. Регистры в ram используются как 8 битовые флаги. И если значение в ram будет фиг знает что, значит программа улетит не туда куда надо. Наверное самое оптимальное будет при запуске мк чистить ram через косвенную адресацию, это так, мысли вслух....[/uquote]

Для ассемблера стандартна процедура предварительной очистки/загрузки критичных значений для ОЗУ.
Одновременно должна быть предусмотрена корректная переинициализация системы при условии возникновения аварийных сбоев (не обязательно при соответствующем сигнале аппаратного сброса).
8)
Ответить

Вернуться в «PIC»