Nápověda třeba testování ADC

R

rajashekar333

Guest
Ahoj, jak může i testu FLASH 6 bitů ADC.Howmany metody jsou tam test.Can někdo pomoci, nebo navrhnout nějaké odkazy na material.Thanks v adv --

 
Používáte-li C, tady je vzorek A / D testovací program

/ *
ADC a Serial UART Testovací program
Datum: 7-21-05
Autor: Evan Dudzik

Tento program je příkladem propojení s dvou kusů hardwaru v rámci PIC:
analogové na digitální převodník a UART, stejně jako použití přerušení.

Program neustále čte hodnotu ADC, a když se změní, výstupů přes sériový.
Výstup může být buď jediný znak (0-255),
nebo zakódovaných do desítkové soustavy ASCII pro snadné prohlížení v terminálu,
jednoduše komentoval mimo příslušnou řádku v hlavní funkci.

Jako jednoduchý test, program i echos obdržel znaky zpět do počítače.
Tímto způsobem můžete zadat v terminálu program pro kontrolu sériové komunikace.
* /

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

/ / důležité bity v SFR pro ADC, UART, a přerušení.
volatile trochu go@ADCON0.GO;
volatile trochu gie@INTCON.GIE;
volatile trochu rcie@PIE1.RCIE;
volatile trochu peie@INTCON.PEIE;
volatile trochu rcif@PIR1.RCIF;
volatile trochu trmt@TXSTA.TRMT;

char data_in;
bitů newData;

/ / přerušení provozu běžné
void přerušení (void)
(
if (rcif) / / UART Receive Přerušení
(
data_in = rcreg;
newData = 1;
rcreg = 0;
)
)
/ / Funkce: Čte jednu hodnotu z ADC
/ / Vrací: nejvýznamnější bajt výsledku
inline char adc_read ()
(
go = 1;
while (go);
návrat adresh;
)

/ / Funkce: pošle jeden bajt s hardwarem sériové UART.
inline void sendbyte (char b)
(
txreg = b;
while (! trmt) ();
)

/ / Funkce: Pošle znak jako desetinné ASCII
void senddecimal (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 ()
(
//*********************//
/ / Nastavení I / O portů / /
//*********************//
portb = 00000000b;
trisb = 11111111b; / / 0 = výstup, 1 = vstup
porta = 00000000b;
trisa = 11111111b; / / 0 = výstup, 1 = vstup

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

osccon = 01110000b; / / @ 8MHz interní oscilátor
cmcon = 00000111b; / / komparátory off
Ansel = 00000001b; / / AN0 na (RA0)
adcon1 = 00000000b; / / zarovnáno doleva, fosc / 2 hodiny, Vdd & Vss ref. napětí
adcon0 = 00000001b; / / nastavit na AN0, ADC provozní

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

spbrg = 51 / / 9600 Bd @ 8MHz
txsta = 00100100b; / / full duplex asynchronní
rcsta = 10010000b; / / full duplex asynchronní
rcie = 1; / / povolit přerušení RX
peie = 1; / / periferní povolit přerušení (nutné pro RX)
GIE = 1; / / globální přerušení povolit

char adcval, temp;

while (1)
(
temp = adc_read ();
if (temp! = adcval)
(
adcval = temp;
sendbyte (adcval);
/ / senddecimal (adcval) / / použít místo pro čistší produkce v HyperTerminal
)
if (newData) (newData = 0; sendbyte (data_in);)
delay_ms (5);
)
)

 
danymic: FFT
statická: kód hustoty histogramu
Nástroj: Matlab nebo LabView

 
Díky všem.Nejsem pomocí 'C', aby test.Can někdo exlain o způsobu testování FFT.
FFT testovací metoda je najít SINAD.can i používat stejný testovat INL a DNL.

 

Welcome to EDABoard.com

Sponsor

Back
Top