Добрый день ВСЕМ!
Помогите советом!
Преамбула...
Установлен режим FRC_PLL16. Таймер 1 используется как счетчик для вычисления скважности внешних импульсов, чтобы потом обеспечить на дсПИКе соответствующую фазировку устройства. Импульсы поступают на вход прерывания INT1. Все бы ничего..., но устройство работает как-то неправильно. Проверил что считает Таймер1 - ужас. Счетчик работает с дискретностью 3. Т.е. 0х0105, 0х0108, 0х010B и так далее. Промежуточные значения отсутствуют. Такое ощущение, что входящие импульсы поступают кратно 100нс. Хотя в электрической спецификации заявлено не более 25нс.
Я, конечно, поступился временем обработки и сделал расчет среднего арифметического 3хN событий и тем самым получил в близком приближении пропущенные значения, но... хотелось бы знать откуда ноги растут.
Подскажите что бы это могло быть!
С уважением,
Олег
Harvester
Feb 18 2009, 10:05
Цитата(Okor @ Feb 18 2009, 11:46)

Установлен режим FRC_PLL16.
А что это за режим? Насколько я знаю, в dsPIC30 ко входу PLL может подключаться только осн. генератор. Может проблема в том, что проц работает не на той частоте, соответственно, не может нормально синхронизироваться с внешними импульсами
Это внутренний осциллятор с умножением 16. Внутренняя частота 120 МГц
Протокол обмена (UART), ШИМ у меня привязаны к внутренней частоте и работают стабильно.
А здесь какая-то ерунда. Осциллограф показывает девиацию частоты входного сигнала в интервале 2 нс, а счетчик дает на выходе, например, 0х02aa,0х02ad,0х02ad,0х02aa,0х02a7 и тд. Получается, период изменяется в пределах 200 нс. Мне понятен дрейф внутреннего осциллятора, но где промежуточные значения?
ХМ...
_Pasha
Feb 18 2009, 10:51
Цитата(Okor @ Feb 18 2009, 14:37)

Мне понятен дрейф внутреннего осциллятора, но где промежуточные значения?
ХМ...
Так если бы завели на вход Capture - не было бы девиации