Sida 1 av 1

AD fråga om TAD

Postat: 2 mars 2008, 16:53:30
av dangraf
Jag har tidigare höftat till värden på AD omvandlaren och fått den till att fungera. Nu håller på jag att läsa genom databladet för att faktiskt förstå hur man ska ställa in AD omvandlaren, men givetvis dyker det upp lite frågetecken som behövs rätas ut. Det jag funderar över är hur man ska tänka för att ställa in hur lång tid ett sampel ska ta.

databladet hittar man här:
http://ww1.microchip.com/downloads/en/ ... 0065D.pdf

Jag kör e 30F6012A dspic, intern oscillator på 7.37Mhz och 3.3V.
enligt databladet så skall TAD vara minst 666.67ns för att kunna köra 100000 omvandlingar /sekund => 1 sample 10uS.

Det står "The A/D conversion requires 14 clock periods
(14 TAD)" (kap 18.7).


Då tänker jag "ok, då är det väl bara att ställa in periodtiden till ADCn så att den blir 666ns beroende på vilken oscillator jag använder"

I ADCON3 registret kan man ställa in:
"Auto Sample Time bits
SAMC (0-31 TAD)
samt ADCS (1/2 Tcy - 32 Tcy).

Det finns även 2 formler i kap 18.7 som ser ut:

TAD = (TCY (ADCS + 1) )/2

=> ADCS = (2 TAD)/(TCY) -1

Mina frågor är:
1. Vaför används TAD som input när den i hårdvaran behöver vara 14 för en komplett omvandling?
2. hur fungerar SAMC då man kan sätta antalet TAD?
3. i exemplet i kap 18.21.1 säts sampeling time till 1TAD, får man ett resultat på mindre än 1 bit då? Det låter helt ologiskt. Jag ser inte ens att de använt sig av TCY i sin uträkning, de nämner inte ens hastigheten på dsp'n.

Ni behöver kanske inte besvara frågorna enligt nummer, men en förklaring som knyter samman fakta med inställningar hade varit till hjälp för mig.

/ Daniel

Postat: 4 mars 2008, 10:56:19
av dangraf
Ingen som har nått att säga? Det var ovanligt, inte ens några tykna inlägg om att information fattas :-) Var inlägget för långt? Svamlar jag för mycket??

här är en kortfattad version till:

Hur tar man reda på vad man ska ha för inställning i ADCS registret och SAMC registret med hjälp av formeln som finns i databladet?

/Daniel

Postat: 4 mars 2008, 11:58:40
av sodjan
> Ingen som har nått att säga?

30F är inte den vanligaste serien här på forumet.
Personligen orkar jag inte ladda ner databladet.
Men det var väl inte det du ville veta... :-)

Postat: 4 mars 2008, 13:15:47
av dangraf
hehe, nä, det ville jag inte veta :-)
Kan bara informera om att öppna databladet är den lätta biten, läsa och förstå är jobbigare så du gjorde nog rätt ;-)

Postat: 4 mars 2008, 20:41:24
av probe
Leta runt på microchips sida - ofta har de en massa specialdokument som tyvärr inte är helt självklara att hitta...

Det är nog inte direkt knöligt, men inte helt sällan är de förklaringarna lite... märkliga att förstå ibland i databldet, men ofta väldigt pedagogiskt i övriga dokument. Minns att jag satt och kliade mig svårt i skallen när jag försökt lista ut timingen exakt på 16F för några år sedan. Minnns inte längre hur det hängde ihop längre, men det GÅR lista ut om man bara ger det tiden...

Postat: 4 mars 2008, 22:05:25
av Henrik
1. Vaför används TAD som input när den i hårdvaran behöver vara 14 för en komplett omvandling?
Jag har inte läst databladet men påståendet måste referera till en känd(låg) källimpedans. Dvs, det du mäter på laddar lätt upp kondensatorn i din pic.
Har du däremot en koppling med en motsvarande resistans i serie med A/D-pinnen (jag kallar det källresistans, har för mig microchip säger Rs), behöver kondingen längre tid på sig att bli full. Och då behöver man kunna styra längden på A/D-omvandlingen.

En ytterligare anledning till att ha koll på källresistansen är att pic i typfallet driver eller sänker ström (av diverse anledningar, den viktigaste är läckström) på a/d-pinnen. Vilket påverkar mätningen om inte mätobjektet kan övervinna denna ström med råge.

Postat: 5 mars 2008, 20:44:09
av probe
Jamen bara det lilla problemet. PICen skiftar ingång när du ärndrar i ADCON eller vad registret nu heter och SH-kondingen börjar laddas så fort du ändrar inställningen vilket du kan göra så fort GO/DONE är clearad. Så ändrar du ingång så fort detta är klart (och innan du startar nästa omvandling så spar du tid.

Asså... Det är två OLIKA problem som styr hastigheten:

1. Källinpedans//laddningstid av SH-kondingen (och i viss mån styrs detta av sampleswitchens impedans i de fall källinpedansen är låg. Ja ghar för mig att denna stiger med sänkt matningsspänning till PIC också. Detta problem minskar om du bara kör med 8-bitar (eller ANVÄNDER 8-bitar) av den enkla orsaken att det tar kortare tid att nå "samma" spänning på SH som hos källan om kravet på max fel är lägre. I grunden så har du oändlig upplösing som kommer denna tid att bli oändligt lång också - enligt grundläggande ellära.

2. Tiden för att omvandla spänningen i SHC till ett digitalt värde, detta beror på inställningen av klockfrekvens samt delningsfaktor till denna klocka. Detta finns klart beskrivet i databladet och är tiden från att du sätter GO till dess den går låg igen. Det är lätt att räkna ut tiden så länge du kör med något nerdelat ifrån mainklockan, det GÅR även att klocka denna med en separat (inbyggd) klocka och frekvensen på denna är ej PLLád till mainklockan (den fungerar även vid sleep) och den är ej heller stabil utan beror på matningspänning, individ av chip och av temperatur rätt mycket så i dessa fall är det inte annat än inse att du inte kan få koll på timingen då det kommer att ta olika lång tid från gång till gång - men går ju få interupt när GO/DONE är klar så inget jätteproblem. Man kan ju annars polla GO/DONE om applikationen tillåter detta.

Postat: 7 mars 2008, 10:32:54
av dangraf
"Tiden för att omvandla spänningen i SHC till ett digitalt värde, detta beror på inställningen av klockfrekvens samt delningsfaktor till denna klocka. Detta finns klart beskrivet i databladet och är tiden från att du sätter GO till dess den går låg igen"

Vart står detta klart i databladet hur man ställer in? Jag förstår oxå att man ska klocka ner oscillatorhastigheten vilket jag skrivit i mitt första inlägg.

Jag har till och med skrivit ut formeln i mitt inlägg, men tycker inte att det står klart i referensdatabladet till ADn.

Skulle du kunna ge ett exempel om jag t.ex ska sätta upp 100ksamples
med en oscillator som går på 7.37Mhz (en instruktion tar 4 klockcykler).

Postat: 7 mars 2008, 12:02:36
av sodjan
> 100ksamples med en oscillator som går på 7.37Mhz

Om jag ser rätt så kommer du straxt över 100 Ksamples/sec med
ADCS<5:0> = 0. Med andra ADCS inställningar blir det ca 65 Ksamples/sec
och neråt...

Varför köra så långsamt ?

Postat: 7 mars 2008, 13:36:21
av dangraf
jag tänkte jag skulle börja nånstans och få reda på hur jag räknar ut mina värden till ADCS och SAMC så att jag får AD värden jag kan lita på.

Ställer jag in OSCON för att köra PLL x 16 och sedan ändrar ner till PLL x1 så får jag ju vänta väldigt länge på att en AD omvandling ska bli klar. AD registerna måste följa oscillatorn.

f(klockfrekvens, samplingshastighet) => värde ADCS och värde SAMC

fortfarande har jag inte förstått hur jag ska använda formlerna från databladet:

TAD = (TCY (ADCS + 1) )/2

=> ADCS = (2 TAD)/(TCY) -1
Men jag tycker det verkar rörigt i databladet och behöver hjälp med att förstå hur jag får rätt inställingar och vad inställningarna gör.