Sida 1 av 1
Varför pullup/pulldown vid switchavläsning?
Postat: 16 april 2010, 20:24:07
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.

Re: Varför pullup/pulldown vid switchavläsning?
Postat: 16 april 2010, 20:33:52
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?
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 16 april 2010, 20:34:31
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?
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 16 april 2010, 20:37:03
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)
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 16 april 2010, 23:07:54
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...
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 18 april 2010, 20:11:56
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å?
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 18 april 2010, 20:18:56
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!
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 18 april 2010, 20:23:04
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?
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 18 april 2010, 20:32:10
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.
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 18 april 2010, 20:46:43
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
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 18 april 2010, 20:52:16
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?"
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 18 april 2010, 20:57:59
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.
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 18 april 2010, 21:06:28
av danei
Icecap: Det verkar inte ens som att du läst frågan....
Re: Varför pullup/pulldown vid switchavläsning?
Postat: 19 april 2010, 00:25:59
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.