|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
tonni Profesionalec
Pridružen/-a: Tor Jan 2004 9:27 Prispevkov: 108
|
Objavljeno: Čet Maj 25, 2006 1:03 pm Naslov sporočila: stevilo spremenljivk |
|
|
zdravo
mi lahko kdo pove,koliko je maximalno spremenljivk
za 89c4051.Jaz sem pri moji aplikaciji
z nekaj polji in nekaj wordi prisel do 30 bytev,kar je izgleda prevec
za ta cip.Kje lahko preberes ta podatek.
lp |
|
Nazaj na vrh |
|
|
Slemi Profesionalec
Pridružen/-a: Pet Feb 2006 3:46 Prispevkov: 69 Kraj: Laško
|
Objavljeno: Čet Maj 25, 2006 1:09 pm Naslov sporočila: |
|
|
Omejen si s količino RAM-a, vsaka spremenljivka tipa byte ti vzame eno lokacijo tipa integer pa dve, če pa imaš polja pa vsaka celica v byte polju eno lokacijo vsaka celica v integer polju pa po dve lokaciji.
Npr: "Dim Polje As Integer * 10" ti vzame 20 spominskih lokacij.
Lp |
|
Nazaj na vrh |
|
|
Gustav Profesionalec
Pridružen/-a: Pon Jun 2005 17:19 Prispevkov: 768
|
Objavljeno: Čet Maj 25, 2006 1:20 pm Naslov sporočila: |
|
|
... RAMa pa ima doticni MCU 128 bajtov. Nekaj prostora porabi tudi prevajalnik za stack in nekaj drugih nastavitev, sam lahko izracunas koliko ti (v idealnem primeru) ostane, kot je napisal Slemi. |
|
Nazaj na vrh |
|
|
tonni Profesionalec
Pridružen/-a: Tor Jan 2004 9:27 Prispevkov: 108
|
Objavljeno: Čet Maj 25, 2006 5:36 pm Naslov sporočila: |
|
|
zdravo
koliko zavzamejo posamezni tipi spremenljivk mi je znano.V bistvu v mojem primeru program se dela z 42 bajti spremenljivk.Ko dodam se kaksen bajt se zadeva ustavi.Kaj mi preostane .Optimizirati spremenljivke ali pa izdelati novo vezje z 8052 cpu-jem.Glede na to,da ima 128 bajtov rama,bi pricakoval,da lahko uporabim vec kot 42 bajtov spremenljivk.
lp |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Čet Maj 25, 2006 5:45 pm Naslov sporočila: Ali |
|
|
Predvidevam, da programiraš v bascomu.
Ali ti bascom zavrača, ali program ne dela?
Pri bascomu moraš pravilno nastaviti options-compiler-misc-byteend tja na hex D0
Če ti program ne dela, pa poglej potem, ko prevedeš program, Report, in na poročilu piše, kje se začne Stack, le ta se začne tam, kjer si končal trošiti ram za variable. Naslov začetka stacka pri 2051 ne sme biti višji od 5F če uporabljaš prekinitve, sicer pa recimo do 6F, vemo 7F je naslov zadnjega bajta rama, ki ga 2051 ime _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
tonni Profesionalec
Pridružen/-a: Tor Jan 2004 9:27 Prispevkov: 108
|
Objavljeno: Pet Maj 26, 2006 11:09 am Naslov sporočila: |
|
|
zdravo
delam v bascomu.Stack start je H5C,used rom pa je H6DB ali 1755 dec.
V glavnem neha mi delat timer0,komunikacija z PC-jem.Ni odziva.
Zanima me,kako na najkrajsi nacin,z cim manj spremenljivkami spremeniti 4 mestno stevilko na tisocice, stotice, desetice in enice.
moj primer:prevec spremenljivk!
Koda: |
Dim Spom1 As Word , Tpom As Word , Spom2 As Word , Dpom1 As Byte
Dim Dpom2 As Byte,Enice As Byte , Desetice As Byte
Dim Stotice As Byte , Tisocice As Byte
Tisocice = Interval / 1000
Tpom = Tisocice * 1000
Spom1 = Interval - Tpom
Stotice = Spom1 / 100
Spom2 = Stotice * 100
Dpom1 = Spom1 - Spom2
Desetice = Dpom1 / 10
Dpom2 = Desetice * 10
Enice = Dpom1 - Dpom2
|
|
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Pet Maj 26, 2006 12:50 pm Naslov sporočila: Timer0? |
|
|
Če ti neha delat timer0, potem bi veljalo vedeti, kako ga uporabljaš in iskati napako tam.
Stackstart pri 5c bi moral biti OK.
Tudi predelava številke je OK, z manj spremenljivkami težko prideš, razen, če vsako izračunano številko takoj daš ven, recimo s print
morda tako
Koda: | Dim Stevilo As Word
Stevilo = 5432
Dim I As Word
I = Stevilo / 1000
Print I;
I = Stevilo Mod 1000
I = I / 100
Print I;
I = Stevilo Mod 100
I = I / 10
Print I;
I = Stevilo Mod 10
Print I;
Print
Print Stevilo
End
|
vendar vse skupaj ima malo smisla, saj potem lahko enostavno prepustimo print ukaz, da opravi svoje.
Če pa potrebuješ številke v nekem drugem tekstu, potem pa narediš tako:
Koda: | Dim Text As String * 20
Dim Stevilo As Word
Stevilo = 5432
Text = "Napetost = "
Text = Text + Str(stevilo)
Text = Text + " V"
Print Text |
_________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
tonni Profesionalec
Pridružen/-a: Tor Jan 2004 9:27 Prispevkov: 108
|
Objavljeno: Pon Maj 29, 2006 1:00 pm Naslov sporočila: |
|
|
zdravo
čudna so pota gospodova,še posebej pa baskoma. Zdaj pa še eno vprašanje.Se da 51-tke programsko resetirati.
lp |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Pon Maj 29, 2006 1:27 pm Naslov sporočila: Žal, tega ne vem, |
|
|
Žal, tega ne vem, verjetno se da s skokom na kak določen naslov, a to mislim, da ni popoln reset, saj mislim, da ne resetira vrat in internih naprav, kot so timerji in podobno. Morda bo to odgovoril kdo drug. _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
Gustav Profesionalec
Pridružen/-a: Pon Jun 2005 17:19 Prispevkov: 768
|
Objavljeno: Pon Maj 29, 2006 1:57 pm Naslov sporočila: |
|
|
Nikjer ni nic takega dokumentirano. Ce bi samo rad dosegel, da se program zacne izvajati od zacetka (= skok na reset), potem ni tezav, a registri in RAM ne bodo sli nazaj na zacetno stanje.
Zakaj bi sploh hotel programsko resetirati delujoco napravo ? |
|
Nazaj na vrh |
|
|
zlabo Mojster
Pridružen/-a: Pet Sep 2006 15:17 Prispevkov: 23
|
Objavljeno: Čet Mar 22, 2007 4:13 pm Naslov sporočila: |
|
|
mene zanima kakšni so simptomi prezasedenosti RAM-a. A se program popolnoma ustavi, ali je možno da deluje le še delno, da ni mogoče nastavljati spremenljivk? |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Čet Mar 22, 2007 5:38 pm Naslov sporočila: Program crash |
|
|
Pri družini 8051 programiranih v Bascomu torej tudi pri atmelih 8252 in 4051 velja, da prosti RAM, ki ostane potem, ko definiraš vse spremenljivke je uporabljen za Program Stack, se pravi, da tja spravlja program naslove, kam naj se vrne, ko skoči v podprogram, tja spravlja spremenljivke, (registre) ki jih bo uporabil v prekinitvenih podprogramih in tja lahko tudi programer začasno spravlja kakšne podatke.
Če je potreba po takem servisu večja kot je rama na razpolago, ko smo definirali vse spremenljivke, (Glej pri prevajanju bascoma na Show Result in v njem Stack Start) potem se zgodi nepredvidljivo, kar je v 99% popolni polom programa.
Ker je naslov zadnjega bajta pri 8252 HFF in pri 4051 H7F tedaj naj bo
stackstart pri programih za 4051 največ h5F in pri 8051 hDF rajši pa manj. Ne držite me za pravilo, ker je potreba po stacku odvisna od zapletenosti programa, kaj vse uporabljete v njem (Uart, LCD, 1wire i2c) in kako uporabljate prekinitve. _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
zlabo Mojster
Pridružen/-a: Pet Sep 2006 15:17 Prispevkov: 23
|
Objavljeno: Čet Mar 22, 2007 6:02 pm Naslov sporočila: |
|
|
jaz delam z mega8535 (sem pozabil povedati ) in se mi program po nekaj izvedenih podprogramih "obesi". Stack start je pa 25F
je pa res, da je koda zelo začetniška, verjamem da se bo marsikdo smejal kodi
http://freeweb.siol.net/alekskor/alarm.bas |
|
Nazaj na vrh |
|
|
Vlado Profesionalec
Pridružen/-a: Ned Jan 2004 16:11 Prispevkov: 556 Kraj: Ljubljana
|
Objavljeno: Čet Mar 22, 2007 6:36 pm Naslov sporočila: stevilo spremenljivk |
|
|
Pozdravljen,
malo sem pogledal tvojo kodo in že na prvi pogled, ena od napak je
Koda: | If T = 14 Then
Gosub Meni1
End If |
iz tega potprograma se moraš vrniti z return, tega pa ne narediš!
Kako imaš nastavljene 'HW Stack, SW Stack in Framesize' ?
Zakaj imas spremenljivke Cona1 in 2 definirane kot Byte, lahko jih imaš kot Bit ker so vezane za stanje na pin-u!
Za HW stack, SW stack in Framesize je težko svetovati, lahko jih povečaš (Options, Compiler, Chip), za kaj več bo potrebno pogledati v Help. Lahko pa ti povem da izpis na LCD 'požre' kar nekaj Framesize.
Vlado |
|
Nazaj na vrh |
|
|
zlabo Mojster
Pridružen/-a: Pet Sep 2006 15:17 Prispevkov: 23
|
Objavljeno: Čet Mar 22, 2007 9:05 pm Naslov sporočila: |
|
|
hm, odziv je vedno enak, neglede na to če nastavim vse te tri vrednosti na maximum (da je pokrit skoraj ves pomnilnik), ali pa če jih dam vse na 1. Prav tako tudi če so nastavljene kakšne vmesne vrednosti, ni spremembe pri delovanju. |
|
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 You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|