Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Таблицы в pic18f8722
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Dmitriy_dda
Уважаемый народ!

Сразу о железе: пишу на "С-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
то таблицы читаются а вот проблемы начинаются с рабочим кодом, который выходит за пределы, вроде и работает но как то не так.
evc
Действительно память у этого контроллера 128К, но в байтах! А это, как раз и составляет 65536 программных слов (single word instructions), что означает максимальный адрес памяти - 0хFFFF. Выше этого адреса попадаете в начало адресной области, откуда и неожиданные результаты чтения таблицы расположеные выше 0х10000...
Рассмотрите внимательнее таблицу на первой странице даташита...

ПС Если скорость чтения не критична, я бы выкинул все таблицы во внешную память последовательного доступа.
Dmitriy_dda
Спасибо, меня сбил с толку тот факт, что когда просматриваю состояние памяти (Program Memory пункт в MPLAB) вижу что почти половина свободная и конечный адрес как раз 0x1FFFF (что совпадает с датащитом на мк).
Herz
Цитата(Dmitriy_dda @ May 30 2009, 10:38) *
микроконтроллер PIC18F8722, частота 80М,

Да и частоту Вы вдвое "увеличили". Я уж подумал, новые какие-то совсем ПИКи... Опечатка, наверное.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.