version 0.0 : 27 juin 2019
rev ......



Le PIC 16(F) ou (L)1847 :

en connectique Dip18
Utilisé avec Fosc Interne =32Mhz ( 8Mhz x 4PLL)
Available RAM: 1008 [bytes], Available ROM: 8192 [bytes])


Pinout


images/_16F1847_pinout_18pin.gif

Hardware :






Test du Generateur programmable de Frequence

datasheet DS40001453E
6.0 REFERENCE CLOCK MODULE
The reference clock module is controlled by the CLKRCON register (Register 6-1) and is enabled when
setting the CLKREN bit. To output the divided clock signal to the CLKR port pin, the CLKROE bit must be
set. The CLKRDIV<2:0> bits enable the selection of eight different clock divider options. The
CLKRDC<1:0> bits can be used to modify the duty cycle of the output clock(1).
The CLKRSLR bit controls slew rate limiting.


Le 16F1847 utilise son horloge interne FOSC=8MHz x PLL => 8x 4 = 32MHz
au depart OSCTUNE=0 ( valeur nominale)
La sortie CLKR est affectée d'office à la pin RA6 ( ne pas activer CLOCKOUT_EN dans la config bits !)
Suivant la valeur de DIV ,on obtient 8 frequences de sortie possibles
Suivant la valeur de DUT , on obtient 25 , 50 , ou 75% de rapport cyclique ( sans modifier la frequence)

J'utilise SQA IKALOGIC Analyser pour les mesures (echantillonnage des 4 voies à 50MHz)
la sortie RB3est utilisée pour declencher les mesures
L'UART1 RB1=RX et RB2=TX permet l'affichage et la saisie des parametres DIV et DUT
relation Index parametre d'entrée et parametre appliqué pour le registre CLKRCON

unsigned char Diviseur,Duty;
unsigned char Gamme_Diviseur[]={1,2,4,8,16,32,64,128};
unsigned char Gamme_Duty[]={0,25,50,75};

exemple à l'init programme :

Duty=2; //50%
CLKRCON= CLKRCON & 0xE7;
CLKRCON= CLKRCON | (Duty<<3) ; // Duty 1 à 3
//CLKRDIV<2:0> Reference Clock Divider bits
Diviseur=4; // 16
CLKRCON=CLKRCON & 0xF8;
CLKRCON=CLKRCON | Diviseur; // diviseur 1 à 7 ( 1 à 128)

La commande clavier se fait par les mots clés DIV=x ou DUT=y
L'UART recoit les commandes par interruption.
L'indice du parametre est verifié, puis appliqué ,si dans les limites imposées.

Un test Specifique a été fait avec OSCTUNE ,mini et maxi


Resultats :



Check avec analyser


DIV by 4 et Duty_Cycle=50% DIV by 8 et Duty_Cycle=50% DIV by 128et Duty_Cycle=50%
OSCTUNE pour FOSC mini OSCTUNE pour FOSC nominale OSCTUNE pour FOSC Maxi


Autres valeurs de DUT

Diviseur=128 Duty_Cycle=25% Diviseur=128 Duty_Cycle=75%



Le projet MikroC (version 7.40 )
16F1847_UART_RB2_RB1_RX_Interrupt_test_CLRKout_190627.zip
source MikroC:
_16F1847_UART_RB2_RB1_RX_Interrupt_test_CLRKout_190627.c
Chargeur :
16F1847_test_CLKROut_RA6_Uart_RB2_RB1_RX_interrupt_190627.hex

et on en fait QUOI ? concretement ?
....Generateur de frequence ajustable à +-3% via la valeur de OSCTUNE , modifiable par clavier, ou par touches directes sur entrees MCU.
...Gamme de frequence davantage variable , avec la combinaison de reglage FOSC 500Khz à 16 MHz
..et si on rajoutait un mini DDS sur la sortie DAC RA2 pour avoir un petit Gene BF sinus ? en plus
.


paulfjujo@free.fr


../common/GIF/LTC1286p.jpg



Retour à l'index general