[an error occurred while processing this directive]
|
Может, конечно, руки.sys, но всё же.
Программа состоит из трёх процессов, написаны по убыванию приоритета
1. Прерывание от таймера. Используются альтернативный набор регистров. IJPG, DMPG1, DMPG2, PX, IOPG - сохр. в памяти.
2. Програмное прерывание. Обработка данных с АЦП. Вызывается каждое 20-е прерывание таймера. Используются основной набор регистров, сохр. в памяти
3. Фон: меню, ....
В чём прикол: иногда(от 0.1сек до 20 сек), программа не выходит из
2-го прерывания. А фон стартует с любого места.
Но при этом вся программа не виснет.
Контролируется светодиодом на флагах, и на ЖКИ
Программа написана на ASM & С
Обработчики прерывания свои(сохранение регистров, и т.д.).
Прошу не пинать за С, но некоторые вещи лучше делать на нем.
Как работает компилер я знаю. Кому интересен код, могу выслать.
Гораздо сложнее проект работает на 2-х ADSP2189
Компилер со всеми патчами, библиотеки не использую,
ну кроме деления :)
Программа в симуляторе работает идеально.
Ставил на сутки :)
В чём вопрос.
1.Какие-нибудь аппаратные глюки, кроме тех что в ERRATe, обнаруживали
2.Кто как делает многоуровневые прерывания.
3.Может есть особенности в сохранении некоторых регистров.
Такое чувство, что портится DM
Компилер использовал и с аппаратным стеком, и с программным.
Эффект одинаковый.
P.S. LCD работает через DMA, хотя я его отключал, эффект тот же.
HELP, F1, F1, ...
E-mail: info@telesys.ru