Уважаемый народ!
Сразу о железе: пишу на "С-18" в среде MPLAB IDE, микроконтроллер PIC18F8722, частота 80М, длинна кода где-то до адреса 0x119EA, код содержит довольно много таблиц.
Настройка микроконтроллера:
Код
#pragma config MODE = MC
#pragma config OSC = HSPLL
#pragma config ADDRBW = ADDR20BIT
#pragma config WDT = OFF
#pragma config XINST=OFF
#pragma config PWRT = ON
#pragma config BOREN = OFF
#pragma config STVREN = OFF
#pragma config IESO = OFF
#pragma config MCLRE = OFF
Странность заключается в следующем: когда программа пытается прочесть какие-либо значения из таблиц, находящихся по адресам 0x10000 и выше то читаются не те значения что мне надо, а читаются по адресам на 0х10000 меньше чем стоят на самом деле.
Вроде и в конфиге прописано что шина адреса 20 бит (то есть должны читаться адреса вплоть до 0х1FFFF) но этого не происходит.
На оптимизацию кода сейчас просто нет времени (чтоб уложиться в 65к, но ведь память то 128к), да и скорее всего код будет еще длиннее..
Таблицы прописываю в отдельных файлах так:
Код
#include "p18f8722.h"
const rom unsigned char Table_ch_0[1024] =
{
125, 125, 124, 124, 123, 123, 122, 122, 122, 121,
121, 120,........и т.д.
}
Подскажите, я в чем-то ошибся/забыл прописать, или это какая-то особенность микроконтроллера?
ЗЫ: пробовал переместить все таблицы в начало директивой:
#pragma romdata Table_ch_0 = 0х100
то таблицы читаются а вот проблемы начинаются с рабочим кодом, который выходит за пределы, вроде и работает но как то не так.