Страница 1 из 2

atmega16 использование встроенной памяти

Добавлено: Ср ноя 26, 2014 22:21:41
novarobotix
есть ли у atmega16 встроенная энергонезависимая память для хранения данных или надо цеплать внешнюю микросхему?
скажем в программе есть массив переменных unsigned char data[255]; в программе поназначал кучу значений data[136]=235; data[16]=35; и т п, и надо чтобы они в этом массиве при повторном включении питания были.

Re: atmega16 использование встроенной памяти

Добавлено: Ср ноя 26, 2014 22:43:20
codenamehawk
Есть такая память, а что даташиты все пропали?

Re: atmega16 использование встроенной памяти

Добавлено: Ср ноя 26, 2014 22:57:51
Stanislavich
Есть:
16 Kbytes of In-System Self-programmable Flash program memory
512 Bytes EEPROM
1 Kbyte Internal SRAM

Re: atmega16 использование встроенной памяти

Добавлено: Ср ноя 26, 2014 23:16:17
стьюдент
в книге Евстифеева "микроконтроллеры AVR семейства Mega" есть хорошее описание работы с EEPROM, при желании можно разобраться. Только не совсем понятно зачем вам нужна EEPROM, если вы присваиваете константы в программе, никуда они из FLASH не пропадут :))

Re: atmega16 использование встроенной памяти

Добавлено: Ср ноя 26, 2014 23:20:33
COKPOWEHEU
novarobotix писал(а):есть ли у atmega16 встроенная энергонезависимая память
Stanislavich писал(а): 1 Kbyte Internal SRAM
Что?

Re: atmega16 использование встроенной памяти

Добавлено: Ср ноя 26, 2014 23:25:43
novarobotix
что-то не нашёл внятного работающего описания работы с такой памятью с работающими примерами . ну типа есть куча переменных и храню их в этой памяти. или массив переменных типа unsigned char data[255];

Re: atmega16 использование встроенной памяти

Добавлено: Ср ноя 26, 2014 23:27:16
Stanislavich
COKPOWEHEU писал(а):
novarobotix писал(а):есть ли у atmega16 встроенная энергонезависимая память
Stanislavich писал(а): 1 Kbyte Internal SRAM
Что?
http://www.atmel.com/Images/2466S.pdf

Re: atmega16 использование встроенной памяти

Добавлено: Ср ноя 26, 2014 23:31:01
novarobotix
стьюдент писал(а): Только не совсем понятно зачем вам нужна EEPROM, если вы присваиваете константы в программе, никуда они из FLASH не пропадут :))
определил в начале unsigned char data[255];

а потом в программе по ходу дела им присваиваются значения data[136]=235; data[16]=35; вот чтобы при пропадании питания они сохранялись.
235 и 35 это к примеру количество импульсов на ноге порта - считаются программой. то есть заранее я не знаю какие числа писать в массив.
стьюдент писал(а):в книге Евстифеева "микроконтроллеры AVR семейства Mega" есть хорошее описание работы с EEPROM, при желании можно разобраться.
там примеры на ассемблере. или я не то скачал?

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 06:26:30
стьюдент
Примеры на ассемблере и на СИ. Кроме того, примеры кода должны быть в даташите на ваш контроллер.

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 07:38:22
Engineer_Keen
стьюдент писал(а):Кроме того, примеры кода должны быть в даташите на ваш контроллер.
Примеры в даташите на мегу16 начинаются со страницы 21.
novarobotix писал(а):а потом в программе по ходу дела им присваиваются значения data[136]=235; data[16]=35; вот чтобы при пропадании питания они сохранялись.
Только учтите, что ресурс EEPROM 100 000 циклов, так что если часто перезаписывать, то надолго не хватит.

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 09:44:35
COKPOWEHEU
Stanislavich писал(а): http://www.atmel.com/Images/2466S.pdf
Специально же выделил! С каких пор ОЗУ стало энергонезависимым?

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 10:17:13
pyzhman
novarobotix писал(а):определил в начале unsigned char data[255];
Определите сразу в ЕЕПРОМе:

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

eeprom unsigned char data[255];
и работайте в своё удовольствие. После снятия напряжения питания никуда не денутся. С оговорками Errata в тех же даташитах.
Engineer_Keen писал(а):ресурс EEPROM 100 000 циклов
Если перезаписывать каждую секунду, то будет:
100 000 / 60 / 60 = 27,7 часа. Норм. Потом следующий в патронник.

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 14:55:33
Kavka
Определение "в eeprom" - ограниченно компилятором.
Если в AVR Studio, то http://avr-libc.narod.ru/group__avr__eeprom.html

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 17:21:34
Stanislavich
COKPOWEHEU писал(а):
Stanislavich писал(а): http://www.atmel.com/Images/2466S.pdf
Специально же выделил! С каких пор ОЗУ стало энергонезависимым?
Я просто скинул какая у нее есть память...

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 17:49:31
novarobotix
pyzhman писал(а):
novarobotix писал(а):определил в начале unsigned char data[255];
Определите сразу в ЕЕПРОМе:

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

eeprom unsigned char data[255];
и работайте в своё удовольствие. После снятия напряжения питания никуда не денутся. С оговорками Errata в тех же даташитах.
Engineer_Keen писал(а):ресурс EEPROM 100 000 циклов
Если перезаписывать каждую секунду, то будет:
100 000 / 60 / 60 = 27,7 часа. Норм. Потом следующий в патронник.
о! спасибо! скомпилилось! в кодевижн пишу.
писать мне всего пару раз нужно, а потом много раз считывать.а скорость считывания сильно медленнее считывания если без eeprom определить?
Stanislavich писал(а):http://www.atmel.com/Images/2466S.pdf
Специально же выделил! С каких пор ОЗУ стало энергонезависимым?
Я просто скинул какая у нее есть память...
то есть получается есть 512 байт ЕЕPROM?
максимум что я могу туда записать это:

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

eeprom unsigned char data1[255];
eeprom unsigned char data2[255];
и память кончилась?

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 18:25:49
Stanislavich
novarobotix писал(а):и память кончилась?
Ты можешь записать в нее 4144 символов двоичного кода.

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 19:04:38
COKPOWEHEU
Если нужно больше и записывать нужно чаще - лучше посмотреть в сторону внешних флешек. Все-таки встроенная EEPROM контроллера предназначена для хранения настроек и тому подобного, а не километровых логов.

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 19:46:36
novarobotix
Stanislavich писал(а):Ты можешь записать в нее 4144 символов двоичного кода.
а это сколько в unsigned char data[255]-х ?
COKPOWEHEU писал(а):Если нужно больше и записывать нужно чаще - лучше посмотреть в сторону внешних флешек. Все-таки встроенная EEPROM контроллера предназначена для хранения настроек и тому подобного, а не километровых логов.
мне надо один раз сконфигурить под конкретный мотор таблицу и потом чтобы работало(только считывало данные). так что пока не вижу смысла во внешней если можно внутрюнюю юзнуть.

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 20:14:49
COKPOWEHEU
Для таких объемов може тправда в сторону flash посмотреть? Запись памяти программ возможно не только из загрузчика, но на время записи процессор остановится.

Re: atmega16 использование встроенной памяти

Добавлено: Чт ноя 27, 2014 20:25:50
novarobotix
COKPOWEHEU писал(а):Для таких объемов може тправда в сторону flash посмотреть? Запись памяти программ возможно не только из загрузчика, но на время записи процессор остановится.
ну я не всё сразу буду писать а по одной цифирке потом расчёт, потом другая цифра. и скорость небольшая во время записи