Zbyt długi plik hex?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Kamil 1
-
Posty: 70
Rejestracja: 01 cze 2007, 15:20

Zbyt długi plik hex?

Post autor: Kamil 1 » 15 lip 2008, 21:39

Witam.

Dzisiaj przeglądając elektrodę znalazłem program napisany w Bascomie do odczytu temperatury z termometru DS1820 (na dole jest do ściągnięcia).

Wkleiłem go do bascoma i po skompilowaniu wyszedł plik który zajmuje 5,3kb!!! A moja atmega ma tylko 8 kb pamięci. To dziwne ponieważ na EDW jest artykuł który opisuje budowę zegarka z tym termometrem a uC to 89C4051. A program zawiera oprócz odczytu temp. także obsługę zegarka. I to wszystko zmieściło się w 4kb pamięci a tym czasem mój krótki programik ledwo mieści się w Atmedze 8. Dlaczego się tak dzieje?

Dla zainteresowanych poniżej link do tego zegarka:
https://elportal.pl/pdf/k07/65_014.pdf
Załączniki
DS1820.rar
(2.85 KiB) Pobrany 355 razy

ZbeeGin

Post autor: ZbeeGin » 15 lip 2008, 21:52

Plik HEX masz 5,3? Długość HEX nie przekłada się na długoścć programu w nim zawartego. Zawsze jest większa.
Ponadto nie porównój kodów pomiędzy MCS-51 a AVR bo to odmienna architektura.

W programie dzielisz przez 16. Ale dlaczego dzielisz to jako liczby zmiennoprzecinkowe? Przecież 16 jest liczbą stałoprzecinkową i w dodatku potęgą liczby 2.
Ostatnio zmieniony 15 lip 2008, 21:54 przez ZbeeGin, łącznie zmieniany 1 raz.

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 15 lip 2008, 21:53

5kB na dysku czy tyle kompilator stwierdził? Bo jak na dysku to zajmuje więcej niż wpisywany do uC.

Kamil 1
-
Posty: 70
Rejestracja: 01 cze 2007, 15:20

Post autor: Kamil 1 » 16 lip 2008, 10:01

ZbeeGin dzielę przez 16 ponieważ tak jest w programie który przepisałem z elektrody a tam wszyscy komentowali ten program że jest sprawny więc go tylko przepisałem.

snow 5kb na dysku. Podczas kompilacji wyskakuje mi okienko i pisze w nim FLASH USED: 24% Tu chodzi o to że będzie zajęte tylko 24% pamięci flash Atmegi8?

Jasam
Użytkownik
Posty: 422
Rejestracja: 27 mar 2007, 21:09

Post autor: Jasam » 16 lip 2008, 10:32

Kamil 1 pisze: snow 5kb na dysku. Podczas kompilacji wyskakuje mi okienko i pisze w nim FLASH USED: 24% Tu chodzi o to że będzie zajęte tylko 24% pamięci flash Atmegi8?
Na dysku plik tego typu zajmuje zawsze nieco więcej niż wskazuje jego rzeczywista objętość. Co do drugiego pytania to tak, skompilowany program zajmuje 24% całej objętości pamięci FLASH procesora Atmega8.

Kamil 1
-
Posty: 70
Rejestracja: 01 cze 2007, 15:20

Post autor: Kamil 1 » 16 lip 2008, 12:17

Dziękuję za odpowiedzi. Już myślałem że ledwo to zmieszczę do uC.

Ciągle gnębi mnie jeszcze jedno pytanie: Dlaczego program ten chodź jest krótki zajmuje tak dużo miejsca? Ostatnio napisałem program 5 razy dłuższy od tego i był bardziej rozbudowany a po skompilowaniu zajmował 33% pamięci flash mikrokontrolera. Od czego to zależy?

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 16 lip 2008, 16:32

dzielę przez 16 ponieważ tak jest w programie który przepisałem z elektrody a tam wszyscy komentowali ten program że jest sprawny
Nie zawsze dzieci elektrody mają rację. Szklankę wody też można przewieźć cysterną, tylko jakim kosztem? Tak samo używanie do przeliczenia temperatury z DS18B20 liczb typu single jest znacznym nadużyciem.

Kod z załacznika zajmuje 16% pamięci (to i tak za dużo jak na taki trywialny program).
Załączniki
termo.zip
(559 Bajtów) Pobrany 273 razy

Kamil 1
-
Posty: 70
Rejestracja: 01 cze 2007, 15:20

Post autor: Kamil 1 » 16 lip 2008, 19:50

A jak dokładny jest ten program?

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 16 lip 2008, 19:53

Tak samo jak ten ze zmienną single i z fusing (1 miejsce po przecinku).

Kamil 1
-
Posty: 70
Rejestracja: 01 cze 2007, 15:20

Post autor: Kamil 1 » 16 lip 2008, 20:03

Dziękuje za odpowiedzi. Zaraz wprowadzę ten program (po dodaniu własnych bajerów) do pamięci Atmegi.

Pozdrawiam.

[ Dodano: 2008-08-27, 07:49 ]
Przepraszam że odkopałem temat ale mam problem. Podczas pomiarów temperatury układem DS1820 korzystałem z tego programu, który napisał kolega radzio. Ale na wyświetlaczu temp wynosi 3.5°C i utrzymuje się w przedziale 3.2°C - 3.8°C. Dlaczego tak się dzieje? Termometr rtęciowy pokazuje że w pokoju jest 27°C a DS1820 że tylko ok 3°C.

ODPOWIEDZ