Sida 1 av 7
Avbruten ADC
Postat: 2 april 2016, 14:15:34
av Erik M
PIC12F1572
Givet är en ADC om 10 bitar och att acquisition time antas vara 10us (för eventuella räkneexempels skull).
Normalt pågår ADC från GO tills /GO.
Och om ADC avbryts innan detta erhålls ändå de bitar som hunnit bli fångade.
Första frågan som infinner sig är i vilken ordning ADC 'n erhålls, alltså bit 9 eller bit 0 först. Intuitivt känns det som bit 9, MSB, skulle erhållas först. Åsså neråt mot bit 0 (och LSB).
Är så fallet?
Re: Avbruten ADC
Postat: 2 april 2016, 14:22:03
av Synesthesia
Ja, man använder successiv approximation: mest signifikanta bit först, så man vet om värdet är över eller under hälften, sedan nästa lägre bit samma sak inom det område som är kvar osv tills man nått sista biten (bit 0).
Re: Avbruten ADC
Postat: 2 april 2016, 14:44:57
av Erik M
Bra, och som förväntat. Tack.
Då kommer vi till den mer intressanta delen av detta.
Om vi nu
antar att acquisition time för 10 bitar är 10us...
...innebär det att det fångas en bit per us?
Och, i förlängningen, att man kan begränsa hur många bitar man bryr sig om att fånga?
Något i stil med detta:
(Vänligen ignorera om just värdet åtta skulle fungera samt även huruvida övrig kod stämmer.)
Kod: Markera allt
MOVLW 0x8
MOVWF ADC_ON
BSF ADCON0, ON
adc_running
DECFSZ ADC_ON
GOTO adc_running
BCF ADCON0, ON
Re: Avbruten ADC
Postat: 2 april 2016, 15:14:55
av sodjan
"Acquisition time" är *innan* omvandlingen startar.
Tiden för att spänningen ska stabilisera sig in till ADC'n.
Du menar "conversion time"...
Re: Avbruten ADC
Postat: 2 april 2016, 15:38:18
av Erik M
Japp, det är just vad jag gör, sodjan.
Och, förresten, låt oss ta ett riktigt exempel istället. Taget från PIC12F683.
Fosc 8MHz = 125ns ger PC = 500ns
Fosc 8MHz & ADC Clock Source Fosc/16 ger
en ADC Conversion Time om 2.0 us
dvs det tar 2us att fånga en enskild bit, 20us för alla tio.
Med en PC om 500ns och en... ADCCT(?) om 2us så torde nedan ge oss 4 bitar, ADRESH<9:6>, av ADC'n...
Kod: Markera allt
MOVLW 0x7
MOVWF ADC_ON
BSF ADCON0, ON
adc_running
DECFSZ ADC_ON
GOTO adc_running
BCF ADCON0, ON
Varje GOTO-loop tar tre PC, där varje PC tar 500ns, dvs 1.5us per loop.
För att fånga fyra bitar behövs alltså minst sex loopar.
Korrekt?
Re: Avbruten ADC
Postat: 2 april 2016, 16:24:18
av sodjan
9.2.3 TERMINATING A CONVERSION.
Du borde ju ha sett texten, men för tydlighet skull:
If a conversion must be terminated before completion,
the GO/DONE bit can be cleared in software. The
ADRESH:ADRESL registers will not be updated with
the partially complete Analog-to-Digital conversion
sample. Instead, the ADRESH:ADRESL register pair
will retain the value of the previous conversion.
Re: Avbruten ADC
Postat: 2 april 2016, 17:02:02
av Erik M
Korrekt, för PIC12F683. Anledningen att jag tog siffrorna från den var att jag visste var de fanns i databladet...
Men nu hittade jag motsvarande tabell för PIC12F1572.
Och det är fortsättningsvis PIC12F1572 jag tänker mig detta för. (Inte för PIC12F683, som det, helt korrekt påpekat, inte skulle fungera med... Ursäkta korsdraget.)
Re: Avbruten ADC
Postat: 2 april 2016, 18:01:05
av Erik M
Och nu då vi vet att siffrorna från PIC12F683 bara var för att ha något riktigt att räkna ifrån - hur blir det då med frågan?
Re: Avbruten ADC
Postat: 2 april 2016, 18:48:48
av lillahuset
Gör som sodjan, läs databladet.
Re: Avbruten ADC
Postat: 2 april 2016, 19:29:08
av Erik M
Jag valde PIC efter egenskaper, det sodjan tar upp är inte relevant. Framförallt inte efter mitt förtydligande.
Och svaret står inte i databladet, vilket jag bevisligen läst.

Re: Avbruten ADC
Postat: 2 april 2016, 19:54:51
av lillahuset
OK, du kanske saknar förmågan att läsa datablad. Du har bevisligen inte läst och förstått iallafall. Det tog mig mindre än en minut att gå in på Microchips hemsida, ladda ner databladet och hitta svaret.
Tråkigt nog får du anstränga dig och leta rätt på svaret själv. Om ingen annan förbarmar sig över dig. Lycka till!
För övrigt blev jag lite förvånad över svaret.
Re: Avbruten ADC
Postat: 2 april 2016, 20:20:25
av Erik M
Snälla lillahuset, du kan väl kolla vad jag frågar istället.
Dvs vad tråden egentligen handlar om.
Re: Avbruten ADC
Postat: 2 april 2016, 20:28:45
av Erik M
Den text sodjan skulle ha tittat på är följande:
15.2.3 TERMINATING A CONVERSION If a conversion must be terminated before completion, the GO/DONE bit can be cleared in software. The ADRESH and ADRESL registers will be updated with the partially complete Analog-to-Digital conversion sample. Incomplete bits will match the last bit converted.
Och egentligen inte det heller, utan tittat på vad frågan gällde. Istället för att, som vanligt, leta fel kunde han hjälpt till.

Re: Avbruten ADC
Postat: 2 april 2016, 20:33:47
av lillahuset
Jodå, jag har läst vad du frågar om. Och du verkar ha hittat svaret. Eller?
Jag tycker sodjan brukar vara synnerligen behjälplig när det gäller PIC-frågor. Problemet är nog snarare hur du ställer frågorna.
Re: Avbruten ADC
Postat: 2 april 2016, 20:44:20
av Erik M
Det är inte det minsta behjälpligt på det vis Janne uttrycker sig. Han utgår från fel, fel han tycker sig hitta. Fel han rent av verkar vilja hitta, hos andra.
Hade han formulerat sig exempelvis såhär...
"Om du håller dig till den första PIC du nämnde fungerar det.
Med den andra fungerar det inte, men det antar jag att du redan visste då du valde den första för jobbet."
...så visade han att han var med på tåget.
Och frågan är om koden gör vad jag önskar.