Sida 1 av 1

weak pull-up

Postat: 3 mars 2007, 21:49:15
av squiz3r
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 :shock: och inte någon annan stans heller! är det någon som vet var det står någon bra text om den?

//Daniel A

Postat: 3 mars 2007, 21:55:03
av thepirateboy
På sid 36 kanske?

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.

Postat: 4 mars 2007, 11:28:37
av Marta
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.

Postat: 4 mars 2007, 11:55:05
av squiz3r
Okej. Efter att ha suttit o läst datablad o annat hela natten (värkligen ingen med född gåva :cry: ) 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å:

Kod: Markera allt


  ...                 ;byt till bank 1
  bcf   OPTION_REG,7    ;nolla bit7 i option registret
  ...                 ;byt tillbaks till bank 0
Tack!
//Daniel A

Postat: 4 mars 2007, 15:43:16
av sodjan
> då blir det pull-up på alla ingångarna i PORTB men inte på utgångarna,
> har jag fattat rätt?

> The weak pull-up is automatically turned off when the port pin
> is configured as an output.

Så, ja, det ser ut så.

> Men i så fall om jag vill koppla någon ingång så att jag skulle behöva
> koppla ett pull-down motstånd,

Det är inte speciellt vanligt.
Normalt sätter man switchar, givare och liknande så att de sluter till jord.
Men visst, om du *måste* göra det så...

Postat: 4 mars 2007, 15:46:27
av squiz3r
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..

//Daniel A

Postat: 4 mars 2007, 17:10:52
av Marta
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.

Postat: 4 mars 2007, 17:18:24
av squiz3r
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å?

//Daniel A

Postat: 4 mars 2007, 17:30:32
av sodjan
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.

Postat: 4 mars 2007, 18:17:22
av squiz3r
Vad är en buffert? En sån här?: http://www.eecs.tufts.edu/~dsculley/tut ... amps5.html Vad gör den? :oops:

//Daniel A

Postat: 4 mars 2007, 18:24:28
av Marta
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".