【问题标题】:PWM on a PIC18 using CCP4使用 CCP4 在 PIC18 上进行 PWM
【发布时间】:2020-06-18 19:38:05
【问题描述】:

在我的 PIC18F45K22 上设置 PWM 时遇到问题。我可以使用 timer2 让它在 CCP1 上工作,但我想使用 CCP4 和 timer4,因为我计划在其他地方使用 CCP1 和 timer2。

我正在汇编代码 (mpasm v5.87)。我不确定为什么它不会在带有 timer4 的 CCP4 上运行,即使相同的代码适用于带有 timer2 的 CCP1。下面是我的代码,希望 PIC 天才能发现我的错误。

    ; 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

【问题讨论】:

    标签: assembly pwm pic18


    【解决方案1】:

    我已经解决了这个问题。

    我意识到 T4CON、TMR4、CCPTMRS1、PR4 和 CCPR4L 不在 access bank 中,而 timer2 和 CCP1 的相应寄存器在 access bank。

    我需要做的就是选择带有 MOVLB 0x0F 的 bank 15

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 2017-02-27
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      相关资源
      最近更新 更多