Witam,
od 2 dni próbowałem zmusić do działania jedną napisanych przez siebie funkcji - odczyt danych z pliku tekstowego na nośniku SD/MMC sformatowanym w FAT32. Funkcja ma za zadania przypisanie do zmiennych wartości z pliku tekstowego. Do obsługi FAT32 wykorzystałem bibliotekę Elm Chan'a.
Zaimplementowanie biblioteki Elma zabrało ok. 22kB pamięci programu i około 200bajtów pamięci danych. Obsługa dodatkowych rzeczy takich jak zewnętrzny EEPROM 24C02, termometr DS18B20 sprawiło, iż po kompilacji AVR Studio wykazuje użycie pamięci programu na poziomie 28kB (89.4%) i 1.5kB (69.4) danych.
Dzisiaj po kolejnych kilku godzinach niepowodzeń (a funkcja prosta jak drut) postanowiłem umieścić w komentarzu kilka funkcji, które nie wykorzystywałem w danym momencie, aby zweryfikować, czy czasem pamięć nie jest w tym przypadku problemem (mimo, iż kompilator wykazał ponad 10% wolnej przestrzeni na program).
Na końcu posta umieszczam 2 screenshoty z AVR Studio. Przy użyciu pamięci 89.4%, program się wieszał nawet, nawet gdy nie wywoływałem nowo utworzonej funkcji, a korzystanie ze sprzętowego resetu nie dawało żadnych rezultatów - pomagało tylko odłączenie zasilania.
Zastanawia mnie jak się ma wskazywane 89.4% zajętości do faktycznej zajętości pamięci, gdy program działa. W programie nie wykorzystuję wskaźników, ani nie korzystam z funkcji alokacji pamięci malloc/calloc, czyli zajętość pamięci danych nie powinna wzrosnąć (a tymbardziej pamięć programu - przynajmniej tak mi się wydaje). Optymalizacja jest ustawiona na -0s.
Przy kompilacji z poniższym użyciem pamięci program nie działał jak należy - nawet reset musiałem przyciskać dwukrotnie, aby odblokować procesor (lub reset wogóle nie działał):
Tutaj status po kompilacji, kiedy kilka funkcji było wstawionych w komentarz(przy takim użyciu pamięci program działa jak należy):
Pozdrawiam,
od 2 dni próbowałem zmusić do działania jedną napisanych przez siebie funkcji - odczyt danych z pliku tekstowego na nośniku SD/MMC sformatowanym w FAT32. Funkcja ma za zadania przypisanie do zmiennych wartości z pliku tekstowego. Do obsługi FAT32 wykorzystałem bibliotekę Elm Chan'a.
Zaimplementowanie biblioteki Elma zabrało ok. 22kB pamięci programu i około 200bajtów pamięci danych. Obsługa dodatkowych rzeczy takich jak zewnętrzny EEPROM 24C02, termometr DS18B20 sprawiło, iż po kompilacji AVR Studio wykazuje użycie pamięci programu na poziomie 28kB (89.4%) i 1.5kB (69.4) danych.
Dzisiaj po kolejnych kilku godzinach niepowodzeń (a funkcja prosta jak drut) postanowiłem umieścić w komentarzu kilka funkcji, które nie wykorzystywałem w danym momencie, aby zweryfikować, czy czasem pamięć nie jest w tym przypadku problemem (mimo, iż kompilator wykazał ponad 10% wolnej przestrzeni na program).
Na końcu posta umieszczam 2 screenshoty z AVR Studio. Przy użyciu pamięci 89.4%, program się wieszał nawet, nawet gdy nie wywoływałem nowo utworzonej funkcji, a korzystanie ze sprzętowego resetu nie dawało żadnych rezultatów - pomagało tylko odłączenie zasilania.
Zastanawia mnie jak się ma wskazywane 89.4% zajętości do faktycznej zajętości pamięci, gdy program działa. W programie nie wykorzystuję wskaźników, ani nie korzystam z funkcji alokacji pamięci malloc/calloc, czyli zajętość pamięci danych nie powinna wzrosnąć (a tymbardziej pamięć programu - przynajmniej tak mi się wydaje). Optymalizacja jest ustawiona na -0s.
Przy kompilacji z poniższym użyciem pamięci program nie działał jak należy - nawet reset musiałem przyciskać dwukrotnie, aby odblokować procesor (lub reset wogóle nie działał):
Tutaj status po kompilacji, kiedy kilka funkcji było wstawionych w komentarz(przy takim użyciu pamięci program działa jak należy):
Pozdrawiam,
