EEPROM

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Аватара пользователя
Sasha.32
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пт июл 15, 2011 15:13:01
Откуда: Новосибирск
Контактная информация:

EEPROM

Сообщение Sasha.32 »

Доброго времени суток уважаемые. Можно уточнить один нюанс , я микроконтроллер AT90S2313 изучаю по здешней обучалке, описано практически всё SRAM , код программы я так понял зашивается в PROGRAM FLASH это я на блок схему смотрю из даташита по микрухе, но ведь на блок схеме есть ещё EEPROM а в обучалке чёт не видно про эту память не чего, подскажите как она используется или я что то не допонял ?
Реклама
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: EEPROM

Сообщение SmarTrunk »

Ну в микросхемах AVR программа хранится во Flash-памяти, которая прошивается с программатора (хотя существуют возможности по самопрограммированию, но но это частности). А для хранения пользовательских данных есть EEPROM, куда можно произвольно что-то записывать, и оно будет сохраняться при выключении питания. У EEPROM больше количество циклов перезаписи, чем у FLASH, хотя и ограниченное.

Читать в разных учебниках и даташитах.
Реклама
Аватара пользователя
Sasha.32
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пт июл 15, 2011 15:13:01
Откуда: Новосибирск
Контактная информация:

Re: EEPROM

Сообщение Sasha.32 »

А зачем тогда описанные в обучалке массивы заганяются в программную память если есть EEPROM , или опять чёт не вкуриваю
Аватара пользователя
Airatius
Нашел транзистор. Понюхал.
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань
Контактная информация:

Re: EEPROM

Сообщение Airatius »

Sasha.32 писал(а):А зачем тогда описанные в обучалке массивы заганяются в программную память если есть EEPROM , или опять чёт не вкуриваю
в массивы загоняются чтобы было удобнее работать наверное.
Иногда удобнее иметь один массив, чем десяток разных переменных.

Если Вам необходимо запоминать какие либо данные после выключения устройства - то их загоняют в eeprom контроллера, а при включении - считывают.

Я все таки, чтобы не губить контроллер, предпочел подключать внешнюю - дешевую eeprom (24c02 и т.п.) по i2c шине, все таки, количество циклов перезаписи у МК ограничено, а дешевую память поменять проще и дешевле. Но это не всегда необходимо

используйте библиотеку eeprom.h - там есть все необходимое.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: EEPROM

Сообщение YS »

используйте библиотеку eeprom.h
В обучалке пишут на асме.

***

EEPROM используется тогда, когда надо сохранить что-то, посчитанное/принятое во время работы, в энергонезависимую память (т.е., чтобы не пропало при выключении питания). Во FLASH сам МК писать (простыми средствами) не может. А в EEPROM - пожалуйста, очень удобно, доступ прямо побайтно.

Ресурс EEPROM ограничен, потому как SRAM ее использовать нельзя.

Константы хранят во FLASH, потому что менять мы их не собираемся никогда, а из FLASH читать проще, да и объем у нее больше. А данные в EEPROM можно изменять. Но делать это надо по-возможности реже.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: EEPROM

Сообщение YS »

И да, тему переименуйте, а то закроют.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
Аватара пользователя
Sasha.32
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пт июл 15, 2011 15:13:01
Откуда: Новосибирск
Контактная информация:

Re: По теме обучалки

Сообщение Sasha.32 »

Ну это как посмотреть, может самому микроконтроллеру и проще обращаться за константой к программной памяти FLASH, а вот когда код писать тут у меня ступор возникает по поводу формирования адреса 16-битного для перехода на нулевой элемент массива, и последующее наращивание адресов. то ли дело обращение к SRAM 8-битное, а вот как к EEPROM обратится ещё не пробовал
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: EEPROM

Сообщение SmarTrunk »

Sasha.32
Ну никто не мешает один раз, при включении, переписать константы из FLASH в SRAM, и из SRAM потом их доставать. А еще же можно загружать константы командой LDI, это вообще просто. А в EEPROM... вроде атмеловцы приводят примеры, что можно в ней хранить и константы, но она же может иногда случайно стереться, если есть какой-то программный или аппаратный косяк.
Rokl
Друг Кота
Сообщения: 5232
Зарегистрирован: Пт авг 25, 2006 09:26:19
Откуда: Москва

Re: EEPROM

Сообщение Rokl »

Sasha.32 писал(а):А зачем тогда описанные в обучалке массивы заганяются в программную память если есть EEPROM , или опять чёт не вкуриваю
Тут все дело в архитектуре МК.
Данный МК может выполнять программу из FLASH, но не может её модифицировать. Зато есть RAM, где МК может хранить промежуточные данные, стек и константы(модифицируемые по ходу выполнения основной программы, записаной и выполняемой во FLASH), но не сохраняемые после отключения питания. Для хранения констант после выключения питания предназначена EEPROM. Однако МК не может исполнять программы расположеные ни в ОЗУ, ни в ЕЕPROM.
Получается, что для данного МК EEPROM является неким компромисом, в котором могут сохранятся данные после выключения питания, как во FLASH ПЗУ, но не могут исполнятся команды и программы, как во FLASH ПЗУ.
Аватара пользователя
Sasha.32
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пт июл 15, 2011 15:13:01
Откуда: Новосибирск
Контактная информация:

Re: EEPROM

Сообщение Sasha.32 »

Ну дык в массиве хранятся данные а не команды, это опять по обучалке, для дешифрации семи сегментного индикатора например .db 0b00000110 и для чего их запрятывать во FLASH, когда можно сохранить их в EEPROM. Просто я злюсь на то что не могу до конца понять как формируются 16 битный адрес для FLASH , а к EEPROM я так понимаю при написании кода можно обращаться с помощью 8 бит
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: EEPROM

Сообщение Engineer_Keen »

Sasha.32 писал(а):для дешифрации семи сегментного индикатора например .db 0b00000110 и для чего их запрятывать во FLASH, когда можно сохранить их в EEPROM.
Хотите в EEPROM, сохраняйте в EEPROM. Никто не мешает этого делать.
Sasha.32 писал(а): Просто я злюсь на то что не могу до конца понять как формируются 16 битный адрес для FLASH
Так и формируется... Практически все команды AVR 16-разрядные (все остальные кратны 16), поэтому и константы во флеше выравниваются по 2 байта и всегда начинаются с четного адреса. И если констант записать нечетное количество, то компилятор ругнется и сам их дополнит лишним нулем. Из-за этого механизм доступа к конкретному байту иногда запутывает новичков. Хитрость в том, что метка, после которой идет директива .db на самом деле является не 16-разрядным адресом во флеше, а номером 16-разрядной ячейки, который ровно в 2 раза меньше, поэтому чтобы загрузить конкретную ячейку нужно в регистр Z записывать эту метку умноженную вдвое:

Код: Выделить всё

LDI ZH,High(metka*2)
LDI ZL,Low(metka*2)
LPM R16,Z+
...
...
...
metka: .db 1,2,3,4,5,6
Sasha.32 писал(а):а к EEPROM я так понимаю при написании кода можно обращаться с помощью 8 бит
Механизм обращения к EEPROM вообще больше относится к работе с периферией, потому что для ее чтения нужно адрес заносить в регистр В/В (EEAR, который вполне может быть и более чем 8-битный), потом выбирать режим доступа (чтение, запись, стирание) в контрольный регистр, и уже потом, подождав готовность EEPROM - читать/писать данные (опять же через регистр В/В)
Аватара пользователя
Sasha.32
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пт июл 15, 2011 15:13:01
Откуда: Новосибирск
Контактная информация:

Re: EEPROM

Сообщение Sasha.32 »

Спасибо большое, буду биться, всё равно пойму а то чёт по моему доступ к EEPROM ещё запутанней. Ну не чё, учатся же люди адресовать и 32-ух и 64-ех разрядные ячейки, просто дело времени.
P.S А всё же адреса у EEPROM 8 или 16 бит ?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: EEPROM

Сообщение Engineer_Keen »

Sasha.32 писал(а):А всё же адреса у EEPROM 8 или 16 бит ?
Так зависит от объема. У мелких тинек и по 6 бит есть (64 байта памяти).
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: EEPROM

Сообщение Alexeyslav »

Чтобы понять какую память для чего лучше использовать, надо взглянуть на их характеристики:

РОН - доступ к ячейкам за 1 такт, бесконечное число циклов записи. значение не сохраняется при отключении питания. в МК их крайне ограниченное число - 32шт.

SRAM - доступ к ячейкам за 2 такта, бесконечное число циклов записи. значение не сохраняется при отключении питания.

FLASH - память программ, доступ из программы часто просто невозможен а в других случаях затруднен. доступ к ячейкам для чтения за несколько тактов - зависит от способа доступа, но как правило гораздо медленнее чем к SRAM, для записи -порядка 1мс на ячейку, запись часто возможна только при выполнении кода из области BOOTLOADER. количество циклов записи - сильно ограничено, обычно не превышает 1000, а иногда порядка 100.
Да, примерно за секунду можно убить одну ячейку FLASH-памяти.

EEPROM - энергонезависимая память данных программы. доступ на чтение - 4 и более такта, на запись - около 1мс. перед доступом к памяти необходимо проверять готовность, что удлиняет время доступа к ячейкам. Например, нельзя с нее что-либо читать когда идет процесс записи!
количество циклов записи - около 10000, иногда встречается 100000.

Не знаю как насчет современных технологий, но уже давно изобретена ферромагнитная память, которая обладает характеристиками SRAM но так же является энергонезависимой как EEPROM и максимальным количеством циклов записи от милиарда(высокоплотные чипы) до бесконечности.
Но, пока такая память довольно дорога и не такая быстродействующая как хотелось бы, но я почему-то уверен что уже наверняка есть микроконтроллеры с такой памятью на борту на замену EEPROM.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: EEPROM

Сообщение Engineer_Keen »

Alexeyslav писал(а): FLASH - память программ, доступ из программы часто просто невозможен а в других случаях затруднен.
Почему невозможен? Если только команды LPM\SPM не поддерживаются, но это только в старых МК.
Alexeyslav писал(а): доступ к ячейкам для чтения за несколько тактов - зависит от способа доступа, но как правило гораздо медленнее чем к SRAM
Всего 3 такта, не считая вычисления адреса и загрузки адресной пары ZH:ZL.
Alexeyslav писал(а): но я почему-то уверен что уже наверняка есть микроконтроллеры с такой памятью на борту на замену EEPROM.
Есть, и у самой Ramtron, которая память делает, и у других производителей. У Atmel не видел.
Аватара пользователя
Sasha.32
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пт июл 15, 2011 15:13:01
Откуда: Новосибирск
Контактная информация:

Re: EEPROM

Сообщение Sasha.32 »

То есть я так понимаю, если проводить не большую аналогию с написанием кода для х86 процев на асме, то получится что записанный код в Flash , при включении питания МК отразится на ОЗУ как сегмент кода, а данные которые находятся в EEPROM отразятся на ОЗУ как сигмент данных, как то так что ли.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: EEPROM

Сообщение Engineer_Keen »

Сложно представить аналог EEPROM для x86, все-таки архитектура разная, но видимо действительно получается ближе с сегменту данных...
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: EEPROM

Сообщение YS »

если проводить не большую аналогию с написанием кода для х86
Этого делать нельзя. x86 - Фон-Неймановские, AVR - Гарвардские. Что это за архитектуры, курите в Википедии.

Но все же, если проводить такую некорректную аналогию, то FLASH - жесткий диск (причем с него можно только читать), RAM это RAM и есть, а EEPROM - воткнутая в USB флешка. Только залитая эпоксидкой, потому что не вынимается. :)))
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Sasha.32
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пт июл 15, 2011 15:13:01
Откуда: Новосибирск
Контактная информация:

Re: EEPROM

Сообщение Sasha.32 »

Ну, по той же грубой аналогии, с флешки можно запросто исполнять код даже загрузить Windows с неё. Но это грубая аналогия и с ней надо заканчивать, а для каких целей лучше всего используется EEPROM, я отвечу сам себе лишь тогда, когда сам придумаю какую нибудь программку.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: EEPROM

Сообщение Alexeyslav »

Тут аналогия и заканчивается. Поскольку архитектуры разные. Микроконтроллер может выполнять программу только с FLASH-памяти, с EEPROM RAM и другими видами внешней памяти он может только оперировать с хранящимися там данными.
Ответить

Вернуться в «Теория»