 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Sre Sep 14, 2011 7:08 am Naslov sporočila: PIC 16F747 I/O težava |
|
|
Pozdravljeni,
Za eno aplikacijo uporabljam pic 16F747. Uporabljene imam skoraj vse pine na čipu, tako, da nisem mogel kaj dosti eksperimentirati z menjavanjem izhodov. Je pa problem v tem, da mi izhodi RB4, RB3 in RB2 delujejo nepravilno. Ko bi moralo biti stanje high je na izhodu le 0,15V napetosti ali pa še to ne. Ko je stanje low so OK, 0,00V. Vsi drugi izhodi in vhodi so OK - vsi digitalni.
Za programiranje uporabljam PIC C CCS program. Zanimivo je tudi to, da sem pri eni drugi aplikaciji uporabil isti čip z isto začetno kodo (include, fuses ....) in je delal ok tudi na omenjenih izhodih.
hmm, upam da mi lahko kako pomagate, saj imam tiskanino 200x150mm že narejeno in je vse ostalo OK, tako da je nebi rad popravljal po nepotrebnem že zaradi precej materialnih stroškov.
lp, Taubek
|
|
Nazaj na vrh |
|
 |
Peter123 Član


Pridružen-a: Tor 13 Jan 2009 15:34 Prispevkov: 1441 Aktiv.: 7.21 Kraj: Lj.
|
Objavljeno: Sre Sep 14, 2011 7:14 am Naslov sporočila: |
|
|
Si preveril vpise v Tris registre?
|
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Sre Sep 14, 2011 8:54 am Naslov sporočila: |
|
|
kako lahko to preverim?
imam na začetku programa napisane ukaze set_tris_b(0b00000000).
naprej v programu pa delam z output_high in output_low ukazoma. Pri vseh ostalih izhodih je ok, samo pri teh treh je vrednost ko dam na high zelo nizka, se pa premakne iz 0, 00 na 0,07 ali na 0,15, višje pa ne. Pri ostalihizhodih pride ven 5V, kot je normalno.
lp
|
|
Nazaj na vrh |
|
 |
PZUFIC Vseved


Pridružen-a: Sob 17 Nov 2007 19:06 Prispevkov: 6987 Aktiv.: 32.65 Kraj: Rakek
|
Objavljeno: Sre Sep 14, 2011 9:09 am Naslov sporočila: |
|
|
Poskusi z drugim čipom, če ga imaš. Ali pa spiši program samo z TRIS..., in določi, da ti cel port postavi na ena in potem pomeri kaj se dogaja. Tako boš lahko prepričan, da je čip ok.
_________________ Ne čakaj, da se bo nekaj premaknilo pojdi in nekaj premakni.
Lp Primož |
|
Nazaj na vrh |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Sre Sep 14, 2011 9:14 am Naslov sporočila: |
|
|
Si poskusil zamenjati uC?
Če ti je na prejšnjem projektu z enakim uC vse delalo ok, pa naredi kopijo tistega projekta in pobriši vse razen inicializacije teh pinov in poglej, če se ti na tej isti plošči outputi postavijo na 5V.
Drugače pa tudi preveri kako imaš konfigurirane ADje in CCP modul. RB2-4 si delijo funkcionalnost s to periferijo.
_________________ LP, Matjaž |
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Sre Sep 14, 2011 9:17 am Naslov sporočila: |
|
|
PZUFIC je napisal/a: |
Poskusi z drugim čipom, če ga imaš. Ali pa spiši program samo z TRIS..., in določi, da ti cel port postavi na ena in potem pomeri kaj se dogaja. Tako boš lahko prepričan, da je čip ok. |
Sem poizkusil tudi z čipom 16F777, ki je po digitalnih I/O enak 16F747 samo da ima več spomina in dodatne funkcije...
bi poiskusil tudi z varianto kode output_b(0b00011101) pa je problem to, da ni cel byte namenjen eni funkciji in bi se vrednost nekaterih drugih bitov morala spreminjati ne glede na ostale vrednosti. Ali obstaja kak znak, ki ne spremeni obstoječe vrednosti bita v bytu?
|
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.42
|
Objavljeno: Sre Sep 14, 2011 9:19 am Naslov sporočila: |
|
|
CCS ima direktive #use fixed_io(port) in #use standard_io(port). Pri prvem rabiš sam definirat tris registre, pri drugem prevajalnik sam nastavi tris registre pri vsakem input() in output_xxx(). Poglej navodila za CCS, vse lepo piše.
Preveri tudi, če nimaš vklopljeno kako periferijo, ki te pine potrebuje zase in s tem ne upošteva tris registra (AD pretvornik?)...
Sicer pa stvar priključi na debuger in poglej, kaj se dogaja (ali pa vsaj v simulatorju preveri).
_________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Sre Sep 14, 2011 10:44 am Naslov sporočila: |
|
|
bom probal ko pridem domov iz sihta. AD pretvornikov pa nimam vključenih, razen če so po defaultu vklopljeni. Bom dodal na začetku še setup_adc_ports(no_analog) oziroma all digital, morem pogledat kera verzija je prav.
lp.
|
|
Nazaj na vrh |
|
 |
Peter123 Član


Pridružen-a: Tor 13 Jan 2009 15:34 Prispevkov: 1441 Aktiv.: 7.21 Kraj: Lj.
|
Objavljeno: Sre Sep 14, 2011 10:52 am Naslov sporočila: |
|
|
Sam klub temu da sem sprogramiral marsikatero malenkost vedno začnem z LED on/off vsak projekt.
Če imaš osciloskop lahko napišeš zanko samo out 1 in out 0. Pa pogledaš signal na pinu. S tem preveriš vse TRIS ukaze ter tudi s katero frekvenco teče MCU.
Ko imam "stestiran" HW začnem z dejanskim programskim delom.
Z leti si zapomneš predvsem slabe izkušnje ter napake.
|
|
Nazaj na vrh |
|
 |
xfce Član

Pridružen-a: Čet 28 Jul 2011 8:06 Prispevkov: 521 Aktiv.: 3.08
|
Objavljeno: Sre Sep 14, 2011 11:16 am Naslov sporočila: |
|
|
Tukaj je skoraj 100% težava v tem, ker so pomojem po defaultu vklopjeni analogni vhodi in komparator. Poglej v dokumentacijo, kako se jih izklopi.
To se pravi nujno izklopi analogne vhode in izklopi komparatorje.
|
|
Nazaj na vrh |
|
 |
AlesK Član

Pridružen-a: Sob 24 Jan 2009 15:59 Prispevkov: 17 Aktiv.: 0.09 Kraj: Kobarid
|
Objavljeno: Sre Sep 14, 2011 11:34 am Naslov sporočila: |
|
|
Preveri: RA4 je tipa Open Drain. Rabi pull up upor na napajanje.
|
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Sre Sep 14, 2011 12:16 pm Naslov sporočila: |
|
|
mučijo me RB2, RB3 in RB4. Port A je OK.
|
|
Nazaj na vrh |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Sre Sep 14, 2011 9:35 pm Naslov sporočila: |
|
|
Tako na pamet:
CMCON = 0x07;
ADCON1 = 0x0F;
Drži?
Preveri v simulatorju.
_________________ LP, Matjaž |
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Čet Sep 15, 2011 1:03 pm Naslov sporočila: |
|
|
Pripenjam txt file programa, kot sem ga imel napisanega pred popravki.
Bi vas prosil za vnos popravkov, da bom naslednjic lahko sam pogruntal, oziroma spisal bolj kvaliteten program.
Zdaj sem za silo spremenil ene pine tako da mi aplikacija deluje, sem pa moral za to zrtvovati par vhodov.
lp in hvala za nasvete.
Opis: |
|
 Download |
Ime datoteke: |
16F747.txt |
Velikost datoteke: |
7.7 KB |
Downloadano: |
13 krat |
|
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Čet Sep 15, 2011 6:09 pm Naslov sporočila: |
|
|
Če ne bi imel tako razmetanih pinov, bi bil program čisto enostaven ...
Tako pa je potrebna pretvorba iz BCD na tvoje pine
Koda: |
if (a.0==1)
output_high(RD6);
else
output_low(RD6);
endif
if (a.1==1)
output_high(RC7);
else
output_low(RC7);
endif
if (a.2==1)
output_high(RD4);
else
output_low(RD4);
endif
if (a.3==1)
output_high(RD5);
else
output_low(RD5);
endif
...
Enako ponoviš še za b.0 , b.1 , b.2 , b.3 , pa za vse štiri c._ in d._ .
Gotovo pa obstaja kak operand za priredbo, da kar brez "if" stavkov prirediš bite spremenljivke na bite porta
RD6 = a.0
RC7 = a.1
RD4 = a.2
RD5 = a.3
RD3 = b.0
RC6 = b.1
RC5 = b.2
RD2 = b.3
...
|
Lahko pa vstaviš kar kos kode v zbirniku
Koda: |
btfsc a,0
bsf PORTD,6
btfss a,0
bcf PORTD,6
btfsc a,1
bsf PORTC,7
btfss a,1
bcf PORTC,7
... |
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|