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


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Pet Okt 22, 2004 7:31 pm Naslov sporočila: Duhec v procesorju? |
|
|
Torej pri testiranju kontolerja obratov ventilatorja sem po 200h delovanja naletel na eno čudno zadevo, kateri zaenkrat še nisem prišel do dna.
Torej imam en poseben ventilator, ki sprejema komando za regulacijo obratov kar z enosmerno napetostjo. 10V = maksimalni obrati 1V = minimalni obrati.
Ker ne rabim ravno linearne regulacije obratov sem sestavil vezje, ki s pomočjo procesorja in LM317 regulatorja nastavlja željeno napetost.
Zadeva dela po pričakovanjih, le pri trajnostnem testu sem opazil, da kdaj pa kdaj -> tole je "radndom" ventilatorju obrati padejo za kako sekundo.
Zato sem vezje opremil z množico testnih točk, s pomočjo katerih sem v končni fazi ugotovil, da težava izvira ravno od vezja za regulacijo obratov. Dlje pa nisem uspel priti. Merjenje izhodov na procesorju mi ni dalo takšnih zaključkov, kot bi hotel. Pravzaprav mi v dveh dnevih testiranja ni uspelo izmeriti niti ene napake na izhodih procesorja, kar me sploh bega, ker sem napako pričakoval. Napaka bi namreč kazala na napako v programu.
Me pa v zvezi s tem vezjem zanima ravno če lahko način s katerim vklapljam posamezne izhode procesorja vpliva na delovanje priloženega vezja.
Koda:
BSF PORTB, 0
BSF PORTB, 1
BSF PORTB, 2
BCF PORTB, 4
Program se vrne na to mesto približno na vsako sekundo in nanovo nastavi vrednosti.
Kakšna napaka zaradi napajanja mislim, da ni, ker ostale stvari, ki jih procesor dela (prikaz delovanja z LED-diodami) deluje neprekinjeno.
Kakšna divja ideja?
Opis: |
|
Velikost datoteke: |
7.02 KB |
Pogledana: |
5629 krat |

|
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Pet Okt 22, 2004 8:01 pm Naslov sporočila: |
|
|
Uporabljaš prekinitve ? Uporablljaš WDT ? Lahko pripneš kodo?
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Pet Okt 22, 2004 9:22 pm Naslov sporočila: |
|
|
Prekinitev ne uporabljam, prav tako ne WDT-ja.
Tole imam za konfiguracijo:
__CONFIG _CP_ON & _WDT_OFF & _PWRTE_ON & _XT_OSC
Kode same nebi rad pripenjal, ker jo je preveliko (530vrstic + ) , razlaganje delovanja bi bilo verjetno tudi predolgo. Bom jutri zadevo ponovno poizkusil zagnati preko MP-labovega simulatorja, če bo kaj ven padlo.
Mogoče še tole. Prekinitev še ne razumem točno (nisem še poizkusil napisati programa pa se nisem poglabljal v detajle). Pa me zanima še tole. Procesor 16F84A ima na RA4 detekcijo zunanje prekinitve. Ta pin v sedanji verziji ni vezan nikamor, je pa definiran kot izhodni. Je možno da pobera iz kje kakšno stvar in vpliva na delovanje??
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sob Okt 23, 2004 6:51 am Naslov sporočila: |
|
|
Torej, če prekinitev nisi vključeval GIE bit INTCON registra je nizek (sicer je po resetu to prevzeta vrednost ) potem so vse prekinitve izključene.
Še popravek pin RA4/T0CKI je vhod za TMR0 z zunanjim virom clock-a. Zunanjo prekinitev pa lahko izvedeno na RB0/INT. Torej, če so prekinitve izključene potem se prekinitev na pinu RB0/INT ne more izvesti. Zakaj sem omenil prekiniev. Do neke napake, ki se pojavi vsakih "100 let" lahko pride zaradi tega, ker se pred prekinitvijo niso shranile vrednosti STATUS registra ter se po vrnitvi iz prekinitve niso vrnile.
Kratka softwerska razlaga:
Koda: |
movf PORTB,W ;recimo preverjamo, če so vsi pini na portu b visoki in
iorlw 0xFF ;tukaj se je izvedala prekinitev pini so visoki Z=0
;prekinitev zadnja instrukcija ki je vplivala na bite statusnega registstra pa
;nam je STATUS,Z postavila na 1 - posledično se bo pojavila nelogična
;napaka
btfsc STATUS,Z ;
goto H_PORTB
goto L_PORTB
................
|
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Sob Okt 23, 2004 11:11 am Naslov sporočila: |
|
|
Hvala za popravek Se moram še veliko naučit.
Pa je možno, da nekako pride do interupta kljub temu, da so vsi PORTB biti definirani kot izhodni? Ali je to potrebno posebej definirati recimo z:
BSF STATUS, RP0
BCF INTCON, GIE
Ker prekinitve nimam nikjer eksplicitno izklopljene (razen pri pisanju v eeprom)
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sob Okt 23, 2004 11:25 am Naslov sporočila: |
|
|
Citiram: |
Ker prekinitve nimam nikjer eksplicitno izklopljene (razen pri pisanju v eeprom) |
Takoj po resetu so vse prekinitve izključene ter ostanejo izključene ne glede na to kaj se v programu dogaja. RB0/INT prekinitev vključiš izključno s postavitvijo bita GIE ter INTE INTCON registra. Torej, če jih nisi nikjer vključeval niso vključene ter jih ni potrebno izključevati pri vpisu v eeprom. V koliko bi bila katera koli prekinitev vključena bi se v trenutku prekinitve tok programa preusmeril na lokacijo 0x04 (vrjetno je tam koda glavne procedure v koliko si jo začel pisat pri 0x00) ter se nadaljeval od tam naprej.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
micabauc Član


Pridružen-a: Tor 03 Jun 2003 7:12 Prispevkov: 177 Aktiv.: 0.75 Kraj: Celje
|
Objavljeno: Tor Okt 26, 2004 5:12 pm Naslov sporočila: |
|
|
kaj pa temperaturna zaščita lm-a? Mogoče ti pa ta izklaplja?
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Okt 26, 2004 5:16 pm Naslov sporočila: |
|
|
Citiram: |
kaj pa temperaturna zaščita lm-a? Mogoče ti pa ta izklaplja? |
Točno, kako je s stabilizatorjem ? Stabilizator v T0 -220 ohišju se že pri toku okrog 100mA brez hladilnika segreje tako močno, da izklopi. Podoben primer sem imel sam.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Tor Okt 26, 2004 5:27 pm Naslov sporočila: |
|
|
Ja temperatura. Breme je 1Kohm upor + ventilator za katerega sem izmeril tok porabe 1,5mA. Upor sem moral dodati, da je regulator sploh delal pravilno. Regulator je mali 100mA v TO92 ohišju (mislim) In računsko ustreza.
V soboto sem še testiral program V MP-lab-u, kjer pa nisem našel napake. Oziroma se ni pokazala.
Danes sem ponovno izvajal meritve in kaj sem ugotovil? Do napake prihaja vsako uro. In moj procesor vsako uro shranjuje vrednost v svoj eeprom. Drugega kaj posebnega se v programu ne dogaja vsaj ne vsako uro. Zakaj bi se karkoli zgodilo ob vpisu v eeprom mi ni jasno. Mogoče sem spet kaj pozabil prebrat?
Se poraba drastično poveča? Napajalna napetost procesorja je ena izmed stvari, kateri sem na začetku testiranja posvetil največ pozornosti. in jo tudi izključil.
Izmeril sem, da se ob "motnji" vsaj izhod RB1, ki je bil v tistem trenutku 1 postavi na 0 zakaj mi ni jasno. Izhodi se namreč nastavijo v programu le na enem mestu.
Tako da jutri pričenem najprej z testiranjem, le da bo PIC shranjeval vrednost vsakih 15 minut. Nadaljeval bom z Picem, ki sploh ne shranjuje v eeprom. To mi bo menda dalo nedvoumno informacijo ali je vpis v eeprom kriv ali ne.
|
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Čet Okt 28, 2004 5:23 pm Naslov sporočila: |
|
|
Ne tem vezju bom izgleda diplomiral.
Torej preizkusil sem dva vezja in 3 PIC-e.
Torej najprej sem zmanjšal čas vpisovanja v eeprom na 15 minut in seveda se je motnja pojavila na 15 minut. Moram sicer preverit če sem slučajno pri progamiranju tretjega PIC-a kaj zamočil, samo trenutno kaže, da tudi če rutino za vpis v EEprom vržem ven se motnja še vedno pojavi.
Jutri bom upam imel več časa za testiranje na strojni opremi, ker mi MPLAB program poganja že od včeraj popoldne brez napake. Ali slučajno obstaja še kakšen način kako ujet spremembo na portu v MPLAB-u? Sedaj vidim, če se zgodi sprememba s tem, ko simulacijo animiram. Če se vrednost registra spremeni se le ta obarva rdeče in je spremembe lahko odkriti.
Nadalje imam vprašanje o bremenih priključenih na PIC-a. PORTB je pri meni izhodni. Na vse nogice PORTB imam priključene tranzistorje na bazo preko 1K upora.
Tranzistorji so BC547B, emitorji vezani na maso (0V) delujejo kot stikala. (vključujejo LED diode in podobno).
So 1K omski upori premajhni?
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Čet Okt 28, 2004 6:09 pm Naslov sporočila: |
|
|
Brez, da ne vidim kodo ti ne morem pomagat. V koliko si ugotovil, da nastane težava pri vpisu v eeprom išči napako tam okrog. Preveri, če slučajno na rutino ne hodiš z GOTO potem pa se želiš vrniti z RETURN Če sumiš, da se vpis konča po nepravi poti program tik pred zakključkom zazankaj boš videl, če pride sploh do tam. Na simulatorju je sploh težko odkriti napako kot sem jo napisal zgoraj. Skok na neko rutino z GOTO rutina pa je zaključena z RETURN misleč, da se boš vrnil od tam kjer si prišel z GOTO v resnici pa te RETURN pošlje nekam... žal prevajalnik take "cvetke" prežveči.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Čet Okt 28, 2004 8:03 pm Naslov sporočila: |
|
|
Na hitro sem preletel poslano kodo. En očitni "hrošček", ki bi lahko povzročal nevšečnost tiči na 365 vrstici kjer izvedeš vpis v EEPROM
Koda: |
MOVLW 0x55 ; nujno
MOVWF EECON2 ; nujno
MOVLW 0xAA ; nujno
MOVWF EECON2 ; nujno
BSF EECON1, WR ; sproži pisanje v EEprom
BCF STATUS, RP0 ; Izbrana banka 0
; konec pisanja v EEprom |
Pozabil pa si program zadržati do konca vpisa, kot si to storil, ko si vpisoval na lokacijo 0x0.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Čet Okt 28, 2004 10:14 pm Naslov sporočila: |
|
|
Ja priznam tole napako!
Če se prav spomnil sem na tem mestu tisto čakanje spustil zanalašč, ker sem si mislil, da sledi 1s pavza. Samo verjetno zadeva ni enaka kot čakanje na setiranje enega bita registra? Pa še sem program skoči vsakih 255 ur.
Vsekakor pa bom zadevo popravil.
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Pet Okt 29, 2004 6:20 am Naslov sporočila: |
|
|
Program sem le bežno pregledal. Tisto mi je padlo v oči. Si bom čez vikend vzel več časa. Taka "napaka" lahko povzroči napačen vpis v eeprom, če sledi vpis drug za drugim.
Glede samega programa. Res si ga precej razvlekel z GOTO skoki. Cel probram bi postal preglednejši, če bi določeno kodo , ki se ponavljaja strnil v proceduro ter jo klical z CALL. Tipičen primer za to je vpis v EEPROM
Koda iz tvojega progama:
Koda: |
VPIS_V_EE
BSF EECON1, WREN ; OmogoŔi pisanje v EEprom
MOVLW 0x55 ; nujno
MOVWF EECON2 ; nujno
MOVLW 0xAA ; nujno
MOVWF EECON2 ; nujno
BSF EECON1, WR ; spro×i pisanje v EEprom
Lahko_pisem1
BTFSC EECON1, WR ; je WR=0?
GOTO Lahko_pisem1 ; Ne
BCF EECON1, WREN
RETURN
;******************
;če želimo vpisati v poljubno lokacijo eeproma poljubno vrednost to storimo
;tako, da predhodno nastavimo naslov vpisa ter vrednost
;nato pokličemo zgornjo proceduro.
;primer
movlw .5
movwf EEADR
movlw .255
movwf EEDATA
call VPIS_V_EE
; progam se po končanem vpisu nadaljuje tukaj
|
Še opomba glede tvojega programa. Ker v progamu nisi uporabil prekinitev ter le te niso vključene jih pred vpisom v EEPROM tudi ni potrebno izključevati. Gre za nepotrebno kodo. Nikjer tudi nisi ponovno izključil vpisa v eeprom bcf EECON1, WREN
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Sre Nov 03, 2004 7:57 pm Naslov sporočila: |
|
|
Kaj naj rečem Silvo. Zadel si žebljico na glavo.
Rutino za vpisovanje v EEprom sem popravil po tvojem nasvetu in po detaljnem pregledu Microchip-ove dokumentacije.
Sicer sem bil prepričan, da sem program stestiral tudi tako, da sem rutino za pisanje v EEprom vrgel ven iz programa, a očitno mi tega vendarle nisem storil. Očitno me je zmedlo preveliko število poizkusov in programiranih a premalo označenih PIC-ev, ki sem jih očitno zamešal med sabo. (Da ne omenjam motenj z strani sodelavcev)
Danes je minil že drugi dan testov. Prilagam slikico iz inštrumenta. Imam 2 pica (tokrat jasno označena!) Staro verzijo(spodaj) in Novo verzijo(zgoraj). Obema sem spremenil časovno konstanto tako, da je potek primerljiv. Imam dva vezja, v kateri sem vgradil PIC-a. Inštrument jasno pokaže, da ima spodnji neke "motnje".
Pica sem med seboj tudi že zamenjal, da sem izključil morebiten vliv elekronike.
Sledi še test na normalni časovni bazi.
Je pa zanimivo, da motnje, kot je razvidno ne nastopajo ves čas ampak le nekaj časa.
Simulator v MPLAB-u teh napak ne pokaže.
Opis: |
|
Velikost datoteke: |
3.7 KB |
Pogledana: |
5663 krat |

|
|
|
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
|