Уважаемый ALL, может быть кто-то сталкивался, помогите в какую сторону копнуть...
IAR 5.11,
IAR Elf Linker for ARM 5.11.0.50622 (5.11.0.50622)
IAR C/C++ Compiler for ARM 5.11.0.20622 (5.11.0.20622)
Вывожу с помощью PWM синус по 800 точкам. таблица синуса объявлена полуволной!!! из констант
unsigned int const sin1024[400]={\ ... }; константы в сегменте флэш-памяти lpc2103.
Задача вывода PWM тривиальная - по прерыванию 3-го канала (период) обновляю данные регистра сравнения T0MR0. после RC цепочки на ноге МАТ0.0 смотрим синус осциллографом.
Имею абсолютно непонятную ситуацию - "задир" (то есть T0MR0 имеет сильно неверное значение) (иногда два "задира", а иногда - ни одного) на синусе, причем этот задир только на одной (левой "верхней" то бишь значенияT0MR0 должны лежать в диапазоне [0 .. 1/2Period ] ) полуволне, и самое поразительное, что в зависимости от положения звёзд на рабочем проекте "задир(ы)" то проявляются, то не проявляется. На тестовом проекте задир всегда постоянен и всегда один.
Таблица синуса правильная, в пошаговом режиме проблем не возникает, на кристалле в головном проекте крутится ещё несколько прерываний, они не являются причиной (иногда синус абсолютно чистый, а иногда именно в данном месте то один, то два "задира").
Проблема проявляется даже на прилагаемом тестовом проекте (должен заработать у каждого под иар5.11 ). кварц 12мГц, обычная отладка от Олимекса с 2103.
Прошу оказать конструктивную помощь, высказать замечание или кинуть в меня соответствующей ссылкой.
Умозрительные предположения прошу делать аккуратно, ибо пока все умозрительные предположения стукнулись головой о реальный камень...
ПРИЛАГАЕМЫЙ ПРОЕКТ Нажмите для просмотра прикрепленного файла