Mplabx A/D - simulator vs verklighet.
Postat: 21 februari 2019, 21:53:22
Jag har en tidigare fungerande skapelse baserad på PIC16F870.
Den mäter fem 0-5 volt DC signaler på inbyggd AD-omvandlare, och skickar iväg dessa på UART.
Dessa har snurrat på sedan 2007 så jag tycker mig kunna säga att både hårdvara och mjukvara är rätt stabil
Nu tänkte jag mig att uppdatera denna så den gör 20 mätningar över 20 mS och spara det högsta mätvärdet för att kunna komma nära toppvärdet på en 50 Hz AC signal.
Simulatorn har varit bra till att jaga buggar ur koden och så vitt jag kan skapa stimulus-filer så verkar allt fungera.
Men verkligheten kommer ikapp och lägger krokben för mig, med en LM35 temperaturgivare på kanal 2 och en spänningsdelare på kanal 5 simulerad signal får jag resultat enligt bild (skärmdump från program för debugging) Om jag ökar värdet på kanal 5 kommer det att öka över det ungefärliga värdet som släpar från kanal 2 men inte sjunka under. Flyttar jag tempsensorn till ingång 3 får jag 0 på ingång 1 och 2, men samma beteende efter.
Oanvända ingångar har pull down 1Kohm
I Mplabx simulatorn lyckas jag inte få fram beteendet hur jag än försöker komma på varianter på stimulus.
Den säger att detta skickas. Vilket stämmer bra med stimulus.
Jag hade en teori om att det var för kort tid mellan inställning av kanal på A/D och start av mätning för att ladda mätkondensatorn, men den är 20 uS och databladet säger minimum 19,72 uS i rumstemperatur.
Har någon någon bra idé om vad jag bör titta på nu?
Just nu väljer jag att inte lägga upp koden då jag har massor av kommentarer som ska bort, och kanske ett par tre som ska dit
Och så hoppades jag lite att problemets lösning skulle kunna ligga i formulerandet av problemet, men än har jag inte sett den...
Den mäter fem 0-5 volt DC signaler på inbyggd AD-omvandlare, och skickar iväg dessa på UART.
Dessa har snurrat på sedan 2007 så jag tycker mig kunna säga att både hårdvara och mjukvara är rätt stabil
Nu tänkte jag mig att uppdatera denna så den gör 20 mätningar över 20 mS och spara det högsta mätvärdet för att kunna komma nära toppvärdet på en 50 Hz AC signal.
Simulatorn har varit bra till att jaga buggar ur koden och så vitt jag kan skapa stimulus-filer så verkar allt fungera.
Men verkligheten kommer ikapp och lägger krokben för mig, med en LM35 temperaturgivare på kanal 2 och en spänningsdelare på kanal 5 simulerad signal får jag resultat enligt bild (skärmdump från program för debugging) Om jag ökar värdet på kanal 5 kommer det att öka över det ungefärliga värdet som släpar från kanal 2 men inte sjunka under. Flyttar jag tempsensorn till ingång 3 får jag 0 på ingång 1 och 2, men samma beteende efter.
Oanvända ingångar har pull down 1Kohm
I Mplabx simulatorn lyckas jag inte få fram beteendet hur jag än försöker komma på varianter på stimulus.
Den säger att detta skickas. Vilket stämmer bra med stimulus.
Jag hade en teori om att det var för kort tid mellan inställning av kanal på A/D och start av mätning för att ladda mätkondensatorn, men den är 20 uS och databladet säger minimum 19,72 uS i rumstemperatur.
Har någon någon bra idé om vad jag bör titta på nu?
Just nu väljer jag att inte lägga upp koden då jag har massor av kommentarer som ska bort, och kanske ett par tre som ska dit
Och så hoppades jag lite att problemets lösning skulle kunna ligga i formulerandet av problemet, men än har jag inte sett den...