MPLAB+ICD2 не читает и не записывает EEPROM в PIC18F452
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено winbinar 24 марта 2004 г. 20:40

При написании программы для PIC18F452 столкнулся с такой проблемой.
В MPLAB 6.42+ICD2 не читается и не записывается внутренний EEPROM PIC, хотя в MPLAB+SIM всё нормально.
Участок программы для установки битов конфигурации:

#pragma romdata CONFIG
_CONFIG_DECL (_OSCS_ON_1H & _OSC_HSPLL_1H,
_PWRT_ON_2L & _BOR_ON_2L & _BORV_25_2L,
_WDT_OFF_2H & _WDTPS_1_2H,
_CONFIG3H_DEFAULT,
_LVP_OFF_4L,
_CONFIG5L_DEFAULT,
_CPB_OFF_5H & _CPD_OFF_5H,
_CONFIG6L_DEFAULT,_CONFIG6H_DEFAULT,_CONFIG7L_DEFAULT,
_CONFIG7H_DEFAULT);
#pragma romdata

---------------------------------------------------------------------
Данные EEPROM:

#pragma romdata EEPROMSECT=0xF00000
rom UCHAR S_CORE_ROM = 0xFF, V_CORE_ROM = 0xCC;
#pragma romdata

---------------------------------------------------------------------
Процедура для чтения данных из EEPROM в ОЗУ (взята из форума на www.microchip.com):

#include

typedef unsigned char UCHAR;

void memcpyee2ram(void ram far *, void rom far *, int);
/****************************************************************
**
** memcpyee2ram
**
** Return Value:
** none
**
*****************************************************************/
void memcpyee2ram(void ram far * dst, void rom far * src, int nBytes)
{
UCHAR ram far* p = dst;
UCHAR byte;

EEADR = (UCHAR)( src - (void rom far *)(0x00f00000) );
EECON1 = 0;

while (nBytes--)
{
INTCONbits.GIE = 0;
EECON1bits.RD = 1;
byte = EEDATA;
INTCONbits.GIE = 1;

*p++ = byte;
EEADR++;
}
}

-------------------------------------------------------------
При выполнении команды EECON1bits.RD = 1 этот бит не устанавливается в "1".
В чём может быть дело ???


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru