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

 
 
> Вопрос по работе с EEPROM в WinAVR, срочно нужна помощь
AlexPT
сообщение May 25 2007, 07:09
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 22-12-06
Пользователь №: 23 780



Здравствуйте! Прошу помочь. Нужны функции записи и чтения из/в EEPROM AT90CAN128. Беру примеры из Даташита и компилирую WinAVR, не работают. Преверяю в AVRStudio - не работают. Вот эти функции из Даташита:

/*********************************
*
* ЗАПИСЬ БАЙТА В int-EEPROM
*
*********************************/
void RTEEPROMwrite (u16 adrEEPROM, u08 databyte)
{
u08 savedSREG;

while(EECR & (1<<EEWE));
savedSREG = SREG // keep setting so it can be restored
SREG &= ~0x80;
EEAR = adrEEPROM; // set address
EEDR = databyte; // set data
EECR |= (1<<EEMWE); // set "write enable" bit
EECR |= (1<<EEWE); // set "write" bit
SREG = savedSREG; // restore SREG
EEAR = 0;

} // end of RTEEPROMwrite

/**********************************
*
* ЧТЕНИЕ БАЙТА ИЗ int-EEPROM
*
**********************************/
u08 RTEEPROMread (u16 adrEEPROM)
{
while(EECR & (1<<EEWE));
EEAR = adrEEPROM; // set address
EECR |= (1<<EERE); // set "read enable" bit
EEAR = 0;
return (EEDR);

} // end of RTEEPROMread

Хотел использовать функции из библиотеки:

uint8_t eeprom_read_byte (const uint8_t *addr);

void eeprom_write_byte (uint8_t *addr,uint8_t value);

Но не понятно как описать и работать с указателями на ячейки в EEPROM.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mikron
сообщение Sep 30 2010, 04:58
Сообщение #2


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

Группа: Участник
Сообщений: 82
Регистрация: 1-03-10
Пользователь №: 55 731



alexeyv, спасибо, но в даташите я не нашел
нужно ли как-то еще настраивать контроллер на запись/чтение
или достаточно использовать только библиотечные функции?
Go to the top of the page
 
+Quote Post
alexeyv
сообщение Sep 30 2010, 07:19
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



Цитата(Mikron @ Sep 30 2010, 10:58) *
alexeyv, спасибо, но в даташите я не нашел
нужно ли как-то еще настраивать контроллер на запись/чтение
или достаточно использовать только библиотечные функции?

1. Перед использованием необходимо подключить заголовочный файл
#include <avr/eeprom.h>
Настраивать ничего не надо
Посмотрите файл <avr/eeprom.h>, там вы найдете еще несколько необходимых функций и макросов для работы с EEPROM

2. Если в EEPROM хранятся данные которые не надо терять при каждом программировании МК, то необходимо выставить FUSE-бит EESAVE

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

4. У некоторых МК встречал баг - при записи в EEPROM по адресу 0х00 процессор перестает работать. Так что не используйте этот адрес




to 777777
Цитата
А зачем при этом еще и сохранять SREG - для меня загадка


Сохранение/восстановление SREG - для использования функции в критических местах/секциях (например, в прерываниях), чтобы корректно восстановить флаг глобального разрешения прерываний (т.к. функция его меняет). То есть если они были разрешены, то после выполнения функции останутся разрешены, а если запрещены - то останутся запрещены

Сообщение отредактировал alexeyv - Sep 30 2010, 07:19
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AlexPT   Вопрос по работе с EEPROM в WinAVR   May 25 2007, 07:09
- - Tcom   unsigned char EEPROM_read (unsigned int uiAdress)/...   May 25 2007, 07:32
- - IgorKossak   Цитата(AlexPT @ May 25 2007, 10:09) Хотел...   May 25 2007, 07:38
- - singlskv   Вот это лишнее: Цитата(AlexPT @ May 25 2007, ...   May 25 2007, 07:43
- - aesok   Цитата(AlexPT @ May 25 2007, 11:09) Здрав...   May 25 2007, 08:42
- - AlexPT   С EEAR = 0 это опечатка. Компилирую с уровнем опти...   May 25 2007, 09:56
|- - aesok   Цитата(AlexPT @ May 25 2007, 13:56) С EEA...   May 25 2007, 10:12
|- - 777777   Цитата(aesok @ May 25 2007, 14:12) Посмот...   Sep 30 2010, 06:40
|- - aesok   Цитата(777777 @ Sep 30 2010, 10:40) -O0 э...   Sep 30 2010, 06:50
|- - 777777   Цитата(aesok @ Sep 30 2010, 10:50) Такие ...   Sep 30 2010, 07:05
|- - aesok   Цитата(777777 @ Sep 30 2010, 11:05) Так в...   Sep 30 2010, 07:27
- - AlexPT   Большое спасибо за подсказку с оптимизацией. Все з...   May 25 2007, 11:02
- - defunct   В WinAVR есть готовые функции для работы с eeprom....   May 25 2007, 13:09
- - Mikron   добрый вечер решил поднять тему, просто проблема с...   Sep 29 2010, 22:10
- - alexeyv   используйте библиотечные функции. Например, для за...   Sep 30 2010, 04:51
- - ARV   Цитата(Mikron @ Sep 30 2010, 08:58) alexe...   Sep 30 2010, 05:47


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 14:01
Рейтинг@Mail.ru


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