Bonjour,

Je souhaite générer avec un PIC16F616 un signal carré à rapport cyclique variable. Le programme que j'ai réalisé pour le moment crée bien le signal, mais sur une periode trop courte. L'intervalle de temps entre lequel le rapport cyclique varie entre 0 et 100% doit être de 10s, or je n'arrive à obtenir qu'un temps de 200ms! Quelqu'un s'aurait-il comment je peux faire pour résoudre ce problème. Et puis-je faire varier le rapport cyclique avec un pas inferieur à 1?
Voici le code que j'ai deja réalisé.

LIST p=16F616 ; Définition de processeur
#include <p16F616.inc> ; fichier include

;***************************** ****************************** ******************
; ASSIGNATIONS SYSTEME *
;***************************** ****************************** ******************

OPTIONVAL EQU B'10000000' ;Registre OPTION_REG

DIRPORTC EQU B'00000000' ;PORTC en sortie

;***************************** ****************************** ******************
; DECLARATION DES VARIABLES *
;***************************** ****************************** ******************

; Définition des constantes utilisées dans le programme

PR2VAL EQU 0x65 ; Définition de la période
DCB EQU D'1' ; Définition du rapport cyclique
CCP1X EQU B'00000000'
CCP1Y EQU B'00000000'

;***************************** ****************************** ******************
; MACRO *
;***************************** ****************************** ******************

BANK0 macro ; Passage en banque 0
bcf STATUS,RP0
bcf STATUS,RP1
endm

BANK1 macro ; Passage en banque 1
bsf STATUS,RP0
bcf STATUS,RP1
endm

;***************************** ****************************** ******************
; DEMARRAGE *
;***************************** ****************************** ******************

org 0x000 ; Adresse de départ après reset
goto init ; Initialiser

;***************************** ****************************** ******************
; INITIALISATIONS DES PORTS *
;***************************** ****************************** ******************

init
BANK0 ; Sélection de la banque 0
clrf PORTC ; Mise à 0 du PORTC

BANK1 ; Sélection de la banque 1
movlw DIRPORTC ; Direction PORTC
movwf TRISC ; Ecriture dans registre direction

;***************************** ****************************** ******************
; PROGRAMME PRINCIPAL *
;***************************** ****************************** ******************

start
; Création d'un signal carré à rapport cyclique variable grâce au mode PWM

BANK1 ; Sélection de la banque 1

; Configuration de la periode du signal
movlw PR2VAL ; Chargement de la periode
movwf PR2

; Configuration du rapport cyclique
BANK0
movlw DCB ; Chargement du rapport cyclique
movwf CCPR1L ; Valeur du rapport cyclique chargé dans le registre CCPR1L

; Initialisation du timer 2
BANK0
movlw B'00000110' ; Initialisation des prédiviseurs du timer2 (PRD=16)
movwf T2CON ; Activation du timer2 fonctionnant pour le mode PWM

;***************************** ****************************** ****************************** ****

movf CCP1CON,W
movlw B'00111100' ; Configuration du mode PWM pour la sortie RC5
movwf CCP1CON

;***************************** ****************************** ****************************** ****

boucle
movf CCPR1L,W ; Chargement de la valeur de CCPR1L dans W
addlw D'1' ; Incrémentation du rapport cyclique dans le registre W
movwf CCPR1L ; Rechargement de la valeur dans CCPR1L après incrémentation
goto boucle ; Rebouclage à l'étiquette "boucle"
END ; Fin du programme

Je vous remercie pour vos réponses.