Pruvet (18.05.2010 06:58, просмотров: 1721)
Возникло непонимание при доработке "чужого" кода для AT89S52. В программе используется таймер 1 как источник сигнала генератора для UART.
Скорость обмена 9600 бит/сек. Таймер 1 настроен на режим 2 со значением регистра TH=0FDh;
Частота резонатора 11059200 Гц.
В то же время разрешено прерывание таймера 1. В этом же прерывании выполняется 3 трехцикловых микрокоманды.
Насколько я понял документацию на AT89S52 для получения скорости обмена частота таймера делится на 32 и дополнительно может делиться на 2 в зависимости от бита (названия бита не помню) и в той же документации не рекомендуется одновременная работа UARTA с таймером 1 на высокой скорости обмена при разрешенном прерывании таймера 1.
Вот я не могу понять с какой целью разрешено прерывание, время выполнения которого больше чем период вызова....
Когда в прерывание добавлял тестовый код выдающий меандр, то на ноге процессора частота с периодом то 200 то 600 мкс.