Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

BASCOM8051 on interrupt nosave vprašanje

 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Čet Feb 12, 2004 4:42 pm    Naslov sporočila: BASCOM8051 on interrupt nosave vprašanje Odgovori s citatom

Pozdravljeni, BASCOM mojstri!

Mali procesorček 2051 ali 4051 ima maaalooo rama, samo 128 bajtov, in še tega lahko uporabljamo šele od naslova H30 dalje. Če potem še uporabljamo prekinitve, vsaka prekinitev vrže na sklad (stack) celih 20 bajtov. Če uporabljam dve prekinitvi, tako serijsko kot tudi timer, se zgodi, da ena prekine drugo, in potem gre 40 bajtov na sklad, in potem če ga je premalo, program umre.
Vem, da je teoretično možno z NOSAVE parametrom preprečiti, da se ob prekinitvi spravijo vsi registri na varno. Ali mi ve kdo konkretno povedati, da če v timer prekinitveni rutini imam samo ukaze

incr stevec 'štejemo intervale
load timer1 190 'ponovno nastavimo interval
return

smem uporabiti NOSAVE? Bojim se, da ne, saj load verjetno uporabi nekaj registrov, ki bi njih izgubljena vsebina imela lahko za posledico, da prekinjeni program gre v maloro.

Za sugestije se priporočam.
Vilko
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Čet Feb 12, 2004 8:22 pm    Naslov sporočila: sklad (stack) Odgovori s citatom

Tole s skladom (stackom) je vrag. Testiram program z hardwarskim simulatorjem, kjer je uporabljen 8252 (ki ima 256 bajtov rama) in program dela. Ko program pretočim na 4051 pa se program zaštrika kmalu za restartom...
Predpostavljam, da ne more biti drugo kot pomanjkanje RAM-a.
Program Report mi pove da je start sklada na naslovu H5A, vemo pa, da je najvišji naslov, ki ga 4051 prenese H7F. Pravzaprav bi moralo biti 35 bajtov sklada dovolj, toda, ne vemo, kdo vse troši sklad. Sedaj ugotavljam, da troši sklad tudi wait ukaz, tudi lcd ukaz, in lepo bi bilo vedeti vnaprej koliko.
No, ja, treba bo preprogramirati ....
Vilko
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Svijet elektronike
Gost





PrispevekObjavljeno: Pet Feb 13, 2004 8:26 am    Naslov sporočila: BASCOM8051 on interrupt nosave vprašanje Odgovori s citatom

Ove dvije Bascom naredbe se prevode u asemblerske naredbe

INC 021H
MOV TL1,#042H
MOV TH1,#042H

Niti jedna od ovih naredbi ne koristi registre, pa ih nije potrebno spremati. Dakle, ovaj put moze s NOSAVE.

Opcenito, s tim treba biti oprezan. Vise o tome, kako saznati u sto se prevode pojedine Bascom naredbe, napisano je u knjizi "Programiranje mikrokontrolera programskim jezikom Bascom", koju mozete naruciti u firmi AX elektronika (a mozda je ima i u pojedinim knjizarama).

Vladimir Mitrovic
Nazaj na vrh
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Pet Feb 13, 2004 8:44 am    Naslov sporočila: Hvala, gospod Mitrović Odgovori s citatom

Prav čakal sem, da se javite tudi Vi na naš forum. Imam vašo knjigo, in prav dobrodošli boste v forumu.
Tudi jaz sem disasembliral mali programčič, napisan samo v to svrho, da vidim, kaj mi generira bascom v tem slučaju in sem prišel do istega zaključka. Hvala vam.

Imam sledeč problem: Program mi na emulatorju 4051, opisan je tudi v vaši knjigi poglavlje 6.4, dela brez problema. Zato sem sumil, da gre za problem stack.
Zmanjšal sem porabo stack-a na minimum. Obe interrupt rutini sem specificiral NOSAVE. Timer interrupt rutina tako ne koristi registrov, Serial interrupt rutino pa se ENABLEa le, kadar gre glavni program v WAIT, potem pa se spet disable-a in analizira sprejeta informacija.
Tako spremenjen program mi še vedno dela prez problema na emulatorju, in še vedno ne dela na čipu 4051.
Tudi definicije variable sem zmanjšal na minimum, tako imam sedaj
startstack na H42, kar je mislim, dovolj nizko.

Tako sklepam, da mora biti poleg stack-a še kakšna dodatna razlika med obema čipoma.
Prosim, za sugestije.
Pozdrav
Vilko Sustič
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
SimonS
Profesionalec


Pridružen/-a: Pon Jan 2004 17:52
Prispevkov: 181
Kraj: Kobarid

PrispevekObjavljeno: Pet Feb 13, 2004 7:33 pm    Naslov sporočila: Odgovori s citatom

Pozdrav
Tudi sam sem imel ogromno tezav z bascomom, ko je rutina postala malo dalsa. Pojava si enostavno ne znam razlagati. Najvecje tezave nastopijo prav pri delu s serijskim portom. Sam sem resil to z opcijo NOSAVE ter rocno shranil registre. Sicer pa poiskusi kaj se dogaja s SW simulatorjem. Ta dela na BASCOMU zelo dobro in nasel bos marsikatiro napako.

_________________
Skupaj smo mocnejsi
LP Simon
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Svijet elektronike
Gost





PrispevekObjavljeno: Pon Feb 16, 2004 10:53 am    Naslov sporočila: 8252&4051 Odgovori s citatom

Zaista, 8252 ima 2x vise RAM-a od 4051, ali mi je tesko zamisliti program koji bi toliko intenzivno koristio stog da "pojede" sav raspolozivi prostor, posebno ako se koristi NOSAVE. Stog koristi Gosub za pospremanje adrese, ali to je zanemarivo (osim ako se nekako ne zavrti u petlji)... Volio bih vidjeti program, molim posaljite ga na

svijet.elektronike@kc.tel.hr

Vladimir Mitrovic
Nazaj na vrh
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika Časovni pas GMT + 1 ura, srednjeevropski - zimski č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
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group