Перейти к содержанию
    

Не читается EEPROM в PIC18F2320

- собственно проблема: не работает чтение из EEPROM в EEDATA

При всем этом безобразии все остальные "смежные" функции работают:

1. Информация в EEPROM не теряется при включении/выключении питания и может считываться в комп через программатор.

2. Запись в EEPROM работает как с компа через программатор, так и в устройстве путем пересылки байтов из RAM в EEPROM.

3. В один и тот же регистр константа заносится, а байт из EEPROM нет (проверено как с выбором банка по умолчанию, так и с указанием № банка в BSR).

4. Пересылка байта из банка в банк работает.

- В конфигурации все "защитные" биты установлены Disable,

- Установка "сопутствующих" регистров EECON № - по даташитам, без использования прерываний (при записи),

- Использовались инструкции записи/чтения EEPROM в строгом соответствии с представленными в даташитах,

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

- После установки бита RD из EEDATA читается 00 (проверено CPFSEQ EEDATA,WREG (=0)).

-------

В чем может быть дело? :blink:

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


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

Вот 100% рабочий код на PIC18F452, посмотрите, может что упустили:

#include <pic18.h>

void Write_EEPROM(unsigned char ucAddress, unsigned char ucData)
{
    GIE = 0;    // disable interrupts
    EEDATA = ucData;
    EEADR = ucAddress;
    
    EEPGD = 0;
    CFGS = 0;
    WREN = 1;    // enable writes

    EECON2 = 0x55;      // required sequence for EEPROM update
    EECON2 = 0xAA;
    WR = 1;
    while(WR)continue;
    EEIF = 0;
    WREN = 0;
    GIE = 1;
}

unsigned char Read_EEPROM(unsigned char ucAddress)
{
    unsigned char eeprom_data;    
       
    GIE = 0;      
    EEADR = ucAddress;
    EEPGD = 0;
    CFGS = 0;
    RD = 1;
    eeprom_data = EEDATA;
    GIE = 1;
    return eeprom_data;
}

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


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

Предпологаю, что Sevastianov запрещение прерываний упустил, в связи с глюкавостью серии PIC18FXX2 EEPROM читать можно, только запретив прерывания.

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


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

Предпологаю, что Sevastianov запрещение прерываний упустил, в связи с глюкавостью серии PIC18FXX2 EEPROM читать можно, только запретив прерывания.

:

Да, дело было в прерываниях. Жаль, что в даташитах об этом ни слова.

Ещё инфа на эту тему есть на форуме microchip.ru.

Спасибо всем за помощь.

:cheers:

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...