А говорят что ошибкой в программе нельзя убить процессор...Как два пальца:-))
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено sda 12 октября 2004 г. 09:53

Пока программа была маленькой все локальные переменные размещались в data и всё было нормально.Но добавлялись новые задачи,увеличивалось количество функций,линкер периодически стал напоминать о нехватке памяти данных.Как-то я психанул и перевёл все переменные в xdata,в том числе и в приведённой ниже функции:


void WriteFlash()
{
data uint i = 0;
xdata uchar *adressRom;
xdata uchar *adressRam;
adressRam = BuferRam;
EA = 0;
adressRom = (uchar*)TabData;
FLSCL = 0x01;
PSCTL = 0x03;
*adressRom = 0;
PSCTL = 0x01;
do *adressRom++ = *adressRam++;
while (++i < 512);
PSCTL = 0;
FLSCL = 0x00;
EA = 1;
}

Переменную i я перевёл в xdata.Сделал я это не подумавши,автоматически.Прошло какое-то время,всё благополучно забылось,возникла необходимость записать данные во flash.Процессор завис,не отзывается на программатор и никакие танцы с бубном не выводили его из этого состояния.Понимаю,что я допустил грубую ошибку,но всё же...Работаю с Cygnal 8051F020 в среде Keil.

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

Ответы



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

E-mail: info@telesys.ru