Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

прочитал такое утверждение, что при сбросе все РВВ устанавливаются в ноль, а вот РОН могут принимать произвольные значения
правда ли это и с чем это связано ?
Tell Me The Truth
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

правда ли это и с чем это связано ?
Ответил же выше: периферия инициализируется заново (РВВ тоже периферия), а РОН и память - нет. То есть там останутся значения, которые были ДО сброса, или мусор, если ДО сброса было выключенное состояние (т.е. только что подали питание).
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

ploop писал(а):или мусор, если ДО сброса было выключенное состояние (т.е. только что подали питание).
а почему там будет мусор ? ведь привыключенном МК данные в ОЗП теряются.
Tell Me The Truth
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Теряются, если МК выключено на достаточно долгое время, порядка единиц или десятков секунд, точно не проверял.
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

ведь привыключенном МК данные в ОЗП теряются.
А то такое, по твоему, "потерять данные"? Что такое "данные"?
Представь битовую ячейку. В ней всегда может быть только 0 или 1. Вот в ней есть какое-то значение. Ответь, в ней есть данные или нет? 0 - это данные? А 1 - это данные? А что значит "удалить данные"? :)

Есть только один ответ на этот вопрос: данные это то, что мы считаем актуальным состоянием ячейки на текущий момент. Другими словами, если мы сами записали туда состояние (программно или железно). Иначе там мусор, т.е. случайное состояние.

В конкретных реализациях памяти после включения питания могут быть одни нули, или одни единицы, но доверять этому нельзя. И если заводите переменную в памяти, то её надо обязательно инициализировать, то есть записать какое-то значение, например ноль. Инициализировать можно неявно, например, при создании переменной-счетчика туда, согласно алгоритму, обязательно запишется начальное значение, а только потом будет проверяться.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

я понимаю это так
допустим у меня есть несколько переменных temp, temp1, temp2
в них должны хранится некие числа от 0 до 255
в процессе выполнения проги в них ранятся некие значения
потом я вырубил питание
моя ОЗП обнулилась
в выще указаннях переменных, по всем законам жанра, должен быть 0
где же тогда ошибка в моих суждениях ? :dont_know:
Tell Me The Truth
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Ошибка вот: моя ОЗП обнулилась
Производитель не гарантирует, что она обнулится. При включение питания любая помеха может привести ячейку в рандомное состояние, а потом уже это значение зафиксируется, когда система войдёт в рабочий режим.

А вот с РВВ, регистрами конфигурации всяких счетчиков, АЦП и прочего, производитель гарантирует, что после сброса и выхода системы на рабочий режим произойдёт очистка этих регистров.
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Почему обнулилась? Почему бы не заполнилась единицами скажем? Не инициализирована значит не было записи конкретных данных, а посему - что там сидит - бог его знает. У программиста, как известно, на прикроватной тумбочке должны стоять два стакана - один с водой и второй пустой: первый на случай, если он захочет попить, а другой - если не захочет.
Docendo discimus
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

FreshMan писал(а):где же тогда ошибка в моих суждениях?
РОН — это статическое ОЗУ (SRAM). Его ячейка (бит) чем-то похожа на мультивибратор:
Изображение
может быть устойчива в двух дискретных состояниях.
Поэтому в какое именно состояние она опрокинется при подаче питания — ХЗ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

ploop писал(а):А вот с РВВ, регистрами конфигурации всяких счетчиков, АЦП и прочего, производитель гарантирует, что после сброса и выхода системы на рабочий режим произойдёт очистка этих регистров.
это какая то сказка :))
с ваших слов выходит так: в случае с РОН мы не даем гарантии на обнуление, а с РВВ мы ее даем
но как же так, ведь и РОН и РВВ принадлежат к ОЗУ
но РВВ мы обнуляем жостко, а РОН шиш с маслом
как сие возможно ? :dont_know:
Изображение
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

FreshMan писал(а):как сие возможно ?
Сделано блиать аппаратно обнуление РВВ при сбросе.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

а че тогда не сделать аппваратно сброс и для РОН ?
ведь тогда проблем бы в мире поубавилось :wink:
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

FreshMan писал(а):а че тогда не сделать аппваратно сброс и для РОН ?
Нахуа?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

чтобы там небыло мусора
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

А тебя как-то ебёт волнует, что там мусор? :) Заслал туда своё значение, мусор затёрся.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

Gudd-Head, русокото облико морале ! :))
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Не, Свежий, ну скажи, чем тебе мешает мусор в ОЗУ и РОН?
Единственное что они могли сделать во всех АВРках, это чтобы стек после ресета настраивался сам.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Да уж. FreshMan мертвого кота вопросами за#@$т! :))) Ржал с последних ответов Gudd-Head'а))) Молодец!
РВВ выходят наружу микроконтроллера, поэтому переводятся в самое безопасное для остальной схемы состояние - высокоимпедансное. Остальное - забота программиста.
Ставим плюсы: )
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

FreshMan, ты просто не в курсе, что этому эффекту можно найти множество применений, например управление девайсом кнопкой на RESET'е :)

И ещё открою страшный секрет: удаляя файл с компа на жёстком диске ничего физически не удаляется, файл лежит цел целёхонек, только место помечено как свободное :)
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

FreshMan писал(а): но как же так, ведь и РОН и РВВ принадлежат к ОЗУ
но РВВ мы обнуляем жостко, а РОН шиш с маслом
как сие возможно ? :dont_know:
РОН и РВВ не принадлежат к ОЗУ. Они расположены в отдельных регистрах, но могут быть адресованы как часть ОЗУ. За счет этого и достигается быстродействие 1MISP/MHz. Насчет безопасности ibiza11 верно сказал, тем более что в реальности это наверняка общая асинхронная линия RESET. А занулять память возможно только по одной ячейке. Можно прикинуть сколько это займет по времени, особенно учитывая что на практике никогда не нужно.
Единственное что они могли сделать во всех АВРках, это чтобы стек после ресета настраивался сам.
Не стоит. Во-первых в разных RTOS для каждой задачи используется свой стек со своим адресом, во-вторых для некоторых применений имеет смысл адресовать стек с 0x00FF, для простоты адресации ОЗУ (XH=0x01; XL=адрес).
СпойлерРазумеется это можно делать только если эти адреса не заняты под системные нужды. Ну там, m8, где ОЗУ фактически начинается с 0x0060, если не ошибаюсь.
Ответить

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