HJÆLP - mangler porte på PIC16F84

Jeg har designet en opstilling, hvor jeg kommer til at mangle to input-porte til aftastning af 2 'ringetryk' for hhv nulstilling og frysning af en tæller. . Jeg vil derfor bruge PORTB bit1 og bit2, som jeg ellers anvender til udlæsning af to af segmenterne i et LED-ciffer - altså når porten er OUTPUT går den via en modstand til katoden på LED-segmentet.

Når porten skal bruges som INPUT skal den vel lægges via en modstand til + og så kunne lægges til 0 med et ringetryk eller ..... ?

Ka' man overhovedet det ?

Hvordan 'isoleres' de to ting fra hinanden - kan en skitsere et lille diagram måske ?

Mvh KS

Reply to
KS
Loading thread data ...

input-porte

OUTPUT

Når porten er inngang, så er den løftet til +; fra + gjennom LED-segmentet, gjennom motstanden og inn på porten. Du legger bare inngangen via en SW til GND. Og så får du 7 ekstra innganger. ( Du får et blink i LED-en når SW er aktivert.)

HM

Reply to
Harald Mossige

"Harald Mossige" skrev i en meddelelse news:4147658b$ snipped-for-privacy@news.wineasy.se...

LED-segmentet,

til

Ja, og holder man knappen inde vil LED-segmentet lyse 'konstant' - det var det jeg gerne ville undgå men en eller anden form for 'adskillelse' af de 2 funktioner - kan det ikke lade sig gøre med nogle dioder eller ... ?

Mvh KS

Reply to
KS

er

det

Jeg ser ingen enkel løsning på det problemet, men jeg vurderer det som uvesentlig.

HM

Reply to
Harald Mossige

OUTPUT

Sagtens, ihvertfald hvis du multiplexer dit display.

En mulighed er at have en modstand mellem trykknap og MPU, så strømme er for lille til at tænde et segment, men stor nok til at MPU'en kan se signalet, når displayet er slukket.

Reply to
HKJ

"HKJ" skrev i en meddelelse news:4147e337$0$174$ snipped-for-privacy@dtext01.news.tele.dk...

for

Jeg bruger jo 4 porte fra PORTA til at multiplexe de 4 LED cifre - er det ikke lettest blot at bruge en "1 af 4"-logikkreds så jeg kan nøjes med at bruge 2 porte til multiplex og så 'frigøre' 2 til mine switch til nulstilling og frysning af tælleren - er det ikke en 'mere ren' løsning ?

Mvh KS

Reply to
KS

"Harald Mossige" skrev i en meddelelse news:4147e180$ snipped-for-privacy@news.wineasy.se...

Det er vel ikke uvæsentlig, at to tilfældige LED-segmenter lyser blot fordi jeg holder nulstil og frys inde - det er da en 'grimt' løsning.

Mvh KS

Reply to
KS

det

Spørgsmålet er om du helst vil bruge en ekstra chip eller lidt modstande/dioder. Med en 1 af 4 decoder risikerer du også skygger i displayet.

Husk at når du har slukket for displayet, så kan du faktisk bruge din 7/8 segment linier ret frit (Husk at et display er en diode), både som input og output, de har vel også indbygget pullup der kan tændes.

Reply to
HKJ

signalet,

det

En slik krets er en 16 pins pakke, 16 ekstra hull å bore + printplass = dyrere løsning. Men med en ekstrakrets har du mange muligheter; du kan utnytte kretsen og multiplexe både innganger og utganger, eller du kan velge f.eks. en BCD to 7segment dekoder and latch. Da sparer du 3 I/O.

Det er noe vanskelig å gi gode råd, siden både krets og skjema er ukjent, det vil si jeg kjenner ikke antal tilgjengelige I/O eller hvordan du bruker dem. Husk at både innganger og utganger kan multiplexes. Du kan kanskje bytte om inngangene slik at et blinkende segment blir akseptabelt, eller velge en annen krets med flere I/O.

HM

Reply to
Harald Mossige

"HKJ" skrev i en meddelelse news:4147ef99$0$177$ snipped-for-privacy@dtext01.news.tele.dk...

Jeg tror jeg vil prøve denne, og se hvad det giver - det kan jeg umiddelbart finde ud af at lave - tror jeg..

og

Ja, men NÅR FRYS-knappen f.eks. er trykket ind skal displayet jo lyse for netop at vise de frosne tal - (tænke, tænke: det sker jo selvfølgelig i andre clock-trin .....) - et lille diagrameksempel ville måske hjælpe på forståelsen ;-)

Mvh KS

Reply to
KS

7/8
i

Når du skifter ciffer, skal du alligevel holde displayet slukket i nogle uSec for at undgå skygger, det er denne tid du kan bruge til at checke knapper.

Lav f.eks. trykknappen til stel og med en pullup, fra trykknap til porten sætter du en 100K (eller hvad der nu passer) modstand. Hvor stor modstand du kan bruge afhænger af kapacitet på portpinden, lækstrømmen og hvor lang tid du holder displayet slukket.

Hvis du vil regne på opladekurver, så er

formatting link
siden "Charge curve" brugelig.

Reply to
HKJ

"HKJ" skrev i en meddelelse news:41480f86$0$166$ snipped-for-privacy@dtext01.news.tele.dk...

her bruger jeg en 10K til + MEN det bliver jo så til direkte til 100K'en (trykknappen er jo åben!)

Ved forsøg kan det faktisk KUN virke, hvis denne modstand er 0 (eller meget tæt på 0), og det har jo så den kedelige sideeffekt, at når knappen holdes nede (og det vil man jo altid gøre i et stykke tid) så lyser LED-segmentet, som ellers er tilknyttet porten når den er output, lidt mere end de øvrige segmenter - det ser ikke så godt ud.

Har jeg misforstået noget mht. pull-up'en og 100K'en ?

Reply to
KS

"KS" skrev i en meddelelse news:414d7066$0$165$ snipped-for-privacy@dread11.news.tele.dk...

porten

Jeg glemte

Mvh KS

Reply to
KS

Måske har du ikke programmeret dine porte korrekt, eller PIC'en har konstant pullup på porten. Du skal selvfølgelig huske at omprogrammere din port til input, vente lidt og så læse trykknappen. En lang ventetid, betyder at du kan bruge en stor modstandsværdi, fordi der så er bedre tid til at oplade/aflade indgangskapaciteten (og for den sags skyld også kapaciteten i segmentet). Du huske også at slukke fælles driveren til displayet, ellers vil du selvfølgelig ikke kunne trække strøm nok via en 100K modstand.

Jeg bruger selv 100K seriemodstand på nogle af mine inputs (Det er dog en AVR processor, men det burde ikke ændre på det).

Reply to
HKJ

"HKJ" skrev i en meddelelse news:cijsqd$2bps$ snipped-for-privacy@news.cybercity.dk...

konstant

Porten omdefineres til input (ellers ville den jo ikke nulstille og det GØR den jo korrekt nok)

der

Jeg gør her ikke noget specielt mht at 'vente og så læse trykknappen' UD OVER at bruge BUTTON fra PICBasic Pro (den HAR jo noget med ventetid 'i sig' aht prel)

Den ER slukket

Jeg tror nu jeg vil gå tilbage til ASM i stedet for PicBasic Pro - der er for meget 'i gang' som man ikke har/kan få kontrol over med PicBasic - og interruptrutinen skal alligevel skrives i ASM.

Arbejder du med C - if so - skal interruptrutinen også i C skrives i ASM eller ...?

Mvh KS

Reply to
KS

Det burde gå ud over display visningen, når jeg laver sådan noget, så plejer jeg istedet af forlange stabil læsning over f.eks. 10 display scan.

Jeg bruger normalt assembler til små processorer, jeg kan godt lige at have fuldkommen check over hvad MPU'en gør.

Men du kan godt lave interrupt rutiner i C, du skal bare være forberedt på at de kan have lidt større overhead end asm rutiner. Når jeg typisk har en interrupt for hver 256 clock's, vil jeg ikke have for stort overhead, det går ud over den generelle MPU hastighed.

Reply to
HKJ

"HKJ" skrev i en meddelelse news:cijvb0$2fgt$ snipped-for-privacy@news.cybercity.dk...

have

Selv om jeg ikke er nogen haj til PIC og ASM vil jeg nu alligevel droppe både PicBasic og C og gå tilbage til ASM - så må det bare tage sin tid.

(det gør det iøvrigt alligevel !)

Tak for dine hurtige svar !

Mvh KS

Reply to
KS

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.