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



Teraz jest 30 mar 2026, o 19:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 11 lis 2014, o 19:04 
Offline
Nowy

Dołączył(a): 11 lis 2014
Posty: 12
Pomógł: 0

Witam,

mam pewną zagwozdkę już na początku prób z językiem C dla AVR. Poniżej prosty kod, w oryginale kompilował się do 72-80 bajtów :) , po drobnych zmianch kod rozrasta się od razu w okolice <900 bajtów :o \
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to jest na 72 bajty po kompilacji. Odkomentowanie linijki "msecsDelayPost--;" powoduje rozrost do 880 bajtów :evil: Dlaczego :?:
Generalnie, to zrobiłem sobie diodę migającą coraz szybciej (dodana pętla for itd.) ale już w tym prostym przykładzie widać o co mi chodzi.

Pomożecie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2014, o 19:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Jeśli w delay jako argumentu użyjesz zmiennej to kompilator dołączy do projektu biblioteki do obsługi liczb zmiennoprzecinkowych. A obsługa tych liczb, jak sam widzisz, mocno pożera pamięć Flash.

Aby to obejść polecam zaprzyjaźnić się z Timerami sprzętowymi i timerami programowymi, które pozwalają wyeliminować delaye.

Można też stworzyć sobie własną funkcję opóźniającą np:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jest o tyle dobre, że nie używamy w delayu zmiennych zmiennoprzecinkowych.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2014, o 20:59 
Offline
Moderator
Avatar użytkownika

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

teres napisał(a):
powoduje rozrost do 880 bajtów Dlaczego

Bo popełniasz ten sam błąd co setki początkujących, bo nie zajrzałeś do netu z czym to związane a zapewniam cię - że takimi pytaniami internet jest usiany jak dobra kasza skwarkami ;) i nie obrażaj się ... oczywiście bym opisał po raz już chyba 1782-gi dlaczego ale nie muszę - bo koledzy wyżej mnie uprzedzili ;) ... pamiętaj tylko, że czasem jak wychodzą takie "kwiatki" to znaczy - że musi być w internecie setki podpowiedzi co źle 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: 11 lis 2014, o 21:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Nie trzeba nawet daleko szukać bo tu na forum ten problem już kilka razy się przewijał
viewtopic.php?t=4840&p=57704
viewtopic.php?f=4&t=5550&view=next
topic3151.html


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2014, o 22:16 
Offline
Nowy

Dołączył(a): 11 lis 2014
Posty: 12
Pomógł: 0

Bardzo dziękuję wszystkim za odpowiedzi.
@mirekk36, na pewno się nie obrażę, tym bardziej, że doczytałem już Twoje wyjaśnienia na forum zalinkowane przez @jacekk232

Ja głównie szukałem pod hasłami "optymalizacja kodu avr" i podobne, włącznie z tym, że doczytałem sobie dokument Atmela opisujący również możliwości zyskania kilku bajtów poprzez wykorzystanie zmiennych odpowiedniego typu.

Na obecną chwilę mam:
Kod:
AVR Memory Usage
----------------
Device: attiny13

Program:      88 bytes (8.6% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)


8-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2014, o 22:51 
Offline
Moderator
Avatar użytkownika

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

88 bajtów ... no i teraz masz jeszcze cały hektar Flasha na resztę programu ;)

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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