Sitter och programmerar en PIC16F628A som ska användas som timer i en uv-box och har stött på lite problem.
Jag vill använda PortA.5 och PortA.6 som ingångar men vet inte hur jag ska göra. Det fungerar helt enkelt inte att göra på "vanligt" sätt.
Resten fungerar bra.
Glöm port A5 om Du med det menar den som går till pinne 4 på kretsen. Det är MCLR/Vpp, använder Du den till annat måste Du ha Vpp före Vddför att kunna programmera kretsen sedan första programmeringen r gjord. Vill Du ändå tvunget göra det ärdet en configbit som skall ställas om.
Pinne A4 på pinne 3 är open-drain så Du tänkerpå att som utgång kan denna bara sänka, inte driva något med spänning ut från kretsen.
Har Du ont om pinnar eftersom Du alls övervägt att använda PORTA,5? Vad är det i så fall som är anslutet, det finns kanske andra sätt att lösa pinbristen.
Det var det jag misstänkte att PortA.5 var en liten luring, har faktiskt aldrig ens försökt använda den förens nu. Men hur är det med PortA.6 då, den ska jag väl kunna använda?
Jepp, det är ganska tajt med pinnarna. 4st 7segments displayer är även inkopplade vilket krävde 7+4 pinnar = 11. Sen behöver jag en utgång till relä samt tre ingångar.
Då var vi uppe i 15pinnar...
Finns det kanske något annat smidigt sätt att styra displayen? Som det är nu så hade jag tänkt multiplexat den direkt ifrån pic:en.
Det jag tänkte på när jag skrev vanligt var att enkelt skriva:
CMCON = 7
OUTPUT PORTA.6
eller:
CMCON = 7
TRISA =00011110
Men jag antar att man kanske måste styra det på något annat sätt eller stänga av några andra godsaker innan man kan använda dom som "vanliga" I/O-portar.
Ja, det finns ett smidigt sätt att styra displayen som kallas för charlieplexing. Då behöver Du 8 utgångar ochkan ha upp till 7 displayer utan decimalpunkt på dem. Ingen av utgångarna bör vara PORTA4, fast med gemensam anod så kan den användas förutsatt att ingen av anoderna hamnar där.
Du använder TRIS för att styra vilka segment som skall lysa. De tända segmenten sätts till utgångar, samt det gemensamma. Om man förutsätter gemensam katod skall datan till porten vara sådan att pinnen med katoden är noll och alla tända segment 1. Övriga kan vara vilket som.
För att inte få "ghosting" så sätt alla bitar till ett (gemensam katod) innan tris ändras.
Detlåter svårare än det är, det är faktiskt väldit enkelt i praktiken. Sök på Charlieplex så hittar Du info. Glöm vikipedia om inte artikeln har ändrats sedan jag såg den, denna artikel är usel utan information och dessutom skitprat om strömförbrukning som om lysdioder skulle ha extrem backström.
Jag är lite upptagen större delen av kvällen så någon annan kanske kan förklara mera omdet behövs. Annars kan jag givetvisgöra det när det finns tid, efter 22 ikväll eller någon annan dag.
Har kollat lite på charlieplex men det känns lite ondögt krångligt när det ändå bara är 4 displayer det handlar om.
Men först vill jag få lite fart i PortA.6. Givetvis har jag läst om portarna men har inte förstått hur jag ska gå till väga. PortA.6 är ju integrerad med OSC2 och CLKOUT.
Gamla 16f870 är billig och ger dig fler pinnar. Vill du ha mer minne så går ju lika gamla 16f876a bra. Nackdelen med dessa är att du måste ha extern klocka/resonator/kristall/RC-länk. Finns modernare picar som har detta inbyggt. 18F2220 är väl en het kandidat - skall du köra assabler så är det enklare på 18 -serien.
PIC16F886 är nog bästa valet kanske - har dock inte använt det själv, men har mig att det är moderna 28-pinnare med IntOsc och lite annat godis. Nackdelen är väl närmast att varken Elfa eller Farnell säljer den. Dock så skall den vara någon eller några tior billigare än 18F6220