|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
rafaellsi Član
Pridružen-a: Ned 11 Sep 2011 18:54 Prispevkov: 478 Aktiv.: 3.11 Kraj: Radovljica
|
Objavljeno: Pet Avg 26, 2016 2:26 pm Naslov sporočila: |
|
|
Da ti mogoče ne primankuje spomina? |
|
Nazaj na vrh |
|
|
lojzek Član
Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3356 Aktiv.: 16.97
|
Objavljeno: Pet Avg 26, 2016 9:06 pm Naslov sporočila: |
|
|
Pomislil sem tudi na to.... Mego 168 imam (po avr studiu) zapolnjeno do 14kB spomina (od 16kB) in max 950B (od 1kB) spremenljivk... Po AVR studiu pri prevodu oboje manj kot 100%
Imam še enega 328... Bom v ponedeljek poskusil še s tem, če bo kaj bolje.
Res pa je, da še nikdar taaako obsežnega programa in toliko spremenljivk še nisem skupaj sklamfal.... |
|
Nazaj na vrh |
|
|
Domenius Član
Pridružen-a: Sre 30 Nov 2005 14:15 Prispevkov: 1188 Aktiv.: 5.33 Kraj: Medvode
|
Objavljeno: Ned Avg 28, 2016 10:50 pm Naslov sporočila: |
|
|
lojzek je napisal/a: |
...in max 950B (od 1kB) spremenljivk... |
V RAM se ne shranjujejo samo spremenljivke, pozabil si na stack. _________________ It's electric! |
|
Nazaj na vrh |
|
|
lojzek Član
Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3356 Aktiv.: 16.97
|
Objavljeno: Pon Avg 29, 2016 8:15 am Naslov sporočila: |
|
|
Če bi uporabil 328, bi moral program predelat.... Samo s prevodom programa zanjo ne deluje.
Bom moral ostati pri 168...
@Domenius: Ali lahko laično razložiš tvoj post...? Ali se poleg tega, kar AVR Studio napiše, v RAM naloži še nekaj?
Nazadnje urejal/a lojzek Pon Avg 29, 2016 8:20 am; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.20 Kraj: Črnomelj
|
Objavljeno: Pon Avg 29, 2016 8:17 am Naslov sporočila: |
|
|
RAM je uporabljen za globalne in lokalne spremenljivke.
Globalne spremenljivke so tiste, ki so deklarirane izven funkcij, medtem, ko so lokalne tiste, ki so znotraj njih deklarirane.
Te spremenljivke (lokalne) se shranjujejo na "Stack" (slovensko "Sklad"), ki je del RAM-a, kar ti AVR studio ni štel v izračunu ker za to potrebuje izračunat celoten call stack upoštevajoč interrupt rutine v vsakem momentu.
Lahko se je zgodilo, da si šel s stackom izven memory-ja RAM-a in je vse začelo delovati po svoje. _________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
lojzek Član
Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3356 Aktiv.: 16.97
|
Objavljeno: Pon Avg 29, 2016 12:22 pm Naslov sporočila: |
|
|
tilz0R je napisal/a: |
Te spremenljivke (lokalne) se shranjujejo na "Stack" (slovensko "Sklad"), ki je del RAM-a, kar ti AVR studio ni štel v izračunu ker za to potrebuje izračunat celoten call stack upoštevajoč interrupt rutine v vsakem momentu.
|
To zna biti tisto....
Prevajalnik mi izvrže naslednje....
Koda: |
Device: atmega168p
Program: 13596 bytes (83.0% Full)
(.text + .data + .bootloader)
Data: 964 bytes (94.1% Full)
(.data + .bss + .noinit)
Build succeeded with 106 Warnings...
|
Tisti Warningi so predvsem pri izpisu tekstov... malce zbrke med unsigned in signed spremenljivkami - dosedaj še niso motili izvajanja programa.
Če torej nekaj spremenljivk (te v zgornjih postih omenjene tekstualne in zato velike okoli 50 Bytov) zaradi izvajanja programa mora še nekam shranjevat, pa torej lahko del že prej shranjenih spremenljivk "povozi" ?
Torej je bolje, da te največje (besedila) reorganiziram in definiram globalno? |
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.20 Kraj: Črnomelj
|
Objavljeno: Pon Avg 29, 2016 12:28 pm Naslov sporočila: |
|
|
Gre nekako tako.
Imaš na voljo 1k rama in tvoje spremenljivke globalne kurijo 950B RAM-a.
Torej imaš za stack na voljo še recipiši 74Bytov.
Vsak klic funkcije znotraj druge funkcije dodatno obremenjuje stack. Če ga zasedeš, torej celih 74Bytov pushneš na stack (na stack gredo lokalne spremenljivke, delovni registri, pa še kaj).
Ko pushneš na stack zadeve se povečuje zasedenost. Če stack prekoračiš, si v območju kjer ni RAM-a (v ARM Cortex bi te čakal HardFault error) in ko nazaj pop-neš dol imaš neznane vrednosti na stacku, ki je izven RAM-a.
Po domače bi lahko rekli, da se povozi RAM. _________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazadnje urejal/a tilz0R Pon Avg 29, 2016 1:18 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
|
lojzek Član
Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3356 Aktiv.: 16.97
|
Objavljeno: Pon Avg 29, 2016 1:16 pm Naslov sporočila: |
|
|
Hvala za lepo domačo razlago.
Torej bom program primoran optimirati predvsem v smislu spremenljivk in njih uporabe. Na žalost sem program že skoraj v celoti spisal, tako da bo dela malo več. Bom vedel za naslednjič. |
|
Nazaj na vrh |
|
|
integrerc Član
Pridružen-a: Sob 23 Sep 2006 14:50 Prispevkov: 423 Aktiv.: 1.98 Kraj: Novo mesto
|
Objavljeno: Čet Nov 24, 2016 7:59 pm Naslov sporočila: |
|
|
Pozdravljeni!
Prešel na AVR studio 6, WinAVR.
Težava, ki jo nikakor ne morem rešiti je sledeča.....
Ko hočem uporabiti v svojem projektu npr. lcd knjižnico (ki jo dodam v projekt), mi ob prevajanju javi napak.... lcd_lib.h: no such file or directory
Knjižnica seveda obstaja v failu in bi morala delovati, je tudi zdefinirana v samem programu (#define <lcd_lib.h>).
Prosim za pomoč, kaj delam narobe?
LP! _________________ Lep pozdrav! |
|
Nazaj na vrh |
|
|
matjazkariz Član
Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.60
|
Objavljeno: Čet Nov 24, 2016 9:50 pm Naslov sporočila: |
|
|
Namesto define napiši include in namesto<> daj "", če je header v isti mapi kot ostale datoteke projekta. _________________ LP, Matjaž |
|
Nazaj na vrh |
|
|
integrerc Član
Pridružen-a: Sob 23 Sep 2006 14:50 Prispevkov: 423 Aktiv.: 1.98 Kraj: Novo mesto
|
Objavljeno: Čet Nov 24, 2016 9:54 pm Naslov sporočila: |
|
|
Ja, ja saj sem dal #include in z narekovaji sem poizkusil, pa je isto... _________________ Lep pozdrav! |
|
Nazaj na vrh |
|
|
Jan Član
Pridružen-a: Sob 10 Jun 2006 14:19 Prispevkov: 313 Aktiv.: 1.44 Kraj: Dolenjska
|
Objavljeno: Čet Nov 24, 2016 10:01 pm Naslov sporočila: |
|
|
Imaš mogoče kakšne presledke v imenu poti projekta?
Če jih imaš, prestavi projektno mapo direktno na C:\ in poskusi, če bo isto.
Jan |
|
Nazaj na vrh |
|
|
integrerc Član
Pridružen-a: Sob 23 Sep 2006 14:50 Prispevkov: 423 Aktiv.: 1.98 Kraj: Novo mesto
|
Objavljeno: Čet Nov 24, 2016 11:48 pm Naslov sporočila: |
|
|
Ne nimam presledke v imenu poti , poskusil sem dat projekt direktno na C: in je ista "figa"....očitno delam nekaj narobe...v solution explorerju dodam z ADD knjižnjico, .c in .h, potem pa izberem "build" in mi pokaže zgoraj omenjen error.
Error 1 lcd_lib.h: No such file or directory C:\Users\Andrej\Documents\Atmel Studio\vajeatmelstudio\vajadelamojstra\vajadelamojstra\lcd.lib.c _________________ Lep pozdrav! |
|
Nazaj na vrh |
|
|
Domenius Član
Pridružen-a: Sre 30 Nov 2005 14:15 Prispevkov: 1188 Aktiv.: 5.33 Kraj: Medvode
|
Objavljeno: Pet Nov 25, 2016 9:23 am Naslov sporočila: |
|
|
Pot (path) imaš kar dolgo, mogoče bi jo bilo dobro skrajšati - sem že imel probleme. Tudi šumnike in presledke odsvetujem - vem da jih nimaš, govorim na splošno. Pa napisal si lcd_lib.c, tam kjer imaš pot pa imaš napisano lcd.lib.c. Se pravi da bi bilo pravilno #include "lcd.lib.h". _________________ It's electric! |
|
Nazaj na vrh |
|
|
integrerc Član
Pridružen-a: Sob 23 Sep 2006 14:50 Prispevkov: 423 Aktiv.: 1.98 Kraj: Novo mesto
|
Objavljeno: Pet Nov 25, 2016 10:51 am Naslov sporočila: |
|
|
Hm, ne vem kako, ampak res je, ime knjižnjice je bil lcd.lib v sami knjižnjici pa je imenovana lcd_lib. Spremenil sem ime knjižnice na lcd_lib in očitno bo v redu, error-a ni več.
Bom pa proti večeru preizkusil, če dela tudi funkcionalno.
Hvala, lp! _________________ Lep pozdrav! |
|
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: 74 dni
Powered by phpBB © 2001, 2005 phpBB Group
|