Sida 1 av 2
Strömbrytare på inport till PIC
Postat: 17 oktober 2005, 17:45:35
av PacMan
Tjena!
Jag håller på med ett projekt där jag vill kunna växla mellan ett antal olika moder i programmet med en helt vanlig återfjädrande på/av-brytare.
Det verkar inte funka så bra om ingången lämnas "flytande" när knappen inte är intryckt, dvs. jag måste ha 5 eller 0 Volt på ingången för annars gör programmet konstiga saker. Hur brukar man lösa detta? Behöver jag en tvåpolig brytare som jordar när den inte är tryckt, eller kan man fixa det på nåt annat sätt?
Just det ja, det gäller en PIC16F628A.

Postat: 17 oktober 2005, 17:52:26
av jack
Detta löses vanligen med ett pullup- eller pulldown-motstånd. Dvs ett motstånd på runt 10K mot jord eller plus.
Här finns lite info:
http://www.seattlerobotics.org/encoder/ ... asics.html
Såhär:

Postat: 17 oktober 2005, 17:59:39
av PacMan
Tack ska du ha!
Har läst pull-up lite varstans men aldrig funderat över vad det var.
Postat: 17 oktober 2005, 18:01:33
av cykze
Kolla om det finns inbyggda pullup-motstånd i PIC:en.
Postat: 17 oktober 2005, 18:05:41
av PacMan
Hmm, i registret till databladet står ingenting om pull-up eller down i alla fall. Kan det heta nåt annat också?
Postat: 17 oktober 2005, 18:12:14
av jack
PortB i 628:an verkar ha interna pullups. Kolla (bland annat) sidan 36 i databladet.
Postat: 17 oktober 2005, 18:33:26
av PacMan
Det har du faktiskt rätt i. Dom har då tänkt på allt.
Nu funkar det klockrent, tack för hjälpen!
Postat: 17 oktober 2005, 18:55:28
av sodjan
Inga problem med kontaktstudsar ?
Postat: 17 oktober 2005, 19:45:03
av PacMan
Tror att jag har elliminerat kontaktstuds-problemet faktiskt. Kollar porten två gånger, med en liten delay emellan och det verkar funka.

Postat: 18 oktober 2005, 13:23:00
av rickeboy
Istället för att förhoppningsvis få bort kontaktstudsarna genom att kolla pinnen två gånger borde man istället kunna sätta ditt en konding som laddas ur/laddas upp vid varje tryckning... dvs gör att "trögt"... hmm... frågan är bara vart man skulle koppla in den... beror lite på om man kör på fallande/stigande alt hög/låg...
//rickeboy
Postat: 18 oktober 2005, 13:33:08
av danei
En rad i koden varken kostar, tar plats på kortet, behöver monteras eller går sönder. Så det finns helt klart fördelar med den lösningen.
Postat: 18 oktober 2005, 13:42:55
av sodjan
Om man skall köra R/C metoden för att få en långsam "flank", behöver man en Schmitt Trigger ingång. En standard CMOS ingång skall ha snabba flanker för att inte dra onödigt mycket ström.
Postat: 18 oktober 2005, 14:53:01
av björn
Så det bäata sättet att undvika kontaktstudsar på en "vanlig" ingång är alltså att läsa pinnen två gånger? Hur lång tid bör man ha mellan läsningarna?
Postat: 18 oktober 2005, 15:02:49
av RDX*
Skulle tro att ca 25 ms är praxis.
Postat: 18 oktober 2005, 15:06:53
av björn
Ok, då var jag inte långt borta när jag använde 20 ms som en gissning till mitt lilla projekt.