AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
04.02.2013, 07:37
|
|
Частый гость
Регистрация: 09.11.2012
Сообщений: 46
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Зачем нужно пустое чтение ЕЕПРОМ?
ВСем доброго времени.
Стало интересно зачем нужно пустое чтение с ЕЕПРОМ.
if ((EECR&0x02)==0 ) {
EEAR=0; EECR=0x01;
volatile byte tmp=EEDR;
}
зачем это?
|
|
|
|
04.02.2013, 07:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Зачем нужно пустое чтение ЕЕПРОМ?
Вообще-то при нулевых 4 и 5 битах eecr выполняется стирание и запись
|
|
|
|
04.02.2013, 07:50
|
|
Частый гость
Регистрация: 09.11.2012
Сообщений: 46
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Зачем нужно пустое чтение ЕЕПРОМ?
Что то не так. 4 и 5 eecr(если считать от 0 до 7) -зарезервированы.
|
|
|
|
04.02.2013, 09:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Зачем нужно пустое чтение ЕЕПРОМ?
Какой контроллер? Это для мега48
|
|
|
|
04.02.2013, 11:23
|
|
Частый гость
Регистрация: 09.11.2012
Сообщений: 46
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Зачем нужно пустое чтение ЕЕПРОМ?
Mega16, Mega32
|
|
|
|
04.02.2013, 15:52
|
|
Прохожий
Регистрация: 24.05.2007
Адрес: Казань
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Зачем нужно пустое чтение ЕЕПРОМ?
Я в своё время делал пустое чтение после записи В EEPROM в атмелах,чтобы память не слетала. Так называемая "ячейка парковки".
|
|
|
|
04.02.2013, 18:01
|
|
Частый гость
Регистрация: 09.11.2012
Сообщений: 46
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Зачем нужно пустое чтение ЕЕПРОМ?
holostjak, можно поподробнее. я по этому поводу как раз думал. слышал краем уха что с первыми ячейками какие то глюки связаны.
|
|
|
|
04.02.2013, 19:11
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Зачем нужно пустое чтение ЕЕПРОМ?
Сообщение от Janush
|
holostjak, можно поподробнее. я по этому поводу как раз думал. слышал краем уха что с первыми ячейками какие то глюки связаны.
|
Глюки были на AT90 (первые АВРы), на Мегах их не было никогда.
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
04.02.2013, 19:14
|
|
Частый гость
Регистрация: 09.11.2012
Сообщений: 46
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Зачем нужно пустое чтение ЕЕПРОМ?
Хорошо. Тогда по какой причине все таки может слетать память?
|
|
|
|
04.02.2013, 19:17
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Зачем нужно пустое чтение ЕЕПРОМ?
Сообщение от Janush
|
ВСем доброго времени.
Стало интересно зачем нужно пустое чтение с ЕЕПРОМ.
if ((EECR&0x02)==0 ) {
EEAR=0; EECR=0x01;
volatile byte tmp=EEDR;
}
зачем это?
|
Не нужно никакое пустое чтение (имхо)...
Код:
|
unsigned char ReadByteFromEEPROM(unsigned short addr)
{
unsigned char i;
while (EECR&(1‹‹EEWE)) ;
EEAR=addr;
EECR|=0x01;
i=EEDR;
// установка адреса в 0 - бессмысленная операция
EEAR=0;
return(i);
}
void WriteByteToEEPROM(unsigned short addr, unsigned char new_byte)
{
if (new_byte==ReadByteFromEEPROM(addr))
return ;
EEAR=addr;
EEDR=new_byte;
unsigned char int_state=__save_interrupt();
__disable_interrupt();
EECR|=(1‹‹EEMWE);
EECR|=(1‹‹EEWE);
__restore_interrupt(int_state);
while (EECR&(1‹‹EEWE)) ;
} |
Последний раз редактировалось _Артём_; 04.02.2013 в 19:23.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:58.
|
|