Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 13.03.2019, 10:22  
Yarikkasl
Частый гость
 
Регистрация: 11.03.2019
Сообщений: 12
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Yarikkasl на пути к лучшему
По умолчанию Вопрос atmega 128.

Здравствуйте, пытаюсь сделать счетчик импульсов от 0 до 999. считает все ок. но вот вопрос с памятью. необходимо это число запоминать и при включении продолжать счёт. в даташите в примере
"void EEPROM_write(unsigned int uiAddress, unsigned char ucData)" , это ограничечивает максимальное значение 256, но в даташите максимальное значение в ячейке 4096 что более чем подходит, так вот. нужно ли разбивать число или можно использовать другие переменные не char?
Реклама:
Yarikkasl вне форума  
Непрочитано 13.03.2019, 11:35  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,339
Сказал спасибо: 1,469
Сказали Спасибо 1,125 раз(а) в 469 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Вопрос atmega 128.

Сообщение от Yarikkasl Посмотреть сообщение
ограничечивает максимальное значение 256, но в даташите максимальное значение в ячейке 4096
Непонятно что вы имели в виду про макс значение 4096.
Память - что ОЗУ, что епром - имеет байтовую организацию. И считаете вы - тоже в байтах. Инкремент двухбайтового - это прибавление 1 к младшему и прибавление нуля с переносом к старшему...

Это так... в качестве ликбеза.

Я веду к тому, что записывать в епром надо так же - по байтам. Старший и младший..

Код:
 EEPROM_write(addr, counter & oxFF)
 EEPROM_write(addr+1, counter >> 8)
Если использовать компилятор IAR, и того проще - объявить int в eeprom, остальное дело компилятора.

Ну и не забывать что ресурс перезаписи епрома все же ограничен. И время записи в епром на порядки больше чем работа с ОЗУ.
__________________
[ жизнь приятна и красива, если выпить литр пива ]

Последний раз редактировалось nml; 13.03.2019 в 11:38.
nml вне форума  
Непрочитано 13.03.2019, 12:51  
Yarikkasl
Частый гость
 
Регистрация: 11.03.2019
Сообщений: 12
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Yarikkasl на пути к лучшему
По умолчанию Re: Вопрос atmega 128.

Спасибо! Примерно понял. Так как регистр EEDR 8 битный то мне необходимо число разбивать, а для продления ресурса ПЗУ запись можно осуществить если значения отличаются. Код пишу в amtelstudio
Yarikkasl вне форума  
Непрочитано 13.03.2019, 13:10  
j-Roger
Вид на жительство
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 379
Сказал спасибо: 215
Сказали Спасибо 267 раз(а) в 138 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Вопрос atmega 128.

В тулчейнах в Atmel Studio (заголовочный файл eeprom.h) имеются готовые функции и/или макросы вида:
PHP код:
uint8_t eeprom_read_byte (const uint8_t *__p);
 
uint16_t eeprom_read_word (const uint16_t *__p);
 
uint32_t eeprom_read_dword (const uint32_t *__p);
 
void eeprom_read_block (void *__dst, const void *__srcsize_t __n); 
Также имеются конструкции для eeprom_write_xxx и eeprom_update_xxx
j-Roger вне форума  
Сказали "Спасибо" j-Roger
Yarikkasl (14.03.2019)
Непрочитано 13.03.2019, 13:34  
mike-y-k
Почётный гражданин KAZUS.RU
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 7,238
Сказал спасибо: 7,353
Сказали Спасибо 2,254 раз(а) в 1,745 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Вопрос atmega 128.

Yarikkasl, для решения вопроса с ресурсом памяти - есть внешние часы реального времени и внешняя последовательная память (*24Cxx*)
В часах есть статический NVRAM.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при малом числе вариантов.
mike-y-k вне форума  
Непрочитано 13.03.2019, 14:23  
Yarikkasl
Частый гость
 
Регистрация: 11.03.2019
Сообщений: 12
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Yarikkasl на пути к лучшему
По умолчанию Re: Вопрос atmega 128.

Спасибо, но думаю для началаначало нужно записывать и считывать научиться.
Yarikkasl вне форума  
Непрочитано 13.03.2019, 17:47  
mike-y-k
Почётный гражданин KAZUS.RU
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 7,238
Сказал спасибо: 7,353
Сказали Спасибо 2,254 раз(а) в 1,745 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Вопрос atmega 128.

Yarikkasl, читать и писать во внешнюю память тоже нужно учится, и это явно более востребовано. Писать во внутреннюю память такое явно не стоит, только для написания своего загрузчика использовать.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при малом числе вариантов.
mike-y-k вне форума  
Непрочитано 13.03.2019, 17:51  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,339
Сказал спасибо: 1,469
Сказали Спасибо 1,125 раз(а) в 469 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Вопрос atmega 128.

Сообщение от mike-y-k Посмотреть сообщение
Писать во внутреннюю память такое явно не стоит, только для написания своего загрузчика использовать.
Так речь не о флеше шла, а о епроме.
Его ресурса более чем хватит, если конечно не заставить в цикле писать
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
Сказали "Спасибо" nml
Yarikkasl (14.03.2019)
Непрочитано 13.03.2019, 21:56  
makakus
Почётный гражданин KAZUS.RU
 
Регистрация: 08.10.2007
Сообщений: 2,462
Сказал спасибо: 880
Сказали Спасибо 889 раз(а) в 474 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Вопрос atmega 128.

Ресурс EEPROM гарантирует 100000 перезаписей.
У вас в 128-й меге его 4 килобайта.
Для того, чтобы получить ресурс в 4090*100000 перезаписей можно сделать так.

Нулевой байт EEPROM использовать не будем. После обращения к EEPROM полезно устанавливать его адресный регистр в 0000. Если произойдёт случайная запись ( при просадке/помехе по питанию, особенно когда отключен BOD), то запишется в нулевой байт.

В байтах 1 и 2 расположен eptr указатель на адрес используемой ячейки EEPROM.
В байтах 3 и 4 располагается ewctr счётчик перезаписей, а в байтах 5 и 6 значение вашего счётчика counter=0..999

После прошивки указатель eptr = 3, EEPROM[5..8]=00. При включении питания читаем указатель eptr = EEPROM[1,2], ваш счётчик: counter= EEPROM[eptr+2, eptr+3] и счётчик перезаписей ewctr=EPROM[eptr, eptr+1].
При каждой перезаписи counter наращиваем счётчик ewctr и записываем их оба в EEPROM[eptr...eptr+3].
Если ewctr==65535 eptr+=1; ewctr=0; дополнительно записываем eptr в EEPROM[1,2]. Да, теперь наши два счётчика записываются с перекрытием прежнего места, со сдвигом на один байт. Посчитайте, сколько раз будет перезаписана каждая ячейка EEPROM, с учётом того, что одинаковое значение не перезаписывается и младший байт размещён в младшем адресе памяти.

Последний раз редактировалось makakus; 13.03.2019 в 22:05.
makakus вне форума  
Эти 2 пользователя(ей) сказали Спасибо makakus за это сообщение:
mike-y-k (14.03.2019), Yarikkasl (14.03.2019)
Непрочитано 14.03.2019, 00:58  
dkm
Прописка
 
Регистрация: 10.04.2010
Сообщений: 207
Сказал спасибо: 17
Сказали Спасибо 68 раз(а) в 48 сообщении(ях)
dkm на пути к лучшему
По умолчанию Re: Вопрос atmega 128.

Сообщение от Yarikkasl Посмотреть сообщение
Спасибо! Примерно понял. Так как регистр EEDR 8 битный то мне необходимо число разбивать, а для продления ресурса ПЗУ запись можно осуществить если значения отличаются. Код пишу в amtelstudio
Это что за задача, в которой постоянно нужно писать именно в EEPROM более 100000 раз???
dkm вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Частотомер Atmega 128 deeman30rus Электроника - это просто 8 25.07.2012 07:29
ATmega 128 . Пытаюсь запустить таймер Т2... home2010 Микроконтроллеры, АЦП, память и т.д 7 31.03.2010 07:47
ATmega 8 Помогите разобраться !!! snakesoft Микроконтроллеры, АЦП, память и т.д 41 07.12.2008 20:48
USB-программатор для PIC greafuger Микроконтроллеры, АЦП, память и т.д 70 24.02.2008 16:44
4-битный режим LCD при работе с Atmega 128 Hellka Микроконтроллеры, АЦП, память и т.д 1 02.10.2006 14:23


Часовой пояс GMT +4, время: 16:26.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot