Средства разработки для PICMICRO - Страница 90

Средства разработки для PICMICRO - Средства разработки для PICMICRO

Первая причина заключается в различных временах отклика на прерывание. Обработка прерывания начинается через три или четыре командных цикла после получения запроса. При написании этого кода, я учел задержку обслуживания прерывания (то есть число циклов, необходимое для перехода к обработке запроса) длительностью в три цикла. Это означает, что при отклике на прерывание может быть случайным образом добавлен еще один цикл.

Вторая причина того, что разработанное приложение не обеспечивает абсолютной точности, возникает из-за поступления команд, выполняющихся за два цикла (например, «goto» или «call»). Если в процессе выполнения такой команды возникает запрос на прерывание, то появляется задержка длительностью в один цикл, чтобы завершить выполнение команды. Это увеличивает максимальную длительность отклика на прерывание еще на один цикл.

Последняя причина несовместимости заключается в том, что во время обмена PICMicro с DS1820 (при чтении или записи), обслуживание прерываний запрещено в целях обеспечения необходимых временных характеристик обмена. Если прерывание возникает в течение цикла чтения или записи информации в DS1820, то обработка запроса откладывается на некоторое время. Пытаясь устранить эту проблему, я поместил процедуру считывания температуры из DS1820 сразу же после процедуры перезапуска таймера. Это позволило несколько уменьшить ошибку, но ее величина по-прежнему составила несколько десятых долей процента. При этом величина ошибки будет различной в зависимости от времени поступления запроса прерывания.

Go to Top