Sevastianov 0 16 апреля, 2005 Опубликовано 16 апреля, 2005 · Жалоба - собственно проблема: не работает чтение из EEPROM в EEDATA При всем этом безобразии все остальные "смежные" функции работают: 1. Информация в EEPROM не теряется при включении/выключении питания и может считываться в комп через программатор. 2. Запись в EEPROM работает как с компа через программатор, так и в устройстве путем пересылки байтов из RAM в EEPROM. 3. В один и тот же регистр константа заносится, а байт из EEPROM нет (проверено как с выбором банка по умолчанию, так и с указанием № банка в BSR). 4. Пересылка байта из банка в банк работает. - В конфигурации все "защитные" биты установлены Disable, - Установка "сопутствующих" регистров EECON № - по даташитам, без использования прерываний (при записи), - Использовались инструкции записи/чтения EEPROM в строгом соответствии с представленными в даташитах, - Пробовалось также чтение с использованием косвенной адресации, - После установки бита RD из EEDATA читается 00 (проверено CPFSEQ EEDATA,WREG (=0)). ------- В чем может быть дело? :blink: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zksystem 0 13 мая, 2005 Опубликовано 13 мая, 2005 · Жалоба Вот 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 0 13 мая, 2005 Опубликовано 13 мая, 2005 · Жалоба Предпологаю, что Sevastianov запрещение прерываний упустил, в связи с глюкавостью серии PIC18FXX2 EEPROM читать можно, только запретив прерывания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sevastianov 0 14 мая, 2005 Опубликовано 14 мая, 2005 · Жалоба Предпологаю, что Sevastianov запрещение прерываний упустил, в связи с глюкавостью серии PIC18FXX2 EEPROM читать можно, только запретив прерывания. <{POST_SNAPBACK}> : Да, дело было в прерываниях. Жаль, что в даташитах об этом ни слова. Ещё инфа на эту тему есть на форуме microchip.ru. Спасибо всем за помощь. :cheers: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться