Strömbrytare på inport till PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
PacMan
Inlägg: 94
Blev medlem: 3 oktober 2005, 16:12:24
Kontakt:

Strömbrytare på inport till PIC

Inlägg 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. :)
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg 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:
Bild
Användarvisningsbild
PacMan
Inlägg: 94
Blev medlem: 3 oktober 2005, 16:12:24
Kontakt:

Inlägg av PacMan »

Tack ska du ha! :tumupp:
Har läst pull-up lite varstans men aldrig funderat över vad det var.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Kolla om det finns inbyggda pullup-motstånd i PIC:en.
Användarvisningsbild
PacMan
Inlägg: 94
Blev medlem: 3 oktober 2005, 16:12:24
Kontakt:

Inlägg 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å?
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg av jack »

PortB i 628:an verkar ha interna pullups. Kolla (bland annat) sidan 36 i databladet.
Användarvisningsbild
PacMan
Inlägg: 94
Blev medlem: 3 oktober 2005, 16:12:24
Kontakt:

Inlägg av PacMan »

Det har du faktiskt rätt i. Dom har då tänkt på allt. :D
Nu funkar det klockrent, tack för hjälpen!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Inga problem med kontaktstudsar ?
Användarvisningsbild
PacMan
Inlägg: 94
Blev medlem: 3 oktober 2005, 16:12:24
Kontakt:

Inlägg av PacMan »

Tror att jag har elliminerat kontaktstuds-problemet faktiskt. Kollar porten två gånger, med en liten delay emellan och det verkar funka. :)
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg 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
danei
EF Sponsor
Inlägg: 27424
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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.
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg 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?
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1652
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Skulle tro att ca 25 ms är praxis.
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg 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.
Skriv svar