Показано с 1 по 10 из 10

Тема: Как записывать в EEPROM для AVR

  1. #1

    Как записывать в EEPROM для AVR

    Как записывать в EEPROM в ATmega64 и другие аналогичные, не используя команды eeprom_write_byte а используя регистр адреса EEAR, 16 бит, состоит из двух восьмибитных, регистр данных EEDR и управления EECR, мне это надо чтобы не объявлять кучу переменных а по очереди записывая или считывая из/в небольшое количество переменных. Я нашел небольшую статью, но из нее мне неясно, что за прерывания EEPROM, разрешать их или как там сказано использовать другой вариант, когда они генерируются постоянно. сделал и так и так, но не получается. Вот статья https://radioparty.ru/prog-avr/progr...-lesson-eeprom


  2. #2
    Аватар для Tadas
    Регистрация
    12.06.2002
    Адрес
    KO24AV
    Сообщений
    2,503
    Позывной
    LY1CE
    Я использую среду разработки IAR AVR. Там всё очень просто. Например:

    //объявление переменной в EEPROM
    char ___eeprom my_var;

    //далее просто используем эту переменную там где надо
    my_var=127;
    .....
    integer my_2var;
    my_2var=my_var+1000;
    .....

    Всё, что нужно для обращения к EEPROM, компилятор делает самомтоятельно.
    Хороша теория, но что ты с ней будешь делать ?
    73 de LY1CE

  3. #3
    Мне надо рулить вручную, используя специальные регистры eeprom, я думал объявить массив в eeprom, но в avrstudio-4 не получается, поэтому хочу вручную через специальные регистры eeprom и не объявлять много переменных, а записывать по адресам и считывать также

  4. #4
    Аватар для Tadas
    Регистрация
    12.06.2002
    Адрес
    KO24AV
    Сообщений
    2,503
    Позывной
    LY1CE
    Цитата Сообщение от SoundMaster Посмотреть сообщение
    Мне надо рулить вручную, используя специальные регистры eeprom
    Можно и вручную: http://mkprog.ru/avr/avr-dlya-nachin...ry-eeprom.html
    Хороша теория, но что ты с ней будешь делать ?
    73 de LY1CE

  5. #5
    Вот фрагмент AVR Studio 4.19:

    #include <avr/eeprom.h>
    #include "UR3QQW_2IF_STUDIO.h "
    #include "lcd_lib.h"
    uint32_t pch EEMEM=8000000; //Объявление переменной находящейся в EEPROM
    uint32_t pch_1;
    uint32_t bandwidth EEMEM=500000; //Объявление переменной находящейся в EEPROM
    uint32_t bandwidth_1;
    uint32_t xtal_freq EEMEM=27001003; //Объявление переменной находящейся в EEPROM
    uint32_t xtal_freq_1;
    То есть то, что отмечено красным...

  6. #6
    Теперь понятно, а из примеров, которые я нашел в интернете я неправильно понял что EEMEM=0 это присвоение адреса, а не значения. Ну тогда я могу и массив объявить, avrstudio-4 в этом ошибку не видит, когда я просто пишу var_001[12u] EEMEM, без присвоения значения, значения в моем случае присваиваются при работе, когда надо сохранить частоту и другие настройки а не при старте программы

  7. #7
    Цитата Сообщение от SoundMaster Посмотреть сообщение
    avrstudio-4 в этом ошибку не видит, когда я просто пишу var_001[12u] EEMEM
    Конечно, никакой ошибки. Сейчас у меня там записано определенной значение. Эти значения записываются в ЕЕПРОМ при программировании контроллера. При работе эти значения могут быть изменены при корректировке из меню пользователем. Фактически это и есть переменная, только в ЕЕПРОМ. Программа только читает ее, а изменить можно или из меню или по новой прошив контроллер.

  8. #8
    А какой максимальный размер, то есть количество элементов массива 8-битных переменных? Для ATmega64. Мне надо 10 значений частоты формат unsigned long после разбивки на 4 байта сохранить, 40 элементов и все умножить на 10 - десять "профилей" в каждом из которых для каждого диапазона сохраняется своя частота, мне так удобнее. Пишут, что максимальный размер определяется емкостью ОЗУ, у меня массив в EEPROM, проверил, создал массив из 400 элементов и в 399-й вписал байт - все работает, но может бывают глюки всвязи с большими массивами или нет? Еще раз обращу внимание ATmega64, EEPROM, и AVRstudio4, ну и в самой программе какой максимальный размер, хотя в самой программе такой массив не нужен - байты последовательно записываются

  9. #9
    Цитата Сообщение от SoundMaster Посмотреть сообщение
    А какой максимальный размер, то есть количество элементов массива 8-битных переменных? Для ATmega64.
    В AVR Studio 4.19 запустите отладку. Откройте память ЕЕПРОМ и Вы там увидите свой массив и сколько он занимает. Меню - View - Memory. Не помню только, как там отображается слово, вроде сначала младший байт, потом старший.. Редко я занимаюсь этим делом. Все что нужно вроде написал, теперь основной инструмент напильник да паяльник.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	EEPROM.JPG 
Просмотров:	66 
Размер:	380.5 Кб 
ID:	308996  


  10. #10
    Да насчет сколько занимает - там после компиляции показывается процент использования памяти, я думал, может если массив большой, а не разбит на более мелкие, может глючить что-нибудь будет

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. eeprom 93LC56A - нюансы
    от LML в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 3
    Последнее сообщение: 18.12.2014, 02:32
  2. Как запрограммировать EEprom?
    от ut5vf в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 6
    Последнее сообщение: 26.09.2008, 22:30
  3. Дамп EEPROM на KENWOOD TK-360
    от DerBear в разделе Технический кабинет
    Ответов: 2
    Последнее сообщение: 21.12.2007, 13:44
  4. Прошивка EEPROM для F-310S
    от ut5vf в разделе Модификация радиостанций
    Ответов: 2
    Последнее сообщение: 08.08.2007, 12:53
  5. Радиостанция GP-680, ошибка EEPROM Cksum
    от Микки в разделе Модификация радиостанций
    Ответов: 2
    Последнее сообщение: 07.10.2005, 06:52

Ваши права

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