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


Pridružen-a: Tor 23 Jan 2007 23:56 Prispevkov: 465 Aktiv.: 2.08 Kraj: Ljubljana
|
Objavljeno: Pon Jan 29, 2007 6:09 pm Naslov sporočila: |
|
|
cist brezvezn primer kjer se to zgodi!!!
Koda: |
list p=16f84a
#include <p16f84a.inc>
__config _HS_OSC&_WDT_OFF&_PWRTE_ON
Spot1 equ H'30'
movlw D'5'
movwf Spot1
clrw
clrf Spot1
nop
end |
sem pregledo razlago tega error-ja ampak nic pametnega zapisanega.
-kolk je men iz tega jasno bi moral dolociti lokacijo kjer naj bi se program zacel izvajati nekako z ukazom "org..." ampak kolk je men jasno ce tega ne storis se pac zacne na 0x00. zato nevem zakaj mi ta error ven mece!!!
hvala |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Pon Jan 29, 2007 6:24 pm Naslov sporočila: |
|
|
Pa saj ravno TO ti želijo dopovedati v tistih razlagah, da se program NE začne na 0x00 sam od sebe.
Poglej si Prvi prispevek v tej temi in PREKOPIRAJ tiste tri vrstice org 0x00; goto zacni; org 0x04 v Svoj program.
To je OBVEZEN DEL programa.
Če bi rad pisal program kam drugam (ne na začetek), napišeš org 0x(veljaven naslov znotraj programskega pomnilnika), kar brez tega ukaza pa RES NE bo šlo .
LP,
Igor
Zgradba DELUJOČEGA PIC programa ima svoja pravila.
Poglej si tukaj, kako NAJ izgleda en konkreten program: Sprut .
PIC-Lernbeispiele (primeri). _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
kavelj22 Član


Pridružen-a: Tor 23 Jan 2007 23:56 Prispevkov: 465 Aktiv.: 2.08 Kraj: Ljubljana
|
Objavljeno: Pon Jan 29, 2007 6:36 pm Naslov sporočila: |
|
|
ocotno sem odkril napako...
ko sem dodal to "rst code 0x00" zadeva deluje!
lp |
|
Nazaj na vrh |
|
 |
kavelj22 Član


Pridružen-a: Tor 23 Jan 2007 23:56 Prispevkov: 465 Aktiv.: 2.08 Kraj: Ljubljana
|
Objavljeno: Pon Jan 29, 2007 6:39 pm Naslov sporočila: |
|
|
hvala za tisto stran ampak nemško neznam nič!
lp |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Pon Jan 29, 2007 7:02 pm Naslov sporočila: |
|
|
Mann musst viele Sprachen sprechen, to survive in our little planet .
Vsaj zgradbo programov si poglej.
Tam, kjer so primeri (PIC Lernbeispiele), je cela vrsta programov in vezij.
Sicer pa se da s tole knjižico zelo lepo začeti: Priporočam .
LP,
Igor _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
kavelj22 Član


Pridružen-a: Tor 23 Jan 2007 23:56 Prispevkov: 465 Aktiv.: 2.08 Kraj: Ljubljana
|
Objavljeno: Pon Jan 29, 2007 7:13 pm Naslov sporočila: |
|
|
Hvala...za tako ceno (8euro) sem knjigo kar narocil!
lp |
|
Nazaj na vrh |
|
 |
kavelj22 Član


Pridružen-a: Tor 23 Jan 2007 23:56 Prispevkov: 465 Aktiv.: 2.08 Kraj: Ljubljana
|
Objavljeno: Pet Feb 09, 2007 12:01 am Naslov sporočila: |
|
|
V MPLAB-u mi ko dam Build izpiše naslednje sporočilo:
Register in operand not in bank 0. Ensure that bank bits are correct.
Zadeva se sicer cisto lepo izvede brez error-jev ampak vseeno mu očitno nekaj ne paše!
Hvala za pomoč!
lp |
|
Nazaj na vrh |
|
 |
matijap Član

Pridružen-a: Sob 05 Jun 2004 23:24 Prispevkov: 230 Aktiv.: 0.97 Kraj: Žirovnica, LJ
|
Objavljeno: Pet Feb 09, 2007 12:11 am Naslov sporočila: |
|
|
Pogosto se zgodi, da programer pozabi prestaviti bank, kadar je to potrebno, zato MPLAB izpiše opozorilo ob vsakem prehodu iz enega v drug bank v programu, da je programer na to še posebej pozoren. Bodi tudi ti  |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Pet Feb 09, 2007 1:14 am Naslov sporočila: |
|
|
Lepo dobesedno prepiši tisti stavek v google, pa boš videl, da je to eno čisto vsakdanje opozorilo, ki je povezano z Errorlevel 302.
Še enkrat preveri, da imaš dejansko pravilno vse v pravih bankah, kaj več pa ne moreš storiti. No, lahko izklopiš tisti 302, a potem te ne bo opozorilo niti takrat, ko boš res pomešal banke. To pa ni dobro, zato se pač shaja s tistimi opozorili , kakor je že matijap napisal.
LP,
Igor _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
Iztok Član

Pridružen-a: Pet 08 Okt 2004 0:55 Prispevkov: 4974 Aktiv.: 21.00 Kraj: LJ
|
Objavljeno: Pet Feb 09, 2007 1:39 am Naslov sporočila: |
|
|
Tudi meni stalno javlja, da banke niso pravilne pa vseeno vse deluje. Ne vem kaj je potem sploh smisel tistih sporočil?
Izgleda da kar drži tale citat iz nekega foruma ...
Citiram: |
Some registers are in bank 0, some are not. The assembler is dumb, it makes this comment for every access to a register in a bank other than 0, because it does not track your code to see which bank is selected. |
|
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.58
|
Objavljeno: Pet Feb 09, 2007 9:38 am Naslov sporočila: |
|
|
Assembler dejansko ne more vedeti katera banka je izbrana v katerem trenutku, zato je povsem mozno, da poskusas nasloviti napacen register (poskusi izbrati drugo banko in dostopati recimo do portA registra - koda se povsem normalno prevede, rezultat bo pa napacen, ker bos dejansko prisel do trisA). Brez analize poteka programa je nemogoce vedeti, katera banka je izbrana, analize pa avtomatsko ni mogoce opraviti na vecini programov, pa se ljudje smo dalec bolj ucinkoviti pri analizi, ker v nasprotju z racunalnikom razumemo pomen kode, katero smo napisali in se zato osredotocimo le na relevanten segment.
Gre zgolj za opozorilo da preveri, v katero banko bo posegel program, in ne za napako. _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
kavelj22 Član


Pridružen-a: Tor 23 Jan 2007 23:56 Prispevkov: 465 Aktiv.: 2.08 Kraj: Ljubljana
|
Objavljeno: Pet Feb 09, 2007 9:39 pm Naslov sporočila: Začetnik |
|
|
Zdaj sem jaz čist notr padu in bolj kot študiram te zadeve seveda več je vprašanj ki se porajajo v moji glavi. Nekdo mi je predlagal tole knjigo "PROGRAMIRAJMO mikrokontrolerje" in morem rečt HVALA ker je res lepo razloženo. Sedaj pa imam vprasanje iz prve naloge v tej knjigi če jo kdo ima če ne bom prilepil program:
V nalogi s stikalom (uporabimo Debounce) prižgemo LED-ico, potem pa bi se ta morala po nekem casu ugasniti.
Ali lahko kar pokličemo Delay kot sem to storil jaz in z njim določimo tako čas za debounce kot čas za ledico! Ubistvu me samo zanima če bi ta program deloval!
"A ma ta program sploh kak smisel"???
Ali pa naredimo nov Delay za ledico!
Koda: |
processor 16f84a
include p16f84a.inc
__config _XT_OSC&_PWRTE_ON&_WDT_OFF
org 0x000
goto Start
org 0x005
Zanka1 equ H'0C'
Zanka2 equ H'0D'
LED equ D'3'
T equ D'1'
Start
bsf STATUS,RP0
movlw B'00000010'
movwf TRISA
clrf TRISB
bcf STATUS,RP0
clrf PORTB
call Pritisnjena
bsf PORTB,LED
call Delay
bcf PORTB,LED
Konec goto Konec
Pritisnjena
btfsc PORTA,T
goto Nic
call Delay
Spuscena
btfsc PORTA,T
goto Spuscena
call Delay
Nic
return
Delay
movlw D'4'
movwf Zanka1
Cakaj
incfsz Zanka2,f
goto Cakaj
decfsz Zanka1,f
goto Cakaj
return
end
|
|
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Pet Feb 09, 2007 9:57 pm Naslov sporočila: |
|
|
Najprej poglej v tisti knjigi na stran 212. Nato tam napisani povezavi dodaj / in ime prve datoteke, ki se nahaja pod povezavo. Isto ponovi še za /imedrugedatoteke.zip .
Potrebuješ 2 zakasnitvi. Kratka (nekaj milisekund) je dovolj za "debounce". Po njej še enkrat preveriš, če je tipka res pritisnjena.
Če je, vklopiš Dolgo zakasnitev, ki traja toliko časa, kolikor želiš. Od mili do kilo sekund .
Lahko pa imaš samo 1ms "Delay" za "debounce", nato pa za čas=Števec*Delay kličeš to zakasnitev, da dobiš daljšo. Med dolgim "Delayem" lahko tudi kaj bolj koristnega (časovno potratnega) počneš, a pazi glede "Call" in "Return", da se ne bo program izgubil.
Z zgornjim programom boš moral cel "Delay" držati tipko, preden se bo ponovno preverilo, če je res pritisnjena. Šele nato se bo za isti čas prižgala ledica.
LP,
Igor
p.s.: Lepo, da si zadovoljen s knjigo. _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
kavelj22 Član


Pridružen-a: Tor 23 Jan 2007 23:56 Prispevkov: 465 Aktiv.: 2.08 Kraj: Ljubljana
|
Objavljeno: Sob Feb 10, 2007 1:38 pm Naslov sporočila: |
|
|
Sem pogledal ja tiste rešene naloge tam ampak mi sploh ni jasno kaj se dogaja pri 1. nalogi z tistimi And, Or, in Xor ukazi! (mogoce se pride cas za to) , se bom raje se malo ukvarjal s to nalogo!
Zato mi ni jasno, zakaj bi moral cel Delay drzati pritisnjeno tipko preden se spet preveri!
In ce mi lahko mogoce kdo da kako razlago od kod iz te zakasnitve 20ms.
Koda: |
ZAKASNITEV
decfsz ZakasLo,f
goto $-1 ; 256*3-1=767
decfsz ZakasHi,f
goto ZAKASNITEV ; (767+3)*n-1=19992
; n=26->20019->20.027ms |
aja, ZakasLo smo prej dali na nic in ZakasHi ima vrednost 26!! Jasno mi je da če je
ZakasLo=0 in damo -1 je potem (ff - 256) ampak zakaj tu potem se krat tri in minus ena???
Hvala |
|
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: 491 dni
Powered by phpBB © 2001, 2005 phpBB Group
|