www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

RB6 na 16F628

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
California
Član
Član



Pridružen-a: Pet 26 Avg 2005 19:48
Prispevkov: 236
Aktiv.: 1.00
Kraj: Hrastnik

PrispevekObjavljeno: Pet Apr 06, 2007 4:38 pm    Naslov sporočila:  RB6 na 16F628 Odgovori s citatom

Pozdravljeni.
Poizkušam spraviti v pogon projekt od Aly-ja "One-Wire--PIC--RS232" v malce spremenjeni sestavi (6 x DS18S20 + 5 x dig.izhod) in mi je skoraj uspelo! Izjema je omenjeni RB6 pin, ki je "neposlušen". Torej, RB0=OneWire, RB1 in RB2=USART, RB3 do RB7 so pa digitalni izhodi in vsi razen RB6 tudi delujejo. Vprašanje: kaj sem naredil narobe oziroma kaj moram narediti, da napako odpravim?

Lp
Vlado



2.rar
 Opis:

Download
 Ime datoteke:  2.rar
 Velikost datoteke:  8.7 KB
 Downloadano:  27 krat


_________________
California
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1714
Aktiv.: 7.24
Kraj: Ig

PrispevekObjavljeno: Pet Apr 06, 2007 5:07 pm    Naslov sporočila:   Odgovori s citatom

Ne poznam sicer arhitekture PICev, a na AVRjih je par takih pinov, ki so brez notranjega pull-upa, zato ne delujejo kot klasični digitalni vhod ali izhod. Mogoče je tudi pri PICih podobna zadeva. Poizksi dati mer 5V ter pinom en 10k upor, pa boš videl, če dela.

LP Gorazd

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
California
Član
Član



Pridružen-a: Pet 26 Avg 2005 19:48
Prispevkov: 236
Aktiv.: 1.00
Kraj: Hrastnik

PrispevekObjavljeno: Pet Apr 06, 2007 8:27 pm    Naslov sporočila:   Odgovori s citatom

Pull-upi so v programu izklopljeni, vendar tudi z zunanjim uporom ne deluje.

Lp
Vlado

_________________
California
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
s56al
Član
Član



Pridružen-a: Pon 19 Sep 2005 12:03
Prispevkov: 788
Aktiv.: 3.33
Kraj: JN66SI & JN76TM

PrispevekObjavljeno: Pet Apr 06, 2007 9:43 pm    Naslov sporočila:   Odgovori s citatom

Pozdrav Vlado,

Kaj točno si priključil na RB6? Tvoje priponke žal ne morem sneti, ker nisem "aktiven član", zato zgolj ugibam... Torej, če je morda kaj takega, da "drži" napetost pina RB6, ko je ta skonfiguriran kot izhod in postavljen na "visoki nivo", pod ca. 2,5V, potem bo ob vsaki spremembi kateregakoli drugega RB.x (setb ali clrb....) ali izvedbi operacij na celem PORTB registru, ki spreminjajo stanje samo kakega drugega RB.x pina, tudi RB6 vedno šel v nizko stanje (0V). Razlog je v t.i. "read / modify / write" tipu operacij.

Primer:

1. clrf status
2. bsf status, rp0 ;preklop na RAM/reg. stran 1
3. clrf TRISB ;Vsi pini PORTB so izhodi

4. clrf status
5. bsf portb,6 ;RB6 postavi na "high"
6. movlw b'00000001'
7. iorwf portb,f ; ukaz bi moral le postaviti RB0 na "high" ostale pine pa pustiti nespremenjene, vendar!...

... če je npr. na RB6 direktno priklopljena LED (brez predupora), drž le-ta RB6 na ca. 2V, zato bo po izvedbi ukaza pod 7. šel hkrati na "low" tudi RB6!

4. bsf portb,6 ; RB6 postavi na "high"
5. bsf portb,4 ; ukaz bi moral le postaviti na "high" RB4, toda....

... če je na RB6 napetost zaradi zunanjih priključenih elementov napetost manjša od 2,5V, bo zopet šel v nizko stanje tudi RB6


Podobno navidez "neubogljivo" se pri PIC z integriranim A/D konverterjem radi obnašajo tudi pini PORTA, če niso pravilno skonfigurirani kot "analogni" / "digitalni" ter pini, ki služijo kot komparatorski vhodi. Pri novejšem PIC18F458 recimo so komparatorski vhodi pod privzeto (reset) skonfigurirani kot komparatorski, tako da jih je za splošnonamensko I/O uporabo potrebno najprej prekonfigurirati na dig. I/O, sicer se prav tako obnašajo "čudno". Apak to je že druga zgodba za druge pice... Smile

LP, Sandi

_________________
73 de s56al
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
snow
Član
Član



Pridružen-a: Tor 27 Dec 2005 14:02
Prispevkov: 341
Aktiv.: 1.44
Kraj: Ljubljana || Velenje

PrispevekObjavljeno: Pet Apr 06, 2007 9:56 pm    Naslov sporočila:   Odgovori s citatom

Sem malo pogledal datasheet od 16f628 pa je na rb6 poleg klasičnega I/O le še vhod za oscilator/clock za T1 timer, ki pa je privzeto izključen.

Kot je Sandi omenil, bi lahko šlo za read-write-modify situacijo.

Si mogoče poizkusil še kakšen drugi 16f628? Lahko bi se zgodilo, da si kdaj skuril pin.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
California
Član
Član



Pridružen-a: Pet 26 Avg 2005 19:48
Prispevkov: 236
Aktiv.: 1.00
Kraj: Hrastnik

PrispevekObjavljeno: Pet Apr 06, 2007 11:46 pm    Naslov sporočila:   Odgovori s citatom

Varianta s skurjenim pinom ni izključena. Jutri poizkusim drug čip in poročam.
Lp.
Vlado

_________________
California
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
California
Član
Član



Pridružen-a: Pet 26 Avg 2005 19:48
Prispevkov: 236
Aktiv.: 1.00
Kraj: Hrastnik

PrispevekObjavljeno: Sob Apr 07, 2007 9:46 am    Naslov sporočila:   Odgovori s citatom

Danes sem zamenjal tri nove čipe (en kos 16F628 in dva kosa 16F628A) in rezultat je isti, vse "sveti" razen RB6. Na izhode RB3 do RB7 so priklopljene LED diode preko upora.
Lp.
Vlado

_________________
California
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
s56al
Član
Član



Pridružen-a: Pon 19 Sep 2005 12:03
Prispevkov: 788
Aktiv.: 3.33
Kraj: JN66SI & JN76TM

PrispevekObjavljeno: Sob Apr 07, 2007 1:55 pm    Naslov sporočila:   Odgovori s citatom

A lahko tukaj izpišeš del programske kode, ki prižiga in ugaša port B, pa še par ukazov prej in potem ali pa če mi pošlješ asm izvorno kodo na ZS? Na PC nimam nobenega programa za odpakirat *.rar.

Kako veliki so upori, ki omejujejo tok skozi LED? A je kje na RB6 priključena kaka večja kapacitivnost (npr. dolga žica)?

_________________
73 de s56al
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 12.46
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Sob Apr 07, 2007 5:12 pm    Naslov sporočila:   Odgovori s citatom

Datasheet:
Citiram:
PORTB is multiplexed with the external interrupt,
USART, CCP module and the TMR1 clock input/output.
The standard port functions and the alternate port
functions are shown in Table 5-3. Alternate port
functions may override the TRIS setting when enabled.


Preveri, da nimaš vključenega timer izhoda ali vhoda, ker lahko "povozijo" nastavitve porta.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
s56al
Član
Član



Pridružen-a: Pon 19 Sep 2005 12:03
Prispevkov: 788
Aktiv.: 3.33
Kraj: JN66SI & JN76TM

PrispevekObjavljeno: Sob Apr 07, 2007 6:00 pm    Naslov sporočila:   Odgovori s citatom

Pozdrav ponovno,

Izpis assemblerske kode sem si pogledal, vendar takole na prvi pogled žal nisem opazil nič kaj izrazito posebnega, kar bi lahko delalo težave.

Ali si že probal kaj debugirati? Če še nisi, predlagam, da za začetek med sabo zamenjaš v ukazih, kjer dekodiraš po UART sprejeti znak, 'c' z 'd' in 'C' z 'D', tako da bo 'd'/'D' prižigal / ugašal port RB5 ter 'c'/'C' port RB6. Da se prepričamo, da je res težava v ugašanju / prižiganju porta RB6 in ne morda v sprejemu znakov po UART. Če iz kakšnega razloga preveč odstopa frekvenca oscilatorja, se lahko zgodi, da se nekateri znaki po UART sprejemejo pravilno, drugi ne.

Kako se vezje pravzaprav odziva? LED na RB6 ni možno niti prižgati, niti ugasniti, ali samo eno od tega? Ali lahko prižgeš / ugasneš LED na RB6 s preprostim ukazom kje na začetku izvajanja glavnega programa (po inicializacijah) in takoj zatem izvajanje programa zazankaš v neskončno zanko (+ proženje WDT), da se programski tek "ustavi":


.....bsf portb,6

zanka
......clrf WDT
......goto zanka

_________________
73 de s56al
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
California
Član
Član



Pridružen-a: Pet 26 Avg 2005 19:48
Prispevkov: 236
Aktiv.: 1.00
Kraj: Hrastnik

PrispevekObjavljeno: Sob Apr 07, 2007 9:43 pm    Naslov sporočila:   Odgovori s citatom

Poizkus 1:
V LabView sem zamenjal ukaze C/c z D/d in obratno. D/d je prižgal RB5, medtem ko RB6 ni reagiral na C/c.
Nato sem zamenjal med sabo še ukaze D/d in E/e. D/d je prižgal RB7, RB6 pa je zopet ostal v temi.
Poizkus 2:
Da stestiram RB6, sem naložil preprost programček, kateri premika logično 1 po portu B od RB0 proti RB7 in zopet od začetka. In ne boste verjeli, RB6 tudi sodeluje.

mucek4 je napisal:
Preveri, da nimaš vključenega timer izhoda ali vhoda, ker lahko "povozijo" nastavitve porta.
Pomoč bi bila dobrodošla, ker sem kratek v asemblerju.

Lp.
Vlado

_________________
California
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 12.46
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Ned Apr 08, 2007 9:41 am    Naslov sporočila:   Odgovori s citatom

Po pregledu kode nisem našel kaj očitnega. Testiraj. V tvoj program vrivaj kodo:
Koda:
      bsf  PORTB,6
loopy goto loopy

Najprej na začetku, nato čez nekaj vrstic, nato še čez nekaj vrstic in boš videl kje ne dela več. Nato imaš samo nekaj vrstic za temeljit pregled.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
s56al
Član
Član



Pridružen-a: Pon 19 Sep 2005 12:03
Prispevkov: 788
Aktiv.: 3.33
Kraj: JN66SI & JN76TM

PrispevekObjavljeno: Ned Apr 08, 2007 10:07 am    Naslov sporočila:   Odgovori s citatom

California je napisal/a:
Poizkus 1:
V LabView sem zamenjal ukaze C/c z D/d in obratno. D/d je prižgal RB5, medtem ko RB6 ni reagiral na C/c.


Ali je možno, da je zazipani program, ki si mi ga poslal na ZS, drugačen od tistega, ki ga vpisuješ v svoj kontroler? Namreč, program sem uvozil v MPLAB in probal s simulacijo, ter ugotovil, da če po UART simuliram "sprejem" znaka "D", ki naj bi glede na tvoj program prižigal LED na RB6, programski tek sploh ne pride do kode, ki naj bi izhod RB6 dejansko "prižgala". Zakaj? Ker je v delu programa, ki dekodira po UART sprejeti znak, "D" že porabljen v drug namen in sicer se izvede naslednja koda:



movF RXchar, W
subLW 'D'
btFss STATUS, Z
goto S_dd_ascii

CALL OW_RESET ; Send Reset Pulse and read for Presence Detect Pulse
BTFSS OW_PDBYTE,0 ; 1 = Presence Detect Detected
GOTO OW_NOPDPULSE
MOVLW cmdReadROM
CALL OW_TXbyte ; Send Skip ROM Command (0xCC)
movLW .8 ; 8 bytov (1b family, 6b serial#, 1b CRC)
movWF LoopCounter
RR_loop call OW_RXbyte
movF OW_data, W
call U_TXch
decFsz LoopCounter, F
goto RR_loop
goto Zacetek


... ter potem program zopet gre v zanko čakanja na ukaze po UART.

Če simuliram "sprejem" znaka "C", pa programski tek lepo gre na del programa, ki "prižge" RB5...

Simulacija tudi ne zazna, da bi se kje v programu RB6 skonfiguriral kot Timer 1 vhod, kar bi ga potencialno lahko onemogočilo kot splošnonamenski dig. izhod in posledično povzročalo čudno vedenje.

Ker PIC programatorja v tem trenutku nimam pri sebi, več žal ne morem pomagati. Če problema ne boste rešili do naslednjega tedna, bom probal sestaviti vezje na protoboardu, ker sedaj me pa že resno zanima, kaj je na stvari. 16F628 tudi sam uporabljam, tako da bi bilo dobro vedeti, v katerem grmu tiči (velikonočni) zajec Smile.

_________________
73 de s56al
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
California
Član
Član



Pridružen-a: Pet 26 Avg 2005 19:48
Prispevkov: 236
Aktiv.: 1.00
Kraj: Hrastnik

PrispevekObjavljeno: Ned Apr 08, 2007 1:04 pm    Naslov sporočila:   Odgovori s citatom

Eureka!
Namesto D/d sem postavil v kodo ukaz G/g in zadeva je stekla.
Vsem sodelujočim se zahvaljujem za izdatno pomoč pri reševanju problema.
Če se bo aly strinjal, bom vse skupaj tudi pripel za širšo uporabo.

Lp.
Vlado

_________________
California
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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: 491 dni


Powered by phpBB © 2001, 2005 phpBB Group