ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
7 июля
205730 Топик полностью
testerplus (11.08.2010 13:35, просмотров: 222) ответил testerplus на В симуляторе с внешним тактированием T1CKI (как там сэмулировать тактирование с LP - не знаю) работает четко. Завтра на работе попробую в железе с LP.
Проверил в железе - работает четко: 1024 Hz. Писал на ассемблере с минимальным кодом прерывания 7 инструкций. Как только добавил 10 нопов - получил 963 Гц. Дело,скорее всего, вот в чем: в даташите есть примечание насчет работы таймера в режиме счетчика: Note: In Counter mode, a falling edge must be registered by the counter prior to the first incrementing rising edge. У Вас с момента переполнения TMR1 (т.е. возникновения прерывания) до момента записи в TMR1L проходит 12 тактов (+ не забывайте, что прерывание в данном случае асинхронное, т.е. может появиться еще один такт). Скважность тактирующего сигнала от 32КГц (это уже внутри контроллера) может быть далека от 2. И поэтому у Вас падающий фронт этого сигнала успевает пройти до присваивания в TMR1. Попробуйте для проверки свести к минимуму код прервания: void interrput isr (void) { TMR1L -= 16; TMR1H--; TMR1IF = 0; DATA_ASK ^= 1; }