Как настроить прескалер на ISR до определенного интервала в микросекундах? - PullRequest
1 голос
/ 21 ноября 2011

У меня есть устройство PIC18F87J11 , и я должен создать: 1) высокоприоритетный ISR, который должен срабатывать каждые 100 мс 2) ISR с низким приоритетом, который должен запускаться каждые 10 мс

У меня есть базовые знания о настройке предварительного масштабирования, например, для Timer0, это

movlw b'00000010'
movwf T0CON

при чтении страницы справки, это должно сконфигурировать Timer0 для 16-битного счетчика с предварительным масштабированием 1: 8 (страница руководства по устройству 179).Проблема в том, что я не знаю, как определить правильные настройки предварительного масштабирования, когда мне нужны интервалы в 100 мс.Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: Хорошо, теперь я понимаю, что у меня, наверное, гораздо меньше представления о том, что я делаю, чем я думал.Я не могу найти соответствующую информацию в руководстве (и я уверен, что она там есть).Мне нужно установить Таймер 0 до 100 мс и Таймер 1 до 10 мс.

1 Ответ

1 голос
/ 21 ноября 2011

Вот вам процедура инициации высокого приоритета ISR для TMR0.

В самом начале вашего кода инициализации MCPU вы должны определить ...

;Init TMR0 as 8 bit timer, overflow every 1024 CPU cycles if TMRxPrescaler4 is set
;{
TMRxPrescaler2      equ 0
TMRxPrescaler4      equ 1
TMRxPrescaler8      equ 2
TMRxPrescaler16     equ 3
TMRxPrescaler32     equ 4
TMRxPrescaler64     equ 5
TMRxPrescaler128    equ 6
TMRxPrescaler256    equ 7

    movlw   (1<<TMR0ON) + (1<<T08BIT) + TMRxPrescaler4
    movwf   T0CON
    bsf INTCON, TMR0IE       ;enable TMR0 overflow interrupt 
;};

После инициации MCPU не забудьте включить прерывания ...

    bsf     INTCON, GIE

ISR рутин:

ISR
    bcf INTCON, TMR0IF              ;demask TMR0 overflow interrupt
;your ISR code
    retfie  1

При подсчете числа оборотов ISR числа переполнений TMR0 для частоты процессора 10 МГц: 10000000/4/1024 = 2441,4 переполнения в течение одной секунды

Я рекомендую использовать только одну процедуру ISR, где вы обрабатываете оба события.

...