Hej, jag skulle behöva lära mig använda "weak pull-up" på en PIC16F628A. Jag har kollat i databladet hur länge som helst nu... på sidan 3 står det "Special Microcontroller Features:" under det står det bla. " Programmable weak pull-ups on PORTB". Men jag gick in i "bookmarks" på "special futures of the CPU" kan jag inte hitta det där och inte någon annan stans heller! är det någon som vet var det står någon bra text om den?
Each of the PORTB pins has a weak internal pull-up
(≈200 μA typical). A single control bit can turn on all the
pull-ups. This is done by clearing the RBPU
(OPTION<7>) bit. The weak pull-up is automatically
turned off when the port pin is configured as an output.
The pull-ups are disabled on Power-on Reset.
Du skall nolla högsta biten i OPTION-registret, tänk på att detta finns i BANK-1, den är satt som reset-default. Detta gör Du i in egen kod, inte i någon konfigurationsinställning.
Okej. Efter att ha suttit o läst datablad o annat hela natten (värkligen ingen med född gåva ) så har jag äntligen hittat rätt! Men om jag sätter en nolla på RBPU (bit7) i option registret, då blir det pull-up på alla ingångarna i PORTB men inte på utgångarna, har jag fattat rätt? Men i så fall om jag vill koppla någon ingång så att jag skulle behöva koppla ett pull-down motstånd, då kan jag inte ha weak pull-ups på någon av pinnarna? Men koden blir väl såhär då:
Okej, tack så mycket. Anledningen till att jag ville sluta brytaren till Vdd är att jag ska bygga ett larm, o mina sensorer är kopplade till Vdd. Men då får jag koppla om dem..
Skall Du ha långa kablar mellan givre och PIC? I så fall skall Du nog fundera på något annat alternativ. Det är ingen bra ide att direktansluta. Den PIC'en kommer inte att leva så länge när det kommer in diverse skräp via kabeln som den fångar upp. Det är också stor risk för falsklarm.
Använd en ström på ett antal mA och gör en robust ingång så blir det säkert bra. Det finns exempel på hur man skall gör om Du googlar lite.
Jag har kopplat om givaren nu, så att om allting är som normalt ligger det GND på kablen, men om någon kommer in "hänger den i luften". Kablen är cirka 4m lång, kan det vara några problem då?
Det känns som lite långt för att bara hänga öppen.
WPU'erna är inte så kraftiga. Kanske att du skulle
komplettera med ett kraftigare pullup externt för att
få ett säkrare "off" läge.
Sen, "i verkligheten", skulle man antagligen sätta en
buffert imellan för att skydda ingångarna på processorn.
Det beror väldigt mycket på hur "smutsig" den elektriska
miljön är där de 4 meter kabel ligger. I alla fall en liten
filtreringt (RC länk) för att filtrera spänningsspikar.
Nej, det är en digital buffer Du behöver och skydd mot otrevliga spänningar som kan ha sönder den.
Sätt t.ex. 1k pullup och därifrån 1M till ingången på en CMOS-inverter med smithtrigger-inputs och 1n konding mellan ingången och jord. Mata helst pull-upp från en separat spänning också om det skall vara riktigt noga och användas "på riktigt".