Jag skall göra sisådär fem - sex ADC, två primära och minst tre sekundära, innan ett beslut ska tas. Detta bör ske flera gånger inom 100us.
Om varje ADC tar 10us (plus ställtider etc) så är vi raskt uppe i över 50us, och får således endast in ett beslut inom given tidsram.
Då är svaret givet, du har valt fel processorfamilj.
Välj något som klarar dina krav alternativt revidera kraven.
Att försöka plåga en IC som kostar några tior till att kanske lösa problemet
jämfört med att ta en annan IC som också kostar några tior och som klarar dina uppställda krav..
Erik M skrev:Inte som jag kan se direkt, Magnus.
Den har väl samma omvandling som 12F1572, eller vad tänkte du på?
Nej, du har rätt. Jag missförstod frågan.
Kollade i 1840-diagrammet och såg att man kunde snurra processorn med 32 MHz och för 1572 så var det 20MHz som max. Tänkte det var en bra idé att snurra lite snabbare för snabbare konvertering.
Men som sagt, missförstod.
Allt som tillför är av godo, även om det inte avhjälper just då.
Att bara peka på vad som skulle kunna vara fel, men vanligen inte är det, det är anledning låta bli säga något. För sådant tillför inte.
Speciellt om man bara pekar, utan att föreslå alternativ som går använda.
Men det har varken du Magnus eller Synesthesia gjort, ni har istället tillfört.
Och det på ett rakt och informativt vis, utan antydningar, oanständigheter, irrelevans eller svammel.
Ytterligare en nackdel med att använda en komponent utanför sitt spec område som du vill göra är att även om det funkar när du labbar så kan variationer i temperatur och matningsspänning göra att det inte uppför sig som du tänkt det senare. Då kommer du få fel som är mycket svåra att debugga!
Ja.
Det Microchips "part selector" är det angivet som "1100 Ksps" (K samples per second).
Om det var just 10 eller 12 bitar får du kolla, det fanns nog båda...
Erik M: En omvandling består av två tider:
1: Uppladdningstiden på ingångssteget.
2: Själva omvandlingen.
Du kan korta ner omvandlingstiden (steg 2) men inte uppladdningstiden (steg 1).
Detta känns som ett typisk 80/20 problem som är angripet fel. Alltså för 80% insats/jobb/kostnad får man 20% effekt.
Med en annan vinkel in kan man för 20% insats få 80% effekt och i detta fall är det rimligen säkert att det finns andra µC eller externa A/D-omvandlare som klarar jobbet utan att tulla som en galen på specifikationerna.
Även med ett stopp av omvandlingen kan själva detta att stoppa den på rätt tid kosta µC-tid (timer-interrupt overhead) vilket såklart minskar vinsten i tid som kan uppnås.
Om du har krav på snabb grov ADC som körs ofta och sedan köra noggrann ADC mer sällan kan du du göra en "manual ADC" via spännings delare (dvs två motstånd per värde ) på digital GPIO på PIC, tex:
Spänningsdelare >90% av VDD ger digital 1
Spänningsdelare >70% av VDD ger digital 1
Spänningsdelare >30% av VDD ger digital 1
Spänningsdelare >10% av VDD ger digital 1
När du sedan kollar bitarna ser du att spänning är mellan 30 och 70% (om det är intressant värde) så kan du köra PIC ADC för ett noggrannt värde
Fördelen är att du kan göra snabba kollar utan att gå utanför spec på PIC och slipper byta processor. Du kan även köra via interupt så du slipper polla GPIO.
Nackdelen är att du behöver 2 st motstånd per GPIO och måste modda PCB och att det blir dålig noggrannhet. Tror även du behöver en transistor + motstånd eller OP förstärkare för att det ska bli bra så det kanske smidigare att ta någon extern AD till parallel IO omvandlare
Sen vet jag inte om denna lösning är möjlig i din konstruktion eftersom jag inte vet hur spänningen du mäter på ser ut.
En sak står fortfarande som frågetecken - uppladdningstiden.
Är det inte så att ingången står på den nivå som kommer att mätas när porten sedan väl stängs och urladdning och ADC utförs?
Dvs att nödig uppladdningstid endast behöver tas hänsyn till när omställning till AN och ADC och utförande av densamma sker i direkt följd?
Omvänt...
Om jag endast har en port för ADC (inleder och ändrar inte/tar aldrig bort ANSx respektive CHSxx) kommer dess kondensator (i princip) alltid vara på den nivå som skall mätas, när programmet kommer till(baka) till den punkten. Korrekt?
Frågan var om kondensatorn håller takten med förändringarna så länge både dess port står som analog och ADC är påslagen och då kan påbörja en ADC direkt.
Jag skulle vilja rekommendera dig att läsa på om kapacitivt kopplade A/D-omvandlare. De använder kondensatorer istället för motstånd i t.ex. ett SAR, helt enkelt för att kondensatorer är enklare att skapa i kisel.
Detta betyder att en omvandling laddar ut den uppladdning som sker innan omvandlingen! Så laddningstiden kan kanske kortas ner en aning men inte speciellt mycket.
Men testa istället för att undra! Antingen lär du snabbt inse att du är på helt fel väg - eller också hittar du vad du behöver.