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

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

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

Сообщение FreshMan »

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

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

Сообщение ploop »

правда ли это и с чем это связано ?

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

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

Сообщение FreshMan »

ploop писал(а):или мусор, если ДО сброса было выключенное состояние (т.е. только что подали питание).

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

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

Сообщение COKPOWEHEU »

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

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

Сообщение ploop »

ведь привыключенном МК данные в ОЗП теряются.

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

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

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

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

Сообщение FreshMan »

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

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

Сообщение ploop »

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

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

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

Сообщение pyzhman »

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

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

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

FreshMan писал(а):где же тогда ошибка в моих суждениях?

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

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

Сообщение FreshMan »

ploop писал(а):А вот с РВВ, регистрами конфигурации всяких счетчиков, АЦП и прочего, производитель гарантирует, что после сброса и выхода системы на рабочий режим произойдёт очистка этих регистров.

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

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

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

FreshMan писал(а):как сие возможно ?

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

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

Сообщение FreshMan »

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

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

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

FreshMan писал(а):а че тогда не сделать аппваратно сброс и для РОН ?

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

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

Сообщение FreshMan »

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

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

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

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

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

Сообщение FreshMan »

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

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

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

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

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

Сообщение ibiza11 »

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

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

Сообщение ploop »

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

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

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

Сообщение COKPOWEHEU »

FreshMan писал(а):но как же так, ведь и РОН и РВВ принадлежат к ОЗУ
но РВВ мы обнуляем жостко, а РОН шиш с маслом
как сие возможно ? :dont_know:

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

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