Bonjour tout le monde,
Dans le cadre de mon projet de fin d'étude intitulé 'régulation de fréquence d'un alternateur hydraulique' je suis amené (après réalisation de la carte) à développer un code sur mikroc pour PIC16F917 qui mesure la fréquence de tension de cet alternateur.
Le code est celui la :
le Timer 1 est fait pour fixer une seconde et on compte le nombre des interrupts externes via RB0/INT. la fréquence de programmation est fixé par un quartz 20Mhz. Le signal d'entrée à RB0/INT est un signal carré de fréquence vartiable entre 50hz et 150Hz.Code:long int compteur1=0; bit flag1 ; double freq=0; long int compteur2=0; void Init(){ trisd=0; T1CON = 0x01; TMR1IF_bit = 0; TMR1H = 0xB4; TMR1L = 0x73; TMR1IE_bit = 1; TMR1ON_bit = 0; INTCON = 0xC0; INTE_bit = 1; } void Interrupt(){ if (TMR1IF_bit){ TMR1IF_bit = 0; compteur1++ ; if (compteur1=77) { flag1=1; INTCON=0x00; } } if (INTF_bit) { TMR1ON_bit=1; INTF_bit = 0; compteur2++; } } void reset() { flag1=0; compteur1=0; compteur2=0; TMR1H = 0xB4; TMR1L = 0x73; INTCON=0xC0; } void main() { Init(); reset(); for (;;) { if (flag1==1) { freq=compteur2; for (;;) { if (freq<50) { portd=0b00000001; } if (freq>51) { portd=0b00000010; } } reset (); } } }
La fréquence normalement est le nombre d'interrupt pendant une seconde. le nombre d'interrupt = nomre de front montant pendant une seconde.
normalement le programme devrait fonctionner mais non XD.
En attente d'une réponse de votre part mes amis les électroniciens, veuillez agréer mes sincères salutations.
-----