Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не читается EEPROM в PIC18F2320
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
Sevastianov
- собственно проблема: не работает чтение из EEPROM в EEDATA
При всем этом безобразии все остальные "смежные" функции работают:
1. Информация в EEPROM не теряется при включении/выключении питания и может считываться в комп через программатор.
2. Запись в EEPROM работает как с компа через программатор, так и в устройстве путем пересылки байтов из RAM в EEPROM.
3. В один и тот же регистр константа заносится, а байт из EEPROM нет (проверено как с выбором банка по умолчанию, так и с указанием № банка в BSR).
4. Пересылка байта из банка в банк работает.
- В конфигурации все "защитные" биты установлены Disable,
- Установка "сопутствующих" регистров EECON № - по даташитам, без использования прерываний (при записи),
- Использовались инструкции записи/чтения EEPROM в строгом соответствии с представленными в даташитах,
- Пробовалось также чтение с использованием косвенной адресации,
- После установки бита RD из EEDATA читается 00 (проверено CPFSEQ EEDATA,WREG (=0)).
-------
В чем может быть дело? blink.gif
zksystem
[quote=Sevastianov,Apr 16 2005, 19:57]
Вот 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;
}
Make_Pic
Предпологаю, что Sevastianov запрещение прерываний упустил, в связи с глюкавостью серии PIC18FXX2 EEPROM читать можно, только запретив прерывания.
Sevastianov
Цитата(Make_Pic @ May 13 2005, 21:25)
Предпологаю, что Sevastianov запрещение прерываний упустил, в связи с глюкавостью серии PIC18FXX2 EEPROM читать можно, только запретив прерывания.
*

:
Да, дело было в прерываниях. Жаль, что в даташитах об этом ни слова.
Ещё инфа на эту тему есть на форуме microchip.ru.
Спасибо всем за помощь.
cheers.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.