Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 26 cze 2019, o 00:58


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 12 kwi 2019, o 14:31 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 376
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Witam

Mam urządzenie oparte o Atmegę 644. Chcę zrobić menu ale jeśli umieszczę wszystkie pozycje które mi są potrzebne to brakuje mi RAM. Nie zacząłem nawet programować logiki do niego. Można w dość łatwy sposób przenieść coś do Flash z MK_Menu aby pozbyć się problemu?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2019, o 14:44 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 24464
Lokalizacja: Szczecin
Pomógł: 919

Mk MENU w ogóle prawie nie używa RAMu .. .pewnie coś żeś pan namieszał ;) na początek to myślę, że nie zaznaczyłeś ptaszka AVR i masz kod generowany jak dla ARM bez PROGMEM - a wtedy będziesz miał w AVRrze armagedon ;) i słusznie

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2019, o 15:22 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 376
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Zaznaczyłem i mam PROGMEM w kodzie. Jak mam krótkie menu to zajętość RAM ok 70-80%. Po wydłużeniu do ok 240 pozycji (razem z exit i back) zajętość wzrasta do 125%



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2019, o 15:27 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 24464
Lokalizacja: Szczecin
Pomógł: 919

wachcio napisał(a):
Po wydłużeniu do ok 240 pozycji

ileeeeeee ?!?!? :lol: ... toż to jakiś hardcore ... ale ok - no nawet nie przeszło mi przez myśl że ktoś będzie coś takiego robił ....

Muszę się zastanowić co tyle zżera bo tak na gorąco to nie wiem ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2019, o 15:48 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 376
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Mirek na pewno da się uprościć to menu. Porobić jakieś dodatkowe ekrany jak to pokazywałeś z nr IP bodajże. Na razie rozpisałem sobie na szybko pozycje które mi będą potrzebne a tu zonk ;)

Robię system nawadniania ogrodu który ma 8 sekcji i 8 grup sekcji aby można było załączać kilka na raz przy bardzo wydajnym źródle wody. Poza tym ma 16 pozycji pamięci do ustawiania kiedy mają się załączyć i wyłączyć. Dużo powtarzalnych pozycji menu ogólnie

Menu wygląda tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2019, o 16:07 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 24464
Lokalizacja: Szczecin
Pomógł: 919

Panie panie ;) nie mam za bardzo na razie czasu sprawdzać, ale aż tak z ciekawości - na szybciorka - (dobrze że wkleiłeś to swoje MENU) ... wygenerowałem je i wrzuciłem do procka na ATmega32 i zobacz ile zajęło pamięci RAM ;)

Obrazek

2,9K - dasz wiarę ? ;) więc nie wiem co ty robisz

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2019, o 18:06 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 376
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Mirek dam wiarę bo byłem w Warszawie na warsztatach i wtedy doszliście, że różne wersje toolchaina dają różne wielkości kompilacji. Zresztą dlatego pojawiła się opcja w MkClipse. Ja mam wersję toolchaina 3.4.5_1522 i avr gcc 4.8.1 Ty masz nowsze może to jest ślad...

Ja na prawdę nic nie robię dziwnego. Jest sobie projekt i w MkMenu generuję menu na kilka pozycji i zajętość RAM ok 70-80%. Wchodzę znów do MkMenu i wklejam długie menu -> visual check -> Create files W mkClipse build i mam 125% RAM i oczywiście sieczkę z programu. Skok z 3392 na 5121 bajtów



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2019, o 18:20 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 24464
Lokalizacja: Szczecin
Pomógł: 919

ale zrób że prosty test - weź sobie załóż pusty projekt w MkClipse - i do niego wygeneruj to MENU tak jak ja to zrobiłem z tego co wkleiłeś wyżej i sprawdź. I proszę cię nie opowiadaj mi, że taka drastyczna różnica zajętości pamięci wynika z różnych toolchainów - to NIE MO ŻLI WE ;) Zrób ten test i daj znać - sam zobaczysz ... taka zajętość pamięci musi wynikać z definicji jakichś dużej ilości zmiennych albo tablic w RAM. Jeśli po tym teście nie zobaczysz takiej zajętości to już będziesz wiedział że coś masz mocno nie tak w swoim kodzie

------------------------ [ Dodano po: 1 minucie ]

A różnice po kompilacji pomiędzy toolchainami to się mogą sprowadzić do zajętości ale to pamięci FLASH i to też o kilka, kilkanaście albo i kilkaset bajtów !!! a nie tam tysiąc i więcej ... A w RAM ? nie wiem może kilka bajtów

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2019, o 18:41 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 376
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Doszedłem, że odkomentowanie funkcji on_display_menu_item_property w długim menu daje taki efekt... Bez niej 70% RAM z nią 125%

EDIT:
Mam nadzieję, że rozwiązałem problem.
W pliku mk_menu_display.h zmieniłem extern TPROPERTY menu_property[]; na extern TPROPERTY menu_property[] EEMEM; i dodając #include <avr/eeprom.h>
Będę testował czy przeniesienie w/w struktury da porządany efekt. Na razie kompilacja przebiegła pomyślnie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2019, o 01:06 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 24464
Lokalizacja: Szczecin
Pomógł: 919

wachcio napisał(a):
W pliku mk_menu_display.h zmieniłem extern TPROPERTY menu_property[]; na extern TPROPERTY menu_property[] EEMEM; i dodając #include <avr/eeprom.h>
Będę testował czy przeniesienie w/w struktury da porządany efekt. Na razie kompilacja przebiegła pomyślnie

Sorki ale to kompletne ale to kompletne nieporozumienie ... i szybko się o tym przekonasz

wachcio napisał(a):
Doszedłem, że odkomentowanie funkcji on_display_menu_item_property w długim menu daje taki efekt... Bez niej 70% RAM z nią 125%

typ: TPROPERTY to struktura o rozmiarze 13 bajtów, jeśli w RAM ma być 240 takich elementów to masz ok 3KB !!! zajętości RAM

albo zoptymalizujesz sobie sam użycie propertiesów - albo zmniejsz MENU.

inaczej to nie dziw się, że przy TYLU propertiesach - masz taką a nie inną zajętość pamięci - a tym bardziej, że bez użycia MENU masz już zajętość tragicznie wielką bo 70%

albo ostatnie wyjście - użyj ATmega1284P (IDENTYCZNA pinologia jak ATmega644) tyle, że ma 16KB RAM ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2019, o 09:30 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 376
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Mirek zdaję sobie sprawę, że nie robię tego najlepiej jak się da. Działam po omacku bo brak mi wiedzy jak działają propertisy i wywołania funkcji w menu. Nie znalazłem informacji na Twojej stronie. Do wersji 1 był chyba pdf. Do tej nie widzę. Poradnika wideo niestety nie ma. Dlatego super prezent od Ciebie czyli wersja komercyjna MkMenu gen jest przeze mnie wykorzystywana źle

Wysłane z mojego Moto G (5S) przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2019, o 11:56 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 24464
Lokalizacja: Szczecin
Pomógł: 919

Ale ja nie mówię że źle wykorzystujesz propertiesy = tylko że jeśli dałeś ich aż tyle no to nie ma co się dziwić , że dochodzi ci do zajętości 125% RAM ...

Ja pisałem że coś może źle robisz że przed MkMenu masz aż tak dużą zajętość RAM w swoim programie = 70% ... chociaż kto wie poza tobą - może tak musi być. No ale jeśli źle zopytmalizowałeś swój program no to ... Być może po własnej optymalizacji uzyskałbyś np 30% zajętości zamiat 70%

Wystarczy, że w kodzie się zostawi takie zapisy

lcd_str( "jakiś tam komunikat" );

to od razu chlasta człowiek sobie RAM jak brodę brzytwą

wystarczy dać tak

lcd_str_P( PSTR("jakiś tam komunikat") );

i już z RAMu znika tyle bajtów ile liczy sobie ten string.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2019, o 13:21 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 376
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Na razie mam tylko menu które nie działa bo nie doszedłem jak działają propertisy i funkcje. Muszę na spokojnie wgrysc się w kod albo lepiej obejrzeć dokumentację lub poradnik ale ich nie widzę ;)

Wysłane z mojego Moto G (5S) przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Bing [Bot] i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO