PWM on PIC16F88


Results 1 to 37 of 37

Thread: PWM on PIC16F88

Threaded View

  1. #15
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    I'll bet at least on the configuration fuses settings... AND... is there any specific reason why you want to run your PIC @ 32KHz?

    i didn't did the calc, but i feel your current setting doesn't work anyways...

    try the following
    Code:
            list p=16f88
            INCLUDE "p16f88.inc"
    
            ;       Program Configuration Register 1
            __CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_IO
            
            ;       Program Configuration Register 2
            __CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF
    
            errorlevel -302         ; disable ' ensure .. bank pouet pouet' warning message
    
            BANKSEL OSCCON
            MOVLW   B'01100000'
            MOVWF   OSCCON          ; 4 MHz INT CLOCK MODE
            BTFSS   OSCCON,IOFS     ; wait 'till int osc is stable 
            GOTO    $-1
            
            BANKSEL PORTB           
            CLRF PORTB              ; Clear all 
            CLRF PORTA              ; outputs
            
            BANKSEL TRISA
            CLRF TRISA              ; all pins set to output
            CLRF TRISB              ;
    
            BANKSEL ANSEL
            CLRF ANSEL              ; Disable all ADCs
            
                    ;
                    ;       PWM Setup
                    ;       ---------
            BANKSEL PR2
            movlw .249              ; ~250Hz PWM FREQUENCY
            movwf PR2
    
            BANKSEL T2CON
            movlw b'00000111'       ; prescaler 1:16, Timer2=on
            movwf T2CON
    
            BANKSEL CCP1CON
            movlw b'00001100'       ; pwm mode
            movwf CCP1CON
    
    Start
            BANKSEL CCPR1L
            movlw .250
            movwf CCPR1L            ; set duty cycle to ~max, 100%
            
    Loop1   ;   ((10+bananas) *250) uSec delay loop
            ;   to provide slower fading effect
            goto $+1    
            goto $+1        
            goto $+1
            goto $+1
            goto $+1
            DECFSZ  W,F
            GOTO    Loop1
           
            decfsz CCPR1L,F         ; dimming led by varying the duty cycle
            goto Loop1
            goto Start
            end
    Sorry, ASM is really not my cup of tea So i'll not be surprised if some comes with a better solution, or with some constructive comments on the above (apart that i should care a little bit more about the bank switching... i feel there's a few useless BANKSEL here and there... that's what happen when you're lazy )

    <hr>
    Please, next time, try to not double, triple post the same question on various forum section.
    Last edited by mister_e; - 12th November 2007 at 23:52.
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

Similar Threads

  1. Half-bridge PWM with a 16F684 ?
    By Byte_Butcher in forum General
    Replies: 7
    Last Post: - 17th January 2010, 22:18
  2. Variable PWM PIC18F2431
    By trr1985 in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 12th June 2009, 06:03
  3. PWM setting PIC16F887
    By Gevo in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 12th June 2008, 07:24
  4. Replies: 8
    Last Post: - 7th December 2006, 15:42
  5. Tidying Up PWM Routine
    By Tissy in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 21st February 2005, 00:26

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts