реклама на сайте
подробности

 
 
> Работа с EEPROM в WinAVR
Marian
сообщение Mar 29 2008, 13:38
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 23-02-07
Пользователь №: 25 618



В CodeVision объявляется переменная в EEPROM, с инициализацией:

Код

eeprom unsigned char precision    = 128;


читать с EEPROM :

Код

unsigned char tempPrecision;
  
tempPrecision = precision;


запись в EEPROM :
Код

unsigned char tempPrecision;

tempPrecision = 234;
precision =tempPrecision;


Как перенести в WinAVR ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smk
сообщение Mar 30 2008, 12:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
Предложеная вами функция "EEPROM_write_8" опасна в применении. Если между строками "EECR |= (1<<EEMPE);" и "EECR |= (1<<EEPE);" произойдет прерывание то запись в EEPROM не будет выполнена. Бит "EEPE" должен быть установлен в единицу не позже чем через 4 такта, после установки бита "EEMPE".


Да, это правда, но только мы все люди умые, читаем даташит м запрещаем прерывания ДО использования и разрешаем после.
Как показывает практика 4 такта всегда выполняется, но проверять не вредно. Пока работает уверенно в десятках девайсов.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 30 2008, 16:06
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(smk @ Mar 30 2008, 15:30) *
Да, это правда, но только мы все люди умые, читаем даташит м запрещаем прерывания ДО использования и разрешаем после.


А если мы параноидально умные smile.gif, то пользуемся

Код
#include <util/atomic.h>
........
........
ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
{
  EECR |= (1<<EEMPE);
  EECR |= (1<<EEPE);
}


дабы не разрешать прерывания там, где они запрещены.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 10:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016