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

 
 
> IAR AVR 4.10A, как обеспечить доступ к EEPROM
Sergio66
сообщение Mar 17 2005, 15:52
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



Еще один вопрос - никак не могу найти ни одной библиотечной функции для доступа к EEPROM. Компилятор Embedded C++, библиотека DLIB. Подскажите, плз.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
-Tумблер-
сообщение Mar 18 2005, 12:20
Сообщение #2


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

Группа: Свой
Сообщений: 146
Регистрация: 4-11-04
Из: Московская область
Пользователь №: 1 040



Цитата(Sergio66 @ Mar 17 2005, 18:52)
Еще один вопрос - никак не могу найти ни одной библиотечной функции для доступа к EEPROM. Компилятор Embedded C++, библиотека DLIB.  Подскажите, плз.
*


Возьмем да и напишем :

#define EEMWE_BIT (1<<2)
#define EEWE_BIT (1<<1)
#define EERE_BIT (1<<0)

#define _EEPUT_(ADR,VAL) {while (EECR & EEWE_BIT); \
EEAR = (ADR); EEDR = (VAL); _CLI();EECR = EEMWE_BIT; EECR = EEWE_BIT;_SEI();}

#define _EEGET_(VAR, ADR) {while (EECR & EEWE_BIT); \
EEAR = (ADR); EECR = EERE_BIT; while (EECR & EERE_BIT);(VAR) = EEDR;}




smile.gif


--------------------

- ЗАМЕНЯТЬ ДЕТАЛИ НА ХОДУ ВОСПРЕЩАЕТСЯ !!! -
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 18 2005, 15:30
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(-Tумблер- @ Mar 18 2005, 15:20)
#define _EEPUT_(ADR,VAL)  {while (EECR & EEWE_BIT); \
EEAR = (ADR); EEDR = (VAL); _CLI();EECR = EEMWE_BIT; EECR = EEWE_BIT;_SEI();}
*

Комбинация _CLI()/_SEI() плоха, т. к. прерывания до этого могут быть запрещены.
EECR |= EEMWE_BIT; EECR |= EEWE_BIT; // скомпилируется намного оптимальнее
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 18 2005, 15:38
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(IgorKossak @ Mar 18 2005, 18:30)
Цитата(-Tумблер- @ Mar 18 2005, 15:20)
#define _EEPUT_(ADR,VAL)  {while (EECR & EEWE_BIT); \
EEAR = (ADR); EEDR = (VAL); _CLI();EECR = EEMWE_BIT; EECR = EEWE_BIT;_SEI();}
*

Комбинация _CLI()/_SEI() плоха, т. к. прерывания до этого могут быть запрещены.
EECR |= EEMWE_BIT; EECR |= EEWE_BIT; // скомпилируется намного оптимальнее
*



Это не поможет! потому что между этими командами не должно быть больше 4 циклов!
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 18 2005, 15:59
Сообщение #5


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(KRS @ Mar 18 2005, 18:38)
Это не поможет! потому что между этими командами не должно быть больше 4 циклов!
*

И не будет.
Вот что получается:
Код
   146              _EEPUT_(0x2456,0x56);
  \   00000000   99E1                       SBIC    0x1C,0x01
  \   00000002   CFFE                       RJMP    ??init_1
  \   00000004   E506                       LDI     R16,86
  \   00000006   E214                       LDI     R17,36
  \   00000008   BB1F                       OUT     0x1F,R17
  \   0000000A   BB0E                       OUT     0x1E,R16
  \   0000000C   BB0D                       OUT     0x1D,R16
  \   0000000E   94F8                       CLI
  \   00000010   9AE2                       SBI     0x1C,0x02
  \   00000012   9AE1                       SBI     0x1C,0x01
  \   00000014   9478                       SEI
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Sergio66   IAR AVR 4.10A   Mar 17 2005, 15:52
- - IgorKossak   Не нужно никакой функции. Просто обьявите переменн...   Mar 17 2005, 16:53
- - Sergio66   Цитата(Sergio66 @ Mar 17 2005, 18:52)Еще один...   Mar 17 2005, 16:59
|- - KRS   Цитата(Sergio66 @ Mar 17 2005, 19:59)Цитата(S...   Mar 17 2005, 17:01
- - IgorKossak   !!! Не следует также забывать, что кол...   Mar 18 2005, 09:22
|- - KRS   Цитата(IgorKossak @ Mar 18 2005, 18:59)Цитата...   Mar 18 2005, 16:16
|- - vet   Цитата(KRS @ Mar 18 2005, 19:16)Откуда взялис...   Mar 18 2005, 20:03
|- - IgorKossak   Цитата(KRS @ Mar 18 2005, 19:16)...Откуда взя...   Mar 21 2005, 07:25
- - IgorKossak   Существует бесконечно малое количество причин в пр...   Mar 21 2005, 08:08
|- - -Tумблер-   Цитата(IgorKossak @ Mar 21 2005, 11:08)Сущест...   Mar 22 2005, 07:34
- - IgorKossak   Интересное мнение, хотя и не бесспорное. Из под мо...   Mar 23 2005, 09:27
|- - -Tумблер-   Цитата(IgorKossak @ Mar 23 2005, 12:27)лет и ...   Mar 23 2005, 11:33
- - IgorKossak   -Tумблер-, Вы похоже очень спешите читать пост и в...   Mar 23 2005, 12:21
- - Alex_St   2 Тумблер: А что в таком случае мешает использова...   Mar 23 2005, 12:23
- - -Tумблер-   Цитата(Alex_St @ Mar 23 2005, 15:23)А что в т...   Mar 24 2005, 11:34
- - dxp   Цитата(-Tумблер- @ Mar 24 2005, 17:...   Mar 24 2005, 13:57
- - -Tумблер-   Цитата(dxp @ Mar 24 2005, 16:57)А чем не нрав...   Mar 25 2005, 12:14
- - dxp   Цитата(-Tумблер- @ Mar 25 2005, 18:...   Mar 25 2005, 14:37
- - IgorKossak   Далеко не единственный случай, когда программист н...   Mar 28 2005, 09:29
- - -Tумблер-   Цитата(dxp @ Mar 25 2005, 17:37)Я не понимаю,...   Mar 28 2005, 10:21


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

 


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


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