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

Pridružen-a: Pet 08 Jan 2010 20:34 Prispevkov: 26 Aktiv.: 0.13 Kraj: LJ
|
Objavljeno: Pon Mar 21, 2011 2:10 pm Naslov sporočila: multipleksirano krmiljenje 7 seg LED - PROBLEM |
|
|
Še vedno imam probleme s multipleksiranim prikazovanjem na dva 7-segmentna LED displeja. Da bi razumel zakaj ne deluje sem spisal en čist preprost program, ki pa prav tako ne deluje. Kje je napaka?
| Koda: |
#INCLUDE P16F886.INC
__CONFIG _CONFIG1, _DEBUG_ON & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _HS_OSC
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
ZAK_ST1 EQU 0x22
ZAK_ST2 EQU 0x23
ZAK_ST3 EQU 0x24
ORG 0x0000
NOP
CALL INIT_IO
GOTO GLAVNA_ZANKA
ORG 0x0004
GLAVNA_ZANKA
CALL PRIKAZ_ENIC
CALL ZAKASNITEV
CALL PRIKAZ_DESETIC
CALL ZAKASNITEV
GOTO GLAVNA_ZANKA
;-------------------------------------------------------------------------------------
PRIKAZ_ENIC
BSF PORTC,4
MOVLW B'10001000'
MOVWF PORTB
BCF PORTC,5
RETURN
;-------------------------------------------------------------------------------------
PRIKAZ_DESETIC
BSF PORTC,5
MOVLW B'10100011'
MOVWF PORTB
BCF PORTC,4
RETURN
;-------------------------------------------------------------------------------------
ZAKASNITEV
MOVLW .5
MOVWF ZAK_ST1
_ZAK_1
MOVLW .5
MOVWF ZAK_ST2
_ZAK_2
MOVLW .55
MOVWF ZAK_ST3
_ZAK_3
DECFSZ ZAK_ST3,F
GOTO _ZAK_3
DECFSZ ZAK_ST2,F
GOTO _ZAK_2
DECFSZ ZAK_ST1,F
GOTO _ZAK_1
RETURN
;-------------------------------------------------------------------------------------
INIT_IO
BANKSEL ANSEL
CLRF ANSEL
CLRF ANSELH
BANKSEL TRISA
MOVLW B'11111111'
MOVWF TRISA
MOVLW B'10000000'
MOVWF TRISB
MOVLW B'11001111'
MOVWF TRISC
MOVLW B'00001000'
MOVWF TRISE
BANKSEL PORTA
MOVLW B'11111111'
MOVWF PORTA
MOVLW B'11111111'
MOVWF PORTB
MOVLW B'11111111'
MOVWF PORTC
MOVLW B'00001000'
MOVWF PORTE
RETURN
;-------------------------------------------------------------------------------------
END |
|
|
| Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 17.60
|
Objavljeno: Pon Mar 21, 2011 2:16 pm Naslov sporočila: |
|
|
"ne deluje" pomeni kaj? _________________ Tule nisem več aktiven. |
|
| Nazaj na vrh |
|
 |
mannetou Član

Pridružen-a: Pet 08 Jan 2010 20:34 Prispevkov: 26 Aktiv.: 0.13 Kraj: LJ
|
Objavljeno: Pon Mar 21, 2011 2:26 pm Naslov sporočila: |
|
|
| Ne deluje mi pri debagiranju z ICD2. Deluje, če izklopim MCLR pin in DEBUG in prenesem program na pic. Pri razhroščevanju pa se stalno prekinja. |
|
| Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 17.60
|
Objavljeno: Pon Mar 21, 2011 2:52 pm Naslov sporočila: |
|
|
Skrajšaj zakasnitve na par us in glej po korakih, kaj se dogaja... _________________ Tule nisem več aktiven. |
|
| Nazaj na vrh |
|
 |
mannetou Član

Pridružen-a: Pet 08 Jan 2010 20:34 Prispevkov: 26 Aktiv.: 0.13 Kraj: LJ
|
Objavljeno: Tor Mar 22, 2011 10:08 am Naslov sporočila: |
|
|
Prikazovanje deluje, tudi če s prekinitvijo postavljam zastavico za izmenično prikazovanje na displeja, kakor hitro pa dodam še eno prekinitev, se začne obnašati zelo čudno. Malo sem gledal z osciloskopom in mi na portu b, ki ga uporabljam za izpis, na pinu RB6/ICSPCLK preklaplja med 3,5 in 5 V. Ampak to počne, ko ni v debug mode-u.
Je mogoče kakšna strojna omejitev kako hitro se lahko porti izklapljajo in vklapljajo? Ker po korakih večinoma deluje tako kot mora, problem se pojavi, ko se program sam izvaja.
Nazadnje urejal/a mannetou Tor Mar 22, 2011 10:21 am; skupaj popravljeno 1 krat |
|
| Nazaj na vrh |
|
 |
MarkoM Član

Pridružen-a: Tor 12 Sep 2006 15:29 Prispevkov: 2825 Aktiv.: 11.84 Kraj: Lovrenc na P.
|
Objavljeno: Tor Mar 22, 2011 10:15 am Naslov sporočila: |
|
|
| mannetou je napisal/a: |
| Je mogoče kakšna strojna omejitev kako hitro se lahko porti izklapljajo in vklapljajo? Ker po korakih večinoma deluje tako kot mora, problem se pojavi, ko se program sam izvaja. |
Če dela v debugu po korakih, ko se pa program izvaja pa ne, pomeni, da imaš prekratke zakasnitve.
Sicer mi ni jasno, ker enkrat govoriš, da ti dela v debug pa v realese ne, drugič pa ravno obratno. |
|
| Nazaj na vrh |
|
 |
mannetou Član

Pridružen-a: Pet 08 Jan 2010 20:34 Prispevkov: 26 Aktiv.: 0.13 Kraj: LJ
|
Objavljeno: Tor Mar 22, 2011 10:30 am Naslov sporočila: |
|
|
| MarkoM je napisal/a: |
Sicer mi ni jasno, ker enkrat govoriš, da ti dela v debug pa v realese ne, drugič pa ravno obratno. |
Ja v debug po korakih deluje, ne deluje pa v RUN. To velja tudi za zgornji program, ki pa deluje v release.
Z eno prekinitvijo, pri kateri postavljam zastavico, tudi deluje. Torej je timing ok?
Ko dodam še eno prekinitev se pa vse poruši. Deluje edino v debug po korakih. Dodam brakepoint in tisti del kode, ki je namenjen za prikaz deluje po korakih ok. |
|
| 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: 233 dni
Powered by phpBB © 2001, 2005 phpBB Group
|