J'ai fais le test sur la même carte, qui dispose d'un quartz externe (10MHz):
- En utilisant ce quartz comme horloge, mon programme fonctionne bien.
- Lorsque j'utilise l'oscillateur interne (8MHz que je retrouve bien à l'oscillo), mon programme ne fonctionne plus. Ai-je oublié de régler des paramètres? Voici ce que j'ai fait :
Carte avec oscillateur externe :
Code : Tout sélectionner
// CONFIG1H
#pragma config OSC = HSPLL // Oscillator Selection bits (HS oscillator, PLL enabled (clock frequency = 4 x FOSC1))
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF // Internal External Oscillator Switchover bit (Internal External Switchover mode disabled) Carte avec oscillateur interne :
Code : Tout sélectionner
// CONFIG1H
#pragma config OSC = IRCIO // Oscillator Selection bits (Internal oscillator block, port function on RA6 and port function on RA7)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF // Internal External Oscillator Switchover bit (Internal External Switchover mode disabled) Configuration du registre OSCCON dans mon programme :
Code : Tout sélectionner
void Config_Oscill (void)
{
//OSCCONbits.IDLEN = 0x0; // Run mode enabled; CPU core is clocked in power-managed modes
OSCCONbits.IRCF = 0x7; // 8 MHz (8 MHz source drives clock directly)
OSCCONbits.SCS = 0x2; // Internal oscillator block (RC modes) }
J'ai fais les ajustements dans mon programme concernant toutes les bases de temps (étant donné que je passe d'une horloge de 40Mhz à 8MHz), donc je ne comprends vraiment pas d'où vient le bug. Si vous pouvez m'éclairer, ce serait gentil.
D'avance merci !!





pour les remarques