dimok0409

Eeprom В Proteuse

16 сообщений в этой теме

dimok0409    0

Доброго всем времени суток .

Столкнулся с проблемой при симулировании в Proteuse не читаются данные из памяти EEPROM.

Пишу программу много канального ШИМ для Atmega8 в AVR_Studio 5 на С.

В стимуляторе AVR_Studio переменным присваиваются значения записанные EEPROM.

Подскажите как заставить Proteus работать с EEPROM.

Заранее всем СПАСИБО!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
TDSS    88

Записать эти значения в EEPROM при инициализации программы. Протеус сохранит эти записи у себя в проекте. Потом код инициализации значений в EEPROM можно удалить, будут считываться значения сохраненные в проекте (может есть и другой метод, даже более правильный, но я делал так)

Изменено пользователем TDSS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
NebsteR    742

В PIC'ах в протеусе еепром нормально работает. Причем работает как и должен - состояние сохраняется в конфигах проекта и после симуляции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dimok0409    0

Записать эти значения в EEPROM при инициализации программы. Протеус сохранит эти записи у себя в проекте. Потом код инициализации значений в EEPROM можно удалить, будут считываться значения сохраненные в проекте (может есть и другой метод, даже более правильный, но я делал так)

Спасибо за подсказку так заработала.

Может кто-то знает как Proteusu подсунуть файл с расширением .eep в котором компилятор пишет все данные по EEMROM

В PIC'ах в протеусе еепром нормально работает. Причем работает как и должен - состояние сохраняется в конфигах проекта и после симуляции.

Спасибо за ответ.Я только начал работать с микроконтроллерами пока бы с AVR разобраться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
donec    115
Может кто-то знает как Proteusu подсунуть файл с расширением .eep в котором компилятор пишет все данные по EEMROM

С помощью утилиты hex2bin.exe file.eep file.bin перекодировать файл file.eep в file.bin. Затем подключить файл file.bin к МК.

post-135787-0-89203600-1360081482_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
shads    5
Подскажите как заставить Proteus работать с EEPROM.

В начале программы инклудиш файл

#include <avr/eeprom.h>

Пример записи байта 0xff в переменную MainVar размещенную в EEPROM

char MainVar EEMEM; //переменная в EEPROM
eeprom_write_byte (&MainVar, 0xff); //запись в MainVar

Читаем переменную MainVar размещенную в EEPROM и помещаем в temp

char temp = eeprom_read_byte (&MainVar);//читаем

Есть еще подобные команды для работы с 16 разрядными данными

eeprom_read_word()
eeprom_write_word()

Изменено пользователем shads

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
TDSS    88

Для AVR Studio делал так:

//создаем переменную типа unsigned int 8bit
uint8_t var = 5;

//задаем переменную хранящую адрес в EEPROM
unsigned int var_ADR = 10;

//запись переменной var по адресу var_ADR
eeprom_busy_wait();
eeprom_update_byte((uint8_t*)var_ADR, var);

//чтение из адреса EEPROM в переменную var
eeprom_busy_wait();
var = eeprom_read_byte((uint8_t*)var_ADR);

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dimok0409    0
Может кто-то знает как Proteusu подсунуть файл с расширением .eep в котором компилятор пишет все данные по EEMROM

С помощью утилиты hex2bin.exe file.eep file.bin перекодировать файл file.eep в file.bin. Затем подключить файл file.bin к МК.

Спасибо за ответ если будет нетрудно киньте ссылку где можно скачать hex2bin.exe file.eep file.bin

Подскажите как заставить Proteus работать с EEPROM.
В начале программы инклудиш файл
 #include  

Пример записи байта 0xff в переменную MainVar размещенную в EEPROM

 char MainVar EEMEM; //переменная в EEPROM eeprom_write_byte (&MainVar, 0xff); //запись в MainVar 

Читаем переменную MainVar размещенную в EEPROM и помещаем в temp

 char temp = eeprom_read_byte (&MainVar);//читаем 

Есть еще подобные команды для работы с 16 разрядными данными

 eeprom_read_word() eeprom_write_word() 

Спасибо за подсказку.Кто знает зачем нужна функция eeprom_busy_wait; и eeprom_is_ready

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
donec    115

В посту 5 Я уже ее написал, выделенное черным это и есть порядок набора в командной строке, только вместо file напишешь свое имя файла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dimok0409    0

В посту 5 Я уже ее написал, выделенное черным это и есть порядок набора в командной строке, только вместо file напишешь свое имя файла.

Не могу не как найти описание работы с программой если можно скиньте ссылку пожалуйста. :unknw:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
donec    115

Пост 9 ссылка, там и некоторое описание работы с прогой, то, что приведено в посту 5 - достаточно.

Изменено пользователем donec

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dimok0409    0

Пост 9 ссылка, там и некоторое описание работы с прогой, то, что приведено в посту 5 - достаточно.

Я только недавно зарегистрировался на это сайте для мне не понятно что обозначает Пост 9 и где это искать???? :unknw:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dimok0409    0

Все разобрался сначала просто не догнал что за пост.Все вроде заработало спасибо за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
balistik    0

У меня тоже в протеусе фигово работает еепром. Часть переменных читается, часть нет. Не пишутся вообще.

unsigned char eep1 EEMEM; //объявил

eeprom_write_byte(&eep1, 0);//записал

regim = eeprom_read_byte(&eep1);//считал

Ну и при чтении и записи отключаю прерывания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • Многогранный товарищ. Ждём новых книг: "Пчеловодство. 100 кг мёда с одного улья за сезон." "Интимная жизнь без женщины. Советы профессионала." "Звёзды зовут! Строим межпланетную ракету из подручных средств." 
    • А Вас не удивляет, что, как Вы изволили выразиться, "отсутствие знаний" не мешает мне успешно писать код в свои изделия, а изделия затем успешно внедрять в серийное производство? Вы не ответили мне на простой вопрос: каким боком терминология стандарта влияет на написание кода для ДМА? Что такого критически важного содержится в определении выражения как части другого выражения? Зато Ваше стерильное непонимание сути понятия "логического выражения" - это весьма существенно. Вы совершенно формально принимаете соглашения языка, не пытаясь разобраться в сути. И при этом вообще не слышите собеседника, априори полагая, что  собеседником является ничего не знающий "школоло". Именно это гомерически смешно. Также гомерически смешны Ваши сентенции относительно ДМА. ДМА не требует никаких вычислений, кроме простых присвоений значений управляющим регистрам контроллера ДМА, а так же тривиальных действий в обработчике прерываний по ДМА. Все что связано с использованием этого аппаратного инструмента никакого отношения к Си не имеет ВООБЩЕ. Проблема в том, что Вы ни разу не радист. Вы - программист. Именно поэтому активно применяете чужие библиотеки.  А мне это совершенно не требуется.  
    • транзистор Т1 выпаял: проверил, живой плату промыл - сушится обогревателем . Вечером припаяю назад Т1 + припаяю резисторы и сделаю фото
    • Это не хрень. Это - нормальное положение дел. ))  Транзисторы , они ведь не одинаковые. Токи утечки разные (в основном обратный ток коллектора) , разные и коэфициенты усиления по току ( h21э ). По этому без нагрузки , на выходах  и между ними , может быть что угодно.  На это даже заморачиваться особо не стоит. Лучше провести эксперимент. Между выходами  поставить два последовательно соединённых резистора. Скажем по одному килоому каждый. После этого померить напряжение между выходами. Оно должно стать практически нулевым.  Потом к средней точке резисторов подпаять проводок. А другой конец провода подключить к массе. При этом на обоих выходах должно стать примерно нулевое напряжение. Перекинув провод на плюс питания убеждаемся , что на обоих выходах стало практически напряжение питания. Если всё так , то то всё ОК. Но поставить резисторы между базой и эмиттером 4-х силовых  транзисторов всё же надо.   
    • В 90% случаев, такой БП используют для контактной сварки. В Вашем случае намного реальнее перемотать трансформатор от микроволновки. Уж по скорости и надёжности - это самый верный вариант. Для чего планируется использовать схему?