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

Pridružen-a: Pet 08 Okt 2004 0:55 Prispevkov: 4974 Aktiv.: 21.00 Kraj: LJ
|
Objavljeno: Ned Jun 11, 2006 6:10 pm Naslov sporočila: RA4 na 16F628A |
|
|
Imam težavo z RA4 na 16F628A. Po spodaj pripeti inicijalizaciji in stalnemu SETiranju v zanki mi ga kot izhod nikakor ne postavi na stalni HI, ampak samo utripa z zelo kratkimi HI impulzi frekvence 255Hz.
Uporabljam notranji oscilator in pull-up upor na RA4.
Sumim da je nekaj v zvezi s TMR0 vendar mi ne uspe ugotoviti vzroka.
Koda: |
__CONFIG _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _MCLRE_ON & _LVP_OFF & _INTOSC_OSC_NOCLKOUT
........
bcf STATUS,RP0
movlw B'00000111'
movwf CMCON
bsf STATUS,RP0
movlw B'00000000'
movwf TRISA
movlw B'11101111'
movwf TRISB
movlw b'01000011'
movwf OPTION_REG
bcf STATUS,RP0
movlw b'10100000'
movwf INTCON
........
Zanka
bsf PORTA,4
goto Zanka
........
|
Vsi ostali vhodi/izhodi na RA in RB portih delujejo brezhibno. Kakšna ideja? |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Jun 11, 2006 6:21 pm Naslov sporočila: |
|
|
Pin RA4 je tipa odprt kolektor. Recimo, če boš dal na njega ledico preko upora proti Vdd bo le ta gorela ob instrukciji BCF PORTA,4 _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Iztok Član

Pridružen-a: Pet 08 Okt 2004 0:55 Prispevkov: 4974 Aktiv.: 21.00 Kraj: LJ
|
Objavljeno: Ned Jun 11, 2006 6:29 pm Naslov sporočila: |
|
|
Silvo, na RA4 imam ravno zaradi odprtega kolektorja vezan pull-up upor kot sem že prej omenil. Kljub temu in ukazu BSF PORTA,4 mi izhod utripa - je skoraj stalno na LOW.  |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Jun 11, 2006 6:37 pm Naslov sporočila: |
|
|
Kako ti utripa? Imaš gor ledico ali to zaznaš z meritvijo? Če je vmes ledica kam jo imaš vezano med pin ter minus ali zaporedno z pullup uporom. Kaka vrednost je pullupa? (pazi da ti tok ne preseže tam 25mA.) _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Iztok Član

Pridružen-a: Pet 08 Okt 2004 0:55 Prispevkov: 4974 Aktiv.: 21.00 Kraj: LJ
|
Objavljeno: Ned Jun 11, 2006 6:48 pm Naslov sporočila: |
|
|
Na RA4 imam iz +5v vezan upor 4k7. Stanje na pinu pa merim z osciloskopom in logik-testerjem. Hardware je 100% v redu.
Problem je gotovo v softweru, čeprav po zagonu - inicijalizaciji programa ne spreminjam nobenih SFRjev več. |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Jun 11, 2006 6:54 pm Naslov sporočila: |
|
|
Ne vidim kaj bi bilo narobe. . Imam občutek, da se ti procesor resetira. Je config bite pobral pravilno? Da ti to slučajno ne dela WDT? (preberi sprogramiran procesor)
Kako je z reset pinom? Ga imaš na + ?
(bom probal ta del kode - poročam) _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Jun 11, 2006 7:52 pm Naslov sporočila: |
|
|
Očitno zaoscilira. Enako se je zgodilo tudi meni. Daj manjši upor (1k) pa bo zadeva delala. Sicer se sam načeloma, če je le možno pina RA4 kot izhod izogibam.
Tudi tole
Koda: |
_INTOSC_OSC_NOCLKOUT |
prevajalnik ne prežveči. Prav je
Koda: |
_INTRC_OSC_NOCLKOUT |
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Iztok Član

Pridružen-a: Pet 08 Okt 2004 0:55 Prispevkov: 4974 Aktiv.: 21.00 Kraj: LJ
|
Objavljeno: Ned Jun 11, 2006 8:45 pm Naslov sporočila: |
|
|
Tudi jaz se bom RA4 v bodoče izogibal ... mi je zapravil kar nekaj ur.
Upora pa ne smem zmanjševat, ker sem imel na pin vezano bazo tranzistorja in bo bazni tok prevelik. Bom raje prevezal - popravil vezje in uporabil RA0, ki je še prost in deluje točno tako kot sem predvidel v programu že za RA4.
_INTOSC_ je pri meni pravi ukaz. Verjetno uporabljava malce drugačni P16F628A.INC datoteki.
Silvo, hvala ker si preizkusil ... drugače bi še naprej in  |
|
Nazaj na vrh |
|
 |
s56al Član

Pridružen-a: Pon 19 Sep 2005 12:03 Prispevkov: 788 Aktiv.: 3.33 Kraj: JN66SI & JN76TM
|
Objavljeno: Tor Jul 11, 2006 12:35 pm Naslov sporočila: |
|
|
Iztok je napisal/a: |
Upora pa ne smem zmanjševat, ker sem imel na pin vezano bazo tranzistorja in bo bazni tok prevelik. |
Pozdravljen Iztok,
Če prav razumem, si bazo T vezal direktno na RA4, se pravi, ko si na RA4 postavil visoko stanje, je bilo na pinu ca. 0,7V?
Tudi če v tvojem primeru to ni bil razlog težav, se je taki vezavi pametno izogibati. Pri PIC kontrolerju (in tudi veliko drugih družinah) so komande za delo z dvosmernimi I/O porti (tudi one, ki postavljajo samo en bit, npr. ukaz "bsf porta,4"), tipa READ/MODIFY/WRITE na celem port data registru. To pomeni, da če bi v programu spreminjal stanje na recimo pinu RA0 s komando "bcf porta,0", bi CPU prečital cel porta data register, spremenil stanje na RA0 in zapisal nazaj. Ker pa imaš na RA4, ko je ta postavljen v visoko stanje, dejansko le ca. 0,7V, CPU zazna na tej nogici nizko stanje in ga po izvršeni "read" in "modify" ukazni sekvenci zapiše nazaj v izhodni data register na mesto RA4 kot nizko stanje.
Na kratko, sprememba stanja na kateremkoli drugem pinu porta A z ukazom bcf ali bsf, bo pri taki vezavi vedno postavila v nizko stanje tudi izhod RA4.
Tudi meni je pred leti, ko sem se PICov še učil, podobna težava vzela kar mnogo uric. Pri tem sem se naučil, da je pred uporabo mikričev daljnoročno vedno najmanj potratno podrobno prebrati datasheet, tudi drobni tisk . V PIC16F628 datashetu je zadeva opisana v poglavju 5.1 - "Port A and Tris A registers" na strani 29 ter poglavju 5.3.1 - "Bidirectional I/O ports, programming considerations" (stran 42).
LP, Sandi _________________ 73 de s56al |
|
Nazaj na vrh |
|
 |
Iztok Član

Pridružen-a: Pet 08 Okt 2004 0:55 Prispevkov: 4974 Aktiv.: 21.00 Kraj: LJ
|
Objavljeno: Tor Jul 11, 2006 3:09 pm Naslov sporočila: |
|
|
@s56al, imaš popolnoma prav. Hvala za obrazložitev.
Sem bil malo površen in nisem bral drobnega tiska. Pač nisem pričakoval da program kontrolira input status pina, ki je definiran kot izhod. Pri drugih podobnih I/O zadevah tega prej nisem še nikoli videl.
Res sem vezal bazo tranzistorja direkt na RA4 ki je imel hkrati še pull-up upor. Ko sem kasneje dal pred bazo tranzistorja še 3v3 zenerco je stvar delovala BP.
Vseeno bom od te izkušnje naprej uporabljal RA4 samo še kot input ali pa kot pull-down output za kakšno LEDico ali relejček z majhno porabo kot je že enkrat omenil Silvo. |
|
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: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|