Varför pullup/pulldown vid switchavläsning?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Kretskort
Inlägg: 182
Blev medlem: 5 februari 2008, 08:07:45
Ort: Göteborg

Varför pullup/pulldown vid switchavläsning?

Inlägg av Kretskort »

Jag har provat lite program på min PIC och aktiverat pinnar genom att hålla en tråd förgrenad från +5V försörjningen mot dom för att simulera switchar och gränslägen.
Eftersom programmen och microcontrollern betedde sig konstigt när jag gjorde så här kollade jag i boken "30 PicBasicPro projects" hur dom ordnade switchavläsning och där använde dom switcharna med pullup/pulldown resistorer. Varför? Elektriskt sett borde det ju i princip bli samma sak att lägga 5V direkt på pinnen som att driva upp det med en pulldown och vice verca, förutom att det flyter en liten ström utanför pinnen med det ena arrangemanget.

Världens basicfråga och jag kan inte få sinnesro förrän jag vet svaret på den. :)
Kretskort
Inlägg: 182
Blev medlem: 5 februari 2008, 08:07:45
Ort: Göteborg

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av Kretskort »

Aha, hittade här, så bra: http://www.seattlerobotics.org/encoder/ ... asics.html

Men hur fungerar ingångarna på en PIC då? Är det FET transistorer som aktiveras av av spänning enbart?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av Icecap »

Du har fel!

En ingång på en "modern" µC har en nära nog oändlig hög impedans. Om brytaren kopplar VDD till ingången är det självklart '1', klart och tydligt. Men när brytaren öppnas "svävar" pinnen och tack vara de strö-kapacitanser som finns kan den vara odefinierat i lång(!) tid. Samtidig är en oansluten ingång en direkt ingång för störningar.

Så pull-up/down är till för att skapa stabila kända nivåer. Det är ett så vanligt noob-sätt att bara ha en brytare mellan VDD och pinnen och sedan tro att det blir '0' om man bryter men var ska laddningen ta vägen?
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av Swech »

Problemet är att du tänker att ingen spänning = 0V och en logisk "0"

Tänk som så här, Du är en processor.. du tittar på en lysdiod som kan lysa rött eller grönt och det
är det enda du kan välja mellan..... antingen rött eller grönt.
men så stängs lysdioden av.. det blir svart m.a.o.. men du måste bestämma dig för om det är
rött eller grönt. Du kommer att säga... grönt.. näe rött... nej grönt.. rött osv..

Så om vi återgår till stömbrytare.
Då dessa kopplas till en ingång så kan de ju antingen ge signal eller ingen signal. (motsvarar rött och släckt i vårt
lysdidodsresonemang ovan) Pull up/down motståndens uppgift är att ge ingången den signal som annars skulle fattas då
strömbrytaren är avstängd.

Swech
(icecap var snabbare)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av sodjan »

> Aha, hittade här, så bra: http://www.seattlerobotics.org/encoder/ ... asics.html

Och har du faktiskt *läst* det som står där om pullup/down motstånd ??

> Men hur fungerar ingångarna på en PIC då?
> Är det FET transistorer som aktiveras av av spänning enbart?

Använd sök-funktionen i forumet, sök efter "öppna cmos" (och eventuellt med
"sodjan" som författare) så får du svar på det. Det handlar om ett av de allra
vanligaste nybörjarfelen, så det finns besvarat ett flertal gånger tidigare...
Kretskort
Inlägg: 182
Blev medlem: 5 februari 2008, 08:07:45
Ort: Göteborg

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av Kretskort »

Vad bra då har vi ju det utrett!

Sodjan: Ja, jag hittade sidan efter att jag postat tråden.
Ska titta på det där med "öppna cmos".

Kanske kommer det besvara nästa fråga jag har. När jag byglade +5V till utgångarna på PICen som var kopplade till lysdioder så lös dessa givetvis, men sedan fortsatte dom lysa även efter att jag tagit bort byglingen ända tills jag nollställde PICen. Detta hände enbart på dom utgångar som jag inte hade tilldelat någon funktion i programmet jag skrivit. Vad berodde detta på?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av Icecap »

Tråkigt att du inte faktisk LÄSER de svar du får, då hade du inte ställd denna fråga...
Dålig stil faktisk!
danei
EF Sponsor
Inlägg: 27452
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av danei »

Är jag fullständigt puckad eller?

Jag ser inget i tidigare svar som svarar på den frågan. De tidigare frågorna kunde jag svaret på, men det här var nytt för mig. Skulle Icecap kunna peka mer exakt var svaret finns?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av sodjan »

> När jag byglade +5V till utgångarna på PICen...

Det är inte bra att ansluta *utgångar* direkt till varken +5V eller jord direkt.
Så gör inte det helt enkelt.

> ...men sedan fortsatte dom lysa även efter att jag tagit bort byglingen ända tills jag nollställde PICen.

Här är det lite oklart vad du gjorde. Om lysdioderna lyser så borde det bero på att
utgångarna fortfarande driver dom. Hur är det kopplat förresten ? Och vad mer exakt
menar du med att "nollställa" PIC'en ? En reset ? Matningsspänningen av/på ?

> Detta hände enbart på dom utgångar som jag inte hade tilldelat någon funktion i programmet jag skrivit.

Här är det också lite oklart. Om de är utgångar så är de utgångar. Du säger ju att de är utgångar.
Vad menar du med att de inte har någon "funktion" ? Vad menar du med "funktion" igentligen ?

> ...i programmet jag skrivit.

Det finns inget program (här) så frågan är lite ointressant. Om du har någon fråga som
här ihop med ett visst program så måste du naturligstvis även visa programmet.

> Vad berodde detta på?

Tja. Jag ser inte hur någon här skulle kunna veta (eller gissa) det. Det saknas både
beskrivning av hur det är kopplat och programmet som används.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av Swech »

Vad är det för dålig stil med följdfrågan?
Det är ju uppenbart att "kretskort" är ny inom detta. Att då kräva av honom att direkt
förstå konceptet med laddningar som stannar kvar, likaså att utgångar - ingångar inte är samma sak.

Att två med såpass kunnande hoppar på honom och i princip idiotförklarar honom. Det är dålig stil.

Alla har inte varit med från början på forumet. Samma frågor kommer att komma tillbaks gång efter gång,
bara att acceptera....

Swech
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av Icecap »

danei: mitt inlägg 16-apr-2010 19:34 "Så pull-up/down är till för att skapa stabila kända nivåer. Det är ett så vanligt noob-sätt att bara ha en brytare mellan VDD och pinnen och sedan tro att det blir '0' om man bryter men var ska laddningen ta vägen?"
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av PHermansson »

Ytterligare en grundregel är att någon ingång/utgång/funktion aldrig ska lämnas odefinierad. En I/O-pinne ska anges som utgång eller ingång i början av programmet, annars kan man aldrig vara säker på vad pinnen är. Samma sak gäller andra register och funktioner, ska tex A/D inte användas ska den stängas av, annars vet man inte säkert om det är den som spökar när en ingång inte funkar som den ska.
danei
EF Sponsor
Inlägg: 27452
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av danei »

Icecap: Det verkar inte ens som att du läst frågan....
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Varför pullup/pulldown vid switchavläsning?

Inlägg av sodjan »

> likaså att utgångar - ingångar inte är samma sak.

Aha, jaha. Alltså att det inte måste vara så att pinnen som kallas
"utgång" faktiskt är en utgång, utan bara en I/O-pinne som bara är
"default" efter reset och som inte har fått en "funktion" (alltså funktionerna
"ingång" eller "utgång") genom programmet ?

Ja, så kan det ju vara. Men å andra sidan är det bara spekulationer.
Och om det stämmer så kan inte beskrivningen av det som hände
stämma i alla fall. *Om* pinnen var en ingång så skulle man kunna
tända lysdioden genom att manuellt lägga 5V till pinnen (och lysdioden)
men den skulle också slockna direkt när 5V kopplas bort. Det gjorde
den ju inte enligt beskrivningen. Om lysdioden fortsatte att lysa så måste
pinnen vara en utgång och då måste den ha fått en "funktion" via TRISx
eftersom det är ingång som är default läget efter reset.

Aja, detta är ju enkelt löst med lite förtydliganden. Som det är just nu
så går det inte att säga någonting säkert alls om vad som händer, det
blir bara gissningar.
Skriv svar