Sida 1 av 3

PIC16F628A Lite problem

Postat: 2 maj 2007, 16:14:02
av Cenorpa
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.

Såhär ser den rensade PBP koden ut:

Kod: Markera allt


'*UV-Timer
'*

Define osc = 4

Disp3 VAR PORTA.0
Disp4 VAR PORTA.1
Disp1 VAR PORTA.2
Disp2 VAR PORTA.7

inp1   VAR PORTA.6


'*
RUN:							
GOSUB	INIT

Program:
If inp1 = 1 Then
	Disp1 = 1
	Disp2 = 1
	Disp3 = 1
	Disp4 = 1
	Pause 1000
Endif

Disp1 = 1
Disp2 = 0
Disp3 = 0
Disp4 = 0

Pause 400

Disp1 = 0
Disp2 = 0
Disp3 = 0
Disp4 = 0

Pause 400

Goto Program

'*-----------------------------*
'*INIT-------------------------*
'*-----------------------------*
INIT:

CMCON = 7


OUTPUT PORTA.0
OUTPUT PORTA.1
OUTPUT PORTA.2
OUTPUT PORTA.7

INPUT PORTA.6

RETURN

Postat: 2 maj 2007, 16:23:45
av Marta
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.

Postat: 2 maj 2007, 16:30:24
av sodjan
> Det fungerar helt enkelt inte att göra på "vanligt" sätt.

Vad är "vanligt" ??

Postat: 2 maj 2007, 16:31:27
av Cenorpa
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.

Postat: 2 maj 2007, 16:33:01
av sodjan
> Men hur är det med PortA.6 då, den ska jag väl kunna använda?

Självklart.

> Finns det kanske något annat smidigt sätt...

Byt PIC till en som räcker till för uppgiften.

Postat: 2 maj 2007, 16:36:15
av Cenorpa
sodjan skrev:Vad är "vanligt" ??
Jadu, bra fråga :)

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.

Postat: 2 maj 2007, 16:37:47
av v-g
Man kan även använda ett shiftregister.

Postat: 2 maj 2007, 16:38:16
av sodjan
> att man kanske måste styra det på något annat sätt

Ja, vem vet, kanske så som databladet säger... :-)
Har du läst på om just RA6 !?

Postat: 2 maj 2007, 16:38:22
av Cenorpa
sodjan skrev:
Byt PIC till en som räcker till för uppgiften.
Hmm, du känner ingen som säljer pic:ar som kanske har lite fler pinnar? :)

Postat: 2 maj 2007, 16:39:20
av sodjan
Jo.

T.ex PIC16F886, se http://www.jescab.se/Prod_PIC.html

Postat: 2 maj 2007, 16:42:46
av Marta
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.

Postat: 2 maj 2007, 17:23:07
av Cenorpa
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.

Postat: 2 maj 2007, 18:40:00
av bengt-re
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

Postat: 2 maj 2007, 19:32:11
av sodjan
> PortA.6 är ju integrerad med OSC2 och CLKOUT.

Exakt! Och hur har du konfigurerat processorn ?

Om du vill ha PA6 som I/O pinne, så är det "bara"
att konfigurera för det...

*HUR* du gör det i det verktyg du använder (verkar
vara någon Basic variant) har jag inte en susning om...

Postat: 2 maj 2007, 19:34:29
av sodjan
> Nackdelen är väl närmast att varken Elfa eller Farnell säljer den [PIC16F886] .

För mindre antal (hobbyist-marknaden) så är inte det ett reelt
problem sedan några veckor.

Se : http://www.jescab.se/Prod_PIC.html

8) 8)