Bonjour,
Je débute en programmation de microcontrôleur et je cherche a utiliser un timer avec un oscillateur externe (un quartz 4MHz). Le microcontrôleur utiliserait l'oscillateur interne et le timer serait sur l'oscillateur externe mais mon problème c'est que j'arrive à faire clignoter ma LED si je met le timer sur l'oscillateur interne mais pas avec le quartz. Je pense que mon problème vient des registre mais je n'arrive pas à trouver ce que je fait faux.
Le programme est très simple il fait juste clignoter une LED.Code:#include<htc.h> // Config word __CONFIG(FOSC_INTRCCLK & WDTE_OFF & PWRTE_ON & MCLRE_OFF & BOREN_ON & CP_OFF & CPD_OFF); // Define CPU Frequency #define _XTAL_FREQ 4000000 void InitTimer1(void) { TMR1H = 0; //Byte de poid fort de la valeur courante du timer TMR1L = 0; //Byte de poid faible de la valeur courante du timer T1IF = 0; //Timer1 a dépassé la valeur max T1IE = 1; //(Interrupt enable bit) Quand le timer dépasse il déclenche une fonction de type interrupt PEIE = 1; //Active les interruptions GIE = 1; //Active les interruptions venant des périphétiques interne de PIC T1CON = 0b00001111; // ICI QUAND JE MET 0b00000001 CA FONCTIONNE MAIS AVEC L'OSCILLATEUR INTERNE } // Define LED pin #define LED GP2 unsigned long compteur = 0; void interrupt Toggle() { if(T1IF) { compteur = compteur + 1; if (compteur == 1) { LED = ~LED; T1IF = 0; compteur = 0; } } } // Main function void main() { ANSEL = 0x00; // Set ports as digital I/O, not analog input ADCON0 = 0x00; // Shut off the A/D Converter CMCON = 0x07; // Shut off the Comparator VRCON = 0x00; // Shut off the Voltage Reference TRISIO = 0x08; // GP3 input, rest all output GPIO = 0x00; // Make all pins 0 InitTimer1(); while(1) { } }
Voilà, pour info j'utilise MPLAB X V3.0 beta 2 avec un Pickit 2.
Merci d'avance.
-----