Problem med PIC och störningar i strömmatning
Problem med PIC och störningar i strömmatning
Har ett problem med en PIC-processor vars uppgift är att läsa av ett numeriskt tangentbord och skicka datan seriellt till en annan processor. Programmerar processorerna mha. en Wisp628, och så länge programmerarens positiva matningsspänning är ansluten till kretsen så fungerar avläsningen klanderfritt. Om jag däremot kopplar ifrån programmeraren helt så blir "slav-PIC:en" väldigt nervös och får för sig att det sker mycket fler knapptryckningar än vad det i själva verket gör. Det verkar som att kontaktstudset ökar dramatiskt då Wispen kopplas ifrån.
Jag antar att detta beror på att Wispen stabiliserar spänningen och tar bort de störningar som orsakar ofrivilliga knapptryckningar. Min fråga är därför vad jag bör göra för att få samma avstörning i min egen krets. Till saken hör att jag redan använder en 0,1 uF-kondensator för att stabilisera matningen.
Tack på förhand!
Jag antar att detta beror på att Wispen stabiliserar spänningen och tar bort de störningar som orsakar ofrivilliga knapptryckningar. Min fråga är därför vad jag bör göra för att få samma avstörning i min egen krets. Till saken hör att jag redan använder en 0,1 uF-kondensator för att stabilisera matningen.
Tack på förhand!
Rent fysiskt så sitter den på runt 20 cm kabelväg från den processor som kollar tangentbordet.jack skrev:Sitter kondingen nära PICen?
Edit: Flyttade den närmre och möjligtvis blev det lite bättre. Har dock fortfarande problem med att den ibland detekterar en knapptryckning som två, ett problem som inte uppstår då Wispen är inkopplad.
Senast redigerad av Malm 6 februari 2006, 19:47:53, redigerad totalt 1 gång.
Jag har, baserat på erfarenhet, alltid knapptryckningar som detekteras av en 10Hz ISR. Knapperna läsas då ENBART 1 gång/interrupt, ska jag testa fler saker med knapperna (n-key rollover t.ex.) sparar jag avläsningen i en variabel.
Sedan jag har vald detta framgångssätt har jag ett välfungerande knappavkänning utan stuts osv.
Sedan jag har vald detta framgångssätt har jag ett välfungerande knappavkänning utan stuts osv.
En del är redan sagt, men... 
> Till saken hör att jag redan använder en 0,1 uF-kondensator för att stabilisera matningen.
En 100 nF konding används *INTE* till att stabilisera spänningen !
Den används till att filtrera bort högfrekventa störningar som genereras av PIC'en själv.
D.v.s så att switchningsstörningar från PIC'en inte skall störa *andra* kretsar.
Och den skall sitta nära PIC'ens spänningsmatning och jord, mindre 1-2 cm.
Ditt probem verkar vara en dåligt *filtrerad* ("glättad" kallas det också)
matningsspänning. Det avhjälps med en elyt 10-1000 uF beroende på
hur mycket ström som din hela krets drar. Är det bara en PIC så fungerar
säkert allt mellan 10-100 uF.
> Fläskade dit en 470 uF-konding och det stabiliserade något.
Hur vet du det ? Alltså bortsett från dubbeltryckningarna ?
Och hur mycket är "något" ??
> Kontaktstudset orsakar dock fortfarande dubbla (och trefaldiga)
> knapptryckningar... Får kanske lösa detta i mjukvaran.
Helt nornalt !!
Om du *inte* tar hänsyn till det i mjukvara, så spelar det ingen som
helst roll hur stabil matningsspänning du har...
Hur "läser" du tangenterna ?

> Till saken hör att jag redan använder en 0,1 uF-kondensator för att stabilisera matningen.
En 100 nF konding används *INTE* till att stabilisera spänningen !
Den används till att filtrera bort högfrekventa störningar som genereras av PIC'en själv.
D.v.s så att switchningsstörningar från PIC'en inte skall störa *andra* kretsar.
Och den skall sitta nära PIC'ens spänningsmatning och jord, mindre 1-2 cm.
Ditt probem verkar vara en dåligt *filtrerad* ("glättad" kallas det också)
matningsspänning. Det avhjälps med en elyt 10-1000 uF beroende på
hur mycket ström som din hela krets drar. Är det bara en PIC så fungerar
säkert allt mellan 10-100 uF.
> Fläskade dit en 470 uF-konding och det stabiliserade något.
Hur vet du det ? Alltså bortsett från dubbeltryckningarna ?
Och hur mycket är "något" ??
> Kontaktstudset orsakar dock fortfarande dubbla (och trefaldiga)
> knapptryckningar... Får kanske lösa detta i mjukvaran.
Helt nornalt !!
Om du *inte* tar hänsyn till det i mjukvara, så spelar det ingen som
helst roll hur stabil matningsspänning du har...
Hur "läser" du tangenterna ?
Grejen är ju den att med programmeraren inkopplad så fungerar allt perfekt. Jag tycker att det borde tyda på att mjukvaran fungerar när det gäller avläsning av matrisen. Det konstiga är att jag får inmatningar långt efter det att knapptryckningen är gjord - vi snackar runt 500 ms. Om det är kontaktstuds som är problemet borde ju inmatningarna komma bra mycket snabbare än så.
Den stora kondensatorn tog bort de sporadiska felaktiga inmatningarna.
Den stora kondensatorn tog bort de sporadiska felaktiga inmatningarna.
OK, I see...
Nä, 500 ms är lite lång tid för kontaktstudsar...
Darriga fingrar ?
Det är svårt att säga mer utan att ha tillgång till hela kopplingen.
Var kommer matningsspänningen ifrån t.ex.
Hur en MCLR kopplad ?
Vilken PIC ?
Hur är LVP config biten satt ?
Hur är LVP ingången kopplad ?
Är PGD/PGC använda till något annat ?
Jag vill inte ha svar, bara peka på att det finns massor av obekanta
variabler utifrån det du har berättat...
o.s.v, o.s.v...
Nä, 500 ms är lite lång tid för kontaktstudsar...
Darriga fingrar ?

Det är svårt att säga mer utan att ha tillgång till hela kopplingen.
Var kommer matningsspänningen ifrån t.ex.
Hur en MCLR kopplad ?
Vilken PIC ?
Hur är LVP config biten satt ?
Hur är LVP ingången kopplad ?
Är PGD/PGC använda till något annat ?
Jag vill inte ha svar, bara peka på att det finns massor av obekanta
variabler utifrån det du har berättat...

o.s.v, o.s.v...
Matningen kommer från en transformator vars utgång är specad för 5V 2.0A.
Det jag tycker är konstigt är att allt fungerar så fantastiskt bra då bara matningskablarna till programmeraren är anslutna. Inga andra pinnar är anslutna och således borde felet ligga utanför processorerna. Alla interna konfigurationer går rimligtvis att utesluta eftersom de inte förändras mellan de lyckade och misslyckade försöken.
Den ENDA variabeln som skiljer lyckade och misslyckade försök åt är programmerarens spänningsmatning.
För att ge ett så uttömmande svar som möjligt så kan jag tillägga att de två processorerna är 16F88:or som kör interna oscillatorer på högsta frekvens (20 MHz?). MCLR och LVP är avstängda med fuses. LVP-ingången är kopplad till Wispen under programmering och används för seriell kommunikation hos den ena processorn och för LCD-styrning hos den andra. PGD/PGC används ej i applikationen.
Det jag tycker är konstigt är att allt fungerar så fantastiskt bra då bara matningskablarna till programmeraren är anslutna. Inga andra pinnar är anslutna och således borde felet ligga utanför processorerna. Alla interna konfigurationer går rimligtvis att utesluta eftersom de inte förändras mellan de lyckade och misslyckade försöken.
Den ENDA variabeln som skiljer lyckade och misslyckade försök åt är programmerarens spänningsmatning.
För att ge ett så uttömmande svar som möjligt så kan jag tillägga att de två processorerna är 16F88:or som kör interna oscillatorer på högsta frekvens (20 MHz?). MCLR och LVP är avstängda med fuses. LVP-ingången är kopplad till Wispen under programmering och används för seriell kommunikation hos den ena processorn och för LCD-styrning hos den andra. PGD/PGC används ej i applikationen.