besoin d'aide pour les essais de ADC

R

rajashekar333

Guest
Salut, comment puis-je tester FLASH 6 bits méthodes ADC.Howmany sont là pour test.Can une quelconque aide ou de suggérer des liens pour material.Thanks en ADV --

 
Si vous utilisez C, voici un échantillon A / D programme de test

/ *
ADC et série UART Test Program
Date: 7-21-05
Auteur: Evan Dudzik

Ce programme est un exemple d'interfaçage avec deux pièces de matériel dans les PIC:
le convertisseur analogique-numérique et de l'UART, ainsi que d'utiliser les interruptions.

Le programme se lit comme suit en permanence la valeur ADC, et quand elle change, les résultats via de série.
La sortie peut être soit un seul caractère (0-255),
ou codées en ASCII décimal facile à consulter dans un terminal,
en commentant simplement la ligne appropriée dans la fonction principale.

Comme un simple test, le programme a également reçu des échos des caractères à l'hôte.
De cette façon vous pouvez taper dans un terminal pour vérifier la communication série.
* /

# include <system.h>
# pragma DATA 0x2007, 0x3F50 / / _INTRC_IO & _WDT_OFF & _LVP_OFF

/ / bits important dans de SFR pour l'ADC, UART, et d'interruption.
peu volatils go@ADCON0.GO;
gie@INTCON.GIE peu volatiles;
rcie@PIE1.RCIE peu volatiles;
peie@INTCON.PEIE peu volatiles;
rcif@PIR1.RCIF peu volatiles;
peu volatils trmt@TXSTA.TRMT;

char data_in;
newdata bits;

/ / routine d'interruption de service
void interrupt (void)
(
if (Rcif) / / UART Recevoir Interrupt
(
data_in = rcreg;
newdata = 1;
rcreg = 0;
)
)
/ / Fonction: lit une valeur de l'ADC
/ / Retourne: octet le plus significatif de résultat
inline adc_read char ()
(
go = 1;
while (go);
retour adresh;
)

/ / Fonction: Envoie un seul octet à la série UART.
sendbyte inline void (char b)
(
txreg = b;
while (! trmt) ();
)

/ / Fonction: Envoie un caractère ASCII décimal
senddecimal void (char b)
(
char temp, temp2;
temp = b;
temp2 = temp/100;
sendbyte ('<');
sendbyte (temp2 '0 ');
temp = temp% 100;
temp2 = temp/10;
sendbyte (temp2 '0 ');
temp = temp% 10;
sendbyte (temp '0 ');
sendbyte ('>');
)

void main ()
(
//*********************//
/ / I configurer ports E / S / /
//*********************//
PORTB = 00000000b;
TRISB = 11111111b; / / 0 = Sortie, 1 = Entrée
PORTA = 00000000b;
Trisa = 11111111b; / / 0 = Sortie, 1 = Entrée

//***************//
/ / Configure ADC / /
//***************//

osccon = 01110000b; / / oscillateur interne @ 8MHz
cmcon = 00000111b; / / comparateurs off
Ansel = 00000001b; / / AN0 sur (RA0)
adcon1 = 00000000b; / / justification à gauche, FOSC / 2 heure, Vdd et Vss tensions ref
adcon0 = 00000001b; / / mettre à AN0, ADC exploitation

//*****************//
/ / Configure USART / /
//*****************//

spbrg = 51; / / 9600 baud @ 8MHz
txsta = 00100100b; / / full duplex asynchrones
RCSTA = 10010000b; / / full duplex asynchrones
RCIE = 1; / / enable RX interrompre
peie = 1; / / enable interrupts périphériques (nécessaire pour les RX)
GIE = 1; / / global Interrupt Enable

char adcval, temp;

while (1)
(
= temp adc_read ();
if (temp! = adcval)
(
adcval = temp;
sendbyte (adcval);
/ / senddecimal (adcval); / / utiliser ce lieu pour mieux sortie dans HyperTerminal
)
if (newdata) (newdata = 0; sendbyte (data_in);)
delay_ms (5);
)
)

 
danymic: FFT
statique: histogramme de densité du code
Outil: Matlab ou LabVIEW

 
Merci à tous.Je n'utilise pas de «C» aux test.Can exlain personne de FFT Méthode d'essai.
FFT méthode d'essai est de trouver i SINAD.can utiliser les mêmes pour tester l'INL et de DNL.

 

Welcome to EDABoard.com

Sponsor

Back
Top