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

 
 
> Почему в МК некорректно работает память xdata?
bragol
сообщение Nov 23 2015, 13:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-08-11
Пользователь №: 66 729



Микроконтроллер AD89C51RD2, 64 КБ встроенной памяти, 1792 Б XRAM. Есть к нему прошивка в несколько тысяч строк, вот ее габариты: "Program Size: data=76.5 xdata=820 code=38246". Проблема возникает именно с областью памяти xdata.
В программе есть переменные, которые я записываю в эту область памяти типа:
float xdata ppk2K72 = 0.9843;
float xdata ppk2K73 = 0.99698;
float xdata ppk2K61 = 0.99596;
float xdata ppk2K62 = 0.99849;

Таких переменных больше 100 и их обязательно надо хранить в памяти.
Так вот пока эти переменные были закоментированны и не забивали память, программа работала корректно, но как только пришло время их использовать, я перепрошил свое устройство, то появились явные глюки, связанные с переполнением памяти. Программа выводит на дисплей хаотичные символы из памяти, перезаписывает некоторые другие переменные неправильными значениями... Глюк пропадает, когда я освобождаю область памяти XDATA, который у меня настроен на максимальный объем памяти:
void initialization()
{
EA = 1; // enable interrupts
CKRL = 0xFF; //Clock Reload Register for calculating core frequency
CKCON0 = 0x01; // X2 mode for all peripherals
CKCON1 = 0x00; // X2 for SPI
AUXR |= 0x10; // XDATA = 1792
IPH0 = 0x00; // низкий уровень прерываний для всей переферии
IPL0 = 0x00;
//********** UART Mode 1 (8 bit) with int_BRD
PCON |= 0x80; // SMOD1 = 1
SCON = 0x50; // uart in mode 1 (8 bit), REN=1
BDRCON &= ~0xEC; // BRR=0; SRC=0;
BDRCON |= 0x0E; // TBCK=1;RBCK=1; SPD=1
BRL = 0xB8; // 9600 Bds at 11.092MHz
ES = 1; // Enable serial interrupt
BDRCON |= 0x10; // Baud rate generator run

TI = 0;
RI = 0;
}
Go to the top of the page
 
+Quote Post



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

 


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


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