ШИМ на PIC18 с использованием CCP4 - PullRequest
0 голосов
/ 18 июня 2020

У меня проблемы с настройкой ШИМ на моем PIC18F45K22. Я могу заставить его работать на CCP1 с помощью timer2, но я хотел бы использовать CCP4 и timer4, поскольку я планирую использовать CCP1 и timer2 в другом месте.

Кодирую на сборке (mpasm v5.87). Я не уверен, почему этого не происходит на CCP4 с timer4, даже если тот же код работает для CCP1 с timer2. Ниже мой код, так что, надеюсь, гений PI C может обнаружить мою ошибку.

    ; Set oscillator speed at 4 MHz
    bsf     OSCCON, IRCF0
    bcf     OSCCON, IRCF1
    bsf     OSCCON, IRCF2

    ; Initialize Port D
    clrf    PORTD
    clrf    LATD
    bsf     TRISD, CCP4

    ; Set up Timer 4
    clrf    T4CON
    clrf    TMR4

    ; Select timer4 for PWM
    bcf     CCPTMRS1, C4TSEL1
    bsf     CCPTMRS1, C4TSEL0

    ; Setup period of PWM
    movlw   .10
    movwf   PR4

    ; Configure CCP4CON for PWM
    ; CCP4M<3:0> = 11XX for PWM
    movlw   b'00001100'
    movwf   CCP4CON

    ; Set duty cycle at 50%
    movlw   .5
    movwf   CCPR4L

    ; Clear timer4 interrupt flag
    bcf     PIR5, TMR4IF

    ; Start timer4
    bsf     T4CON, TMR4ON

    ; RD1 as output
    bcf     TRISD, CCP4

1 Ответ

0 голосов
/ 21 июня 2020

Я решил проблему.

Я понял, что T4CON, TMR4, CCPTMRS1, PR4 и CCPR4L не находятся в банке доступа, а соответствующие регистры для timer2 и CCP1 находятся в банке доступа.

Все, что мне нужно было сделать, это выбрать банк 15 с MOVLB 0x0F

...