bonjour à tous,
J'ai trouvé ce code sur le site de cours : http://www.aix-mrs.iufm.fr/formation...indexPIC_C.htm
Je le comprends et je sais qu'il permet de mesurer une période entre deux fronts montants d'un signal sur la pin RC2 à l'aide du module capture associé au timer1.Code:#include <p18f452.h> unsigned int duree=5555; char maj=1; //sous programme d'interruption #pragma interrupt itcomp void itcomp(void) { unsigned static int ancien; if(PIR1bits.CCP1IF) { duree=CCPR1; maj=1; } PIR1bits.CCP1IF=0; } #pragma code interruption=0x8 void ma_fonction (void) { _asm goto itcomp _endasm } #pragma code void main(void) { // configure PORTC CCP1 DDRCbits.RC2=1; // RC2/CCP1 en entree // configure le TIMER1 T1CONbits.RD16=0; // TMR1 mode simple (pas de RW) T1CONbits.TMR1CS=0; // compte les impulsions sur internal clock T1CONbits.T1CKPS1=1; // prediviseur=1/8 periode sortie = 0.5us par cycle T1CONbits.T1CKPS0=1; T1CONbits.T1SYNC=1; // pas de synchroniastion sur sleep/Reset T1CONbits.TMR1ON=1; // TMR1 Activé // configure le mode capture sur le TIMER1 avec IT sur CCP1 T3CONbits.T3CCP2=0; // mode comparaison entre TMR1 et CCPR1 CCP1CON=0x05; // capture mode sur fronts montants PIE1bits.CCP1IE=1; //active IT sur mode capture/comparaison CCP1 RCONbits.IPEN=1; // Interruption prioritaires activées INTCONbits.GIE=1; // Toutes les IT démasquées autorisées while(1) { if(maj){ maj=0; } } }
Je possède le pic 18f2550, exactement celui-ci : http://www.tigal.com/product/2132
De la même manière j'ai un signal carré connecté à la pin RC2 et je souhaites allumer ou éteindre des Leds (pin RA0 à RB2) de manière progressive en fonction de la période de mon signal.
Mon signal a une période comprise entre 31500µs et 2000µs. Donc je n'ai normalement pas de débordement du Timer1.
Comment adapter ce code dans mon cas?
et ce qui concerne les bits de configuration?
Merci beaucoup de votre aide
-----