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

 
 
 
Reply to this topicStart new topic
> Не читается EEPROM в PIC18F2320, в чем причина?
Sevastianov
сообщение Apr 16 2005, 16:57
Сообщение #1





Группа: Свой
Сообщений: 14
Регистрация: 23-05-04
Из: Ульяновск
Пользователь №: 17



- собственно проблема: не работает чтение из EEPROM в EEDATA
При всем этом безобразии все остальные "смежные" функции работают:
1. Информация в EEPROM не теряется при включении/выключении питания и может считываться в комп через программатор.
2. Запись в EEPROM работает как с компа через программатор, так и в устройстве путем пересылки байтов из RAM в EEPROM.
3. В один и тот же регистр константа заносится, а байт из EEPROM нет (проверено как с выбором банка по умолчанию, так и с указанием № банка в BSR).
4. Пересылка байта из банка в банк работает.
- В конфигурации все "защитные" биты установлены Disable,
- Установка "сопутствующих" регистров EECON № - по даташитам, без использования прерываний (при записи),
- Использовались инструкции записи/чтения EEPROM в строгом соответствии с представленными в даташитах,
- Пробовалось также чтение с использованием косвенной адресации,
- После установки бита RD из EEDATA читается 00 (проверено CPFSEQ EEDATA,WREG (=0)).
-------
В чем может быть дело? blink.gif
Go to the top of the page
 
+Quote Post
zksystem
сообщение May 13 2005, 13:08
Сообщение #2


embedder
***

Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911



[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;
}


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
Make_Pic
сообщение May 13 2005, 18:25
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828



Предпологаю, что Sevastianov запрещение прерываний упустил, в связи с глюкавостью серии PIC18FXX2 EEPROM читать можно, только запретив прерывания.
Go to the top of the page
 
+Quote Post
Sevastianov
сообщение May 14 2005, 15:29
Сообщение #4





Группа: Свой
Сообщений: 14
Регистрация: 23-05-04
Из: Ульяновск
Пользователь №: 17



Цитата(Make_Pic @ May 13 2005, 21:25)
Предпологаю, что Sevastianov запрещение прерываний упустил, в связи с глюкавостью серии PIC18FXX2 EEPROM читать можно, только запретив прерывания.
*

:
Да, дело было в прерываниях. Жаль, что в даташитах об этом ни слова.
Ещё инфа на эту тему есть на форуме microchip.ru.
Спасибо всем за помощь.
cheers.gif
Go to the top of the page
 
+Quote Post

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

 


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


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