Bonjour,
Je viens de tester pour la première fois la mesure de période/fréquence grâce à l'ECCP
La fréquence à mesurer provient d'un capteur de luminosité TSL235
Pour tester, j'utilise un PIC 18F26K20
La fréquence est fournie par un générateur de fonctions.
Pour visualiser le résultat, j’envoie avec le programme deux mots en SPI que je visualise à l'oscilloscope.
Mon problème actuel est que le mot de poids faible est bon, par contre le mot de poids fort affiche soit 0 soit 255
Sur la photo d'écran on voit, la fréquence à 56K (D2)
la valeur haute 0
la valeur basse 1E
Normalement je devrais avoir 11E soit 286*0.0625µs= 17.8µs soit 55,9kHz
Pourquoi je n'arrive pas à obtenir la valeur haute ?
Merci
Code:void itcomp() { PERIODE=ccpr1-ANCIEN; ANCIEN=ccpr1; MAJ=1; } void main() { ansel = 0x00; anselh = 0x00; osccon=0xf0; osctune=0x40; SPI_Legacy0_SPI_Init(); //Interruption 1 période sur eccp1 st_bit(intcon, GIE); t1con.RD16=0; t1con.TMR1CS=0; t1con.T1CKPS1=0; t1con.T1CKPS0=0; t1con.T1SYNC=1; t1con.TMR1ON=1; t3con.T3CCP2=0; ccp1con=0x05; pie1.CCP1IE=1; rcon.IPEN=1; tmr1h=0; tmr1l=0; //Boucle while (1) { if (MAJ == 1) { //Interruption cr_bit(pie1, TMR1IE); //MSB SPI_Legacy0_SPI_Send_Char(PERIODE >> 8); //LSB SPI_Legacy0_SPI_Send_Char(PERIODE); MAJ = 0; //Pause delay_ms(10); } } mainendloop: goto mainendloop; } void INTERRUPT_MACRO(void) { //Handler code for [ECCP] if(pir1.CCP1IF) { itcomp(); clear_bit(pir1, CCP1IF); // supprimer l'interruption } }
-----