Steven Smith Inserito: 31 agosto 2007 Segnala Share Inserito: 31 agosto 2007 Salve a tutti, e ben tornati dalle ferie...Ho un problema col 16f88, in quanto riesco ad impostare il pwm e va perfettamente, ma non riesco a spegnerlo nè a cambiare il duty cycle...Sui datasheet della microchip ho letto che il registro CCPR1L è di sola lettura quando il pwm è in funzione e quindi bisogna spgnerlo per cambiare valore, inoltre sui codici esempio dei datasheet usano gli interrupt e non riesco a capire perchè... Vi posto qui il codice in assembler esempio e se qualcuno vorrà darmi una mano.. Grazie!!!CLRF CCP1CON ; CCP Module is offCLRF TMR2 ; Clear Timer2MOVLW 0x7F ;MOVWF PR2 ;MOVLW 0x1F ;MOVWF CCPR1L ; Duty Cycle is 25% of PWM PeriodCLRF INTCON ; Disable interrupts and clear T0IFBSF STATUS, RP0 ; Bank1BCF TRISB, PWM1 ; Make pin outputCLRF PIE1 ; Disable peripheral interruptsBCF STATUS, RP0 ; Bank0CLRF PIR1 ; Clear peripheral interrupts FlagsMOVLW 0x2C ; PWM mode, 2 LSbs of Duty cycle = 10MOVWF CCP1CON ;BSF T2CON, TMR2ON ; Timer2 starts to increment;; The CCP1 interrupt is disabled,; do polling on the TMR2 Interrupt flag bit;PWM_Period_MatchBTFSS PIR1, TMR2IFGOTO PWM_Period_Match;; Update this PWM period and the following PWM Duty cycle;BCF PIR1, TMR2IF Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 1 settembre 2007 Segnala Share Inserita: 1 settembre 2007 Ciao ,leggendo nel data sheet il registro che diventa di sola lettura é il CCPR1H, ma non si usa per modificare il duty cycle.devi usare il CCPR1L e il CCP1CON con la seguente regolaPWM Duty Cycle = (CCPR1L:CCP1CON<5:4>) •TOSC • (TMR2 Prescale Value).in realtá il CCPR1L e i bit 4,5 del registro CCP1CON diventano un reg di 10bit per definire il nuovo duty.questi 2 li puoi modificare quando vuoi.usa il ciclo che suggerisce il data sheet per impostare il pwm9.3.3 SETUP FOR PWM OPERATIONThe following steps should be taken when configuringthe CCP module for PWM operation:1. Set the PWM period by writing to the PR2register.2. Set the PWM duty cycle by writing to theCCPR1L register and CCP1CON<5:4> bits.3. Make the CCP1 pin an output by clearing theTRISB<x> bit.4. Set the TMR2 prescale value and enable Timer2by writing to T2CON.5. Configure the CCP1 module for PWM operation.se hai problemi chiedi pure Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora