Ce post pour avoir buté sur une mauvaise analyse d'un probleme concernant FOSC INTERNE sur un 18F26K22
pourtant maintes fois utilisé auparavant ..
J'ai activé la sortie du signal FOSC/4 sur la sortie RA6
correspond à config bit CONFIG1H
bit 3-0 FOSC<3:0>: 1001 = Internal oscillator block, CLKOUT function on OSC2
Analyser SQA50 connecté sur RA6 du PIC , pour visu du signal FOSC/4
Avec PLL=1 normalement 8MHzx4= 32MHz RA6 -> FOSC/4= 32/4= 8MHz
j'observe 500nS ce qui est correct à 8MHZ seulement ????
or ma sortie UART1 est OK à 19200 bds !
SQA50 configuré avec sampling rate 10MHz resolution 100nS !
je modifie le sampling rate -> 50Mhz ( le maxi possible!) avec resolution=20nS
et Là, j'observe bien le BON SIGNAL RA6 ..qui donne T=120nS pour une valeur theorique de 32/4=8Mhz T=125nS
Ma conclusion :
il vaut mieux acheter la version 200MHz SQA200 !
attention donc aussi à la version tres bon marché made in RPC
en fait on en a pour son argent ..
Attention aussi si le bit SCS1 de OSCCON est à 1
bit 1-0 SCS<1:0>: System Clock Select bit
1x = Internal oscillator block
01 = Secondary (SOSC) oscillator
00 = Primary clock (determined by FOSC<3:0> in CONFIG1H).
la PLL n'est alors PAS appliquée donc FOSC=8MHZ meme si OSCCON.PLLEN=1
L'UART est à 4800bds au lieu de 19200 bds prévu
A noter que la fonction :
Code : Tout sélectionner
clk = Clock_kHz();
sprintf(txt," Clock initiale = %05u KHz\r\n",clk);
UART1_Write_Text(txt);
donne :
Clock initiale = 32000 KHz
en fait c'est la valeur que l'on met MANUELLEMENT dans le Projet !
Pour verifier FOSC ,Rien ne vaut le test d'un chronometrage allumage led , en tete de programme:
Code : Tout sélectionner
Led=1
Delay_ms(5000);
Led=0;
