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


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Tor Jun 06, 2006 2:37 pm Naslov sporočila: Nenavadno obnašanje na vhodu |
|
|
Pozdravljeni!
V PIC12C508A-[slovenščina je zame španska vas] imam zapisan program, ki ima vhod na portu GP0, ostali so pa izhodi. Na GP0 je vključen notranji pull-up upor. Konfiguracija:
__CONFIG _CP_ON & _MCLRE_OFF & _WDT_ON & _IntRC_OSC
Na GP0 je vezan tranzistor BC847N, ki preklaplja pin v nizko stanje.
Večino časa PIC opravlja svoje delo, občasno se pa zgodi sledeče:
Kar dolgo dela normalno, nakar na GP0 signal počasi začne padati na 4, 3, 2 volta vmes naredi še kak skok +-1V in ponavadi pade na 1V in tam ostane. Zgleda, kot da notranji pull-up ne opravlja svoje naloge. Poskusil sem povezati zunanji pull-up v tem stanju PICa, vendar se napetost na GP0 ne spremeni. Prav tako stanje vztraja, če odklopim tranzistor, niti WDT ga ne postavi na 5V.
Program sem testiral na 6 PICih, na 2 se mi je do zdaj pojavila ta anomalija, ni pa nujno, da se na preostalih ne bi pojavila, saj se to zgodi zelo redko.
Zanima me, če se je že kdo srečal s podobno anomalijo. Vsakršen predlog je dobrodošel. |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Tor Jun 06, 2006 2:50 pm Naslov sporočila: |
|
|
Kaj pa preklapljaš s tranzistorjem? Dobivaš nazaj na pin kakšne motnje?
Namreč opisan pojav je zelo podoben 'latchup'-u, ko na vhod dobiš signal čudne oblike, ki povzroči, da se vhod/izhod postavi v neko čudno stanje in se preneha odzivati.
Razlaga: Wikipedia - Latchup |
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.71 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Tor Jun 06, 2006 3:59 pm Naslov sporočila: |
|
|
Po mojem gre za napako v programu. Pin je postavljen na logično enko, potem pa gre v tristate stanje. Napetost (zaradi kapacitivnosti pinov, vezja) ostane nekaj časa gor in se počasi prazni preko tranzistorja, voltmetra, vezja... Če se to dogaja občasno, je lahko kriv stack (stack overflow). Večina procesorjev ima osem nivojski stack. To je zato, ker ima človek le deset prstov, da jih zatakne v listing programa pri iskanje napake na stacku.
Jur
Nazadnje urejal/a jur Tor Jun 06, 2006 4:04 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Tor Jun 06, 2006 4:03 pm Naslov sporočila: |
|
|
Po vsem prebranem na Wikipediji bi rekel da je to res možen vzrok. PIC je mogoče vzpostaviti v delovanje samo po dolgotrajnem odklopu vezja od napajanja, pri kratkotrajnem odklopu (par sekund) se problem ne odpravi. Ali je pojav odvisen od dolžine vodnikov med tranzistorjem in PICem, saj se kaj podobnega ni nikoli zgodilo, ko sem testiral s PICem povezanim z daljšimi žicami? Prav tako tega pojava nisem nikoli zasledil na 12F ali pa na 16F PICih. V bistvu sem izvedel kar nekaj vezij, kjer sem preko tranzistorjev krmilil stanje na pinih, pa česa podobnega nisem nikoli zasledil. Je mogoče to značilno samo za to serijo PICev? |
|
Nazaj na vrh |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Tor Jun 06, 2006 4:24 pm Naslov sporočila: |
|
|
Če je v kodi problem, je to verjetno v funkcijah, ki sem jih dodal nazadnje glede na to, da se je težava začela komaj zdaj, testiral sem pa že prej. Na zadnje sem:
-Prešel iz DIP na SMD
-CP_ON ter začetek kode prestavil na 0x40
-vklopil WDT
-v proste lokacije hex datoteke (lokacja od 0x05 in 0x3f) zapisal neke znake, ki pa jih potek programa naj ne bi nikoli dosegel.
Če bi bil kriv sam program, potem bi se ta anomalija pojavljala od začetka. Zdaj se večino časa ne pojavi. Samo občasno.
Tu je kratka predtavitev programčka ki teče na pic:
list p=12C508A ;izbira tipa cipa
#include <p12C508A.inc> ;vkljucitev datoteke z definicijami simbolov
__CONFIG _CP_ON & _MCLRE_OFF & _WDT_ON & _IntRC_OSC
; ---- Spremenljivke
Cblock 0x07
;spremenljivke
endc
;-------------------------------------------------------
movwf OSCCAL
goto init ;skok na glavni program
; jedro programa
org 0x40 ;zacetek programske kode
init
movlw b'00000001' ;vsi pini porta so izhodni, razen GP0 = vhod
tris GPIO ;don't ask why, it's so in pic12f pic12c mcu's
movlw b'10001110'
OPTION ;pull-up upori vkljuèeni, WDT delilnik 110
clrf GPIO ;izhode porta postavi na 0
;postavitev spremenljivk na 0
goto main
main
;tu pride relativno enostavna rutina z kar nekaj btfss in btfsc pina GP0 in in spreminjanji stanja na GP1.
goto main
end |
|
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: Tor Jun 06, 2006 4:59 pm Naslov sporočila: |
|
|
Pripni program ter načrt (če ni skrivnost) - lahko mi daš tudi pod zasebno. Mislim, da imam eno okensko varianto pica - bi zadevo poskusil. _________________ lp
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
|