Test DAC 18F27K42

Pour ce test , j'utilise ma Base 18F27K42
Alimentation 3,6V
Terminal YAT PC sur UART1 5C6 TXet RC7 RX , via un cordon prolific LTTL/USB
Pickitminus pour le chargement du programme
MikroC 7.60

La sortie DAC est soit sur RA2 , soit sur RB7... choix via l'init du DAC
ATTENTION : la sortie DAC N'EST PAS BUFFERISEE => charge connectable > 100K ohms, sinon forte degradation du signal.
Le programme de test :
Sortie des 32 pas du DAC (RA2) vers l'entree Analogique RA1
on voit bien que la mesure Ana sur 12bits , une fois recadrée en 5 bits , reflete bien la sortie DAC .. (encore heureux !)
ça montre aussi que l'impedance d'entrée de l'entrée ANA est grande ..


L'init du DAC :
J'ai commencé par tourner en rond pour connaitre via que PPS on connectait la poin souhaitée pour le DAC .. en vain
Car c'est dans le registre DAC que le choix est fait

Le DAC est sur 5 bits seulement, donc 32 pas de sortie.
Avec comme reference VBuffer = 2,048V et VSS .. ou autre choix VDD et VSS

void Init_DAC()
{
// DS40001919G-page 598
// FIGURE 34-1:
VOLTAGE REFERENCE BLOCK DIAGRAM
FVRCON.FVREN=1; // fixed voltage reference enabled
FVRCON.TSEN=0; // temperature disabled;
FVRCON.TSRNG=0; // temperature Low range VDD<3,6V
//Comparator and DAC Fixed Voltage Reference Selection bits
FVRCON.CDAFVR1=1;
FVRCON.CDAFVR0=0;
// ref for ADC
FVRCON.ADFVR1=1; // ref=2x1.023=2.048V
FVRCON.ADFVR0=0;

//DS40001919G-page 640
//37.6 Register Definitions: DAC Control
DAC1CON0=0; //
DAC1CON0.DAC1OE1=1; // 1 = DAC voltage level is output on the
DAC1OUT1 pin RA2
DAC1CON0.DAC1OE2=0; //0 => DAC voltage level is disconnected from the DAC1OUT2 pin RB7
//DAC1CON0.DAC1PSS1=0; // DAC Positive Source Select bits 00 = VDD selected
DAC1CON0.DAC1PSS1=1; // DAC Positive Source Select bits 10 = FVR Buffer2 output
DAC1CON0.DAC1PSS0=0;
DAC1CON0.DAC1NSS=0; // DAC Negative reference source selected=
Vss
DAC1CON0.DAC1EN=1; // DAC enable
//REGISTER 37-2: DAC1CON1: DAC DATA REGISTER
DAC1CON1=0; // output=0
//The unbuffered DAC output (DAC1OUTn)is not intended to drive an external load.
}
images/t_18F27K42_DAC_Config.gif
nota : sortie DAC 3,00V crete à crete si usage de VDD comme reference ici VDD=3.3V  

Les tables de sinus ont été realisée via Excel et une macro pour transposer les datas mises à l'echelle
sur un format 16 datas par lignes , afin de copier/ coller ensuite la table dans le programme
*Pour les diffrenets tailles de table , je met une valeur arbitraire élevée pour pouvoir localiser la fin de celle ci , si plus courte que 512 valeurs

Resultats obtenus :
avec FOSC=64Mhz
mesures à l'oscillo .. sans charge sur le DAC
A capture 1108 Hz 4 sinusoides en 512 points + delay 5µS
B capture 2556 Hz 4 sinusoides en 512 points + delay 1µS
C capture 3673 Hz 1 sinusoide en 128 points (zero delay)
D capture 7580 Hz 4 sinusoides en 256 points (zero delay)


Pros: facilité de generer la frequence voulue sans trop de distortion
cons: problematique pour abaisser notablemen 'impedance de sortie de >100K à <100 ohms..sans distortion !

il va sans dire qu'on pourrait monter plus haut en frequence ..avec une soubroutine en ASM !
mais ce n'etait pas le but recherché ici.

Software : (MikroC)
_18F27K42_Gene_BF_DDS_2022_0816.c
18F27K42_Gene_BF_DDS_DAC5b_2022-0816.hex
18F27K42_Gene_BF_DDS_DAC5b_2022.cfg

La suite:

Usage de PWM simili sinus ......

 

 


paulfjujo@free.fr