andrews napisał(a):
Użycie zmiennej musi powodować zajęcie pamięci flash, bo tam właśnie są zapisane operacje, które ma wykonać mikrokontroler. W tym przypadku będzie to prawdopodobnie instrukcja STS kopiująca zawartość rejestru do odpowiedniej komórki pamięci. Zajmuje ona dwa słowa 16-bitowe, czyli 4 bajty.
Nie o to chodzi

sprawa jest banalnie prosta
Jeśli definiujesz zmienną albo stałą dosłowną w RAM, no to nie ma co się dziwić, że zostanie na to zmarnowany FLASH

Bo jak myślicie - skąd się później ma wziąć ta wartość w zmiennej ? NO MUSI być gdzieś przechowana w pamięci FLASH prawda ? i to z tej pamięci w prologu przed funkcją main (w jednej z funkcji inicjalizacyjnych) są przypisywane dane
dlatego też początkujący często się dziwią - w takim obrazowym bardziej przykładzie , gdy napiszą sobie
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
czyli stworzyliśmy właśnie stałą dosłowną a dokładniej mówiąc literał w pamięci RAM "jakis tekst" .... A przecież on się sam nie zalęgnie w pamięci RAM

.... dlatego kompilator najpierw pakuje taki sam tekst do FLASH aby w prologu przed main - zapisać go do RAM - żeby mógł zadziałać w tej linii programu czyli ?
.... czyli MARNUJEMY nie tylko pamięć RAM ale i FLASH
wtedy gdy zrobimy to tak
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to wyświetlamy ten sam tekst ale już z pamięci FLASH i w ogóle nie tracimy pamięci RAM....
Dlatego trzeba zrozumieć - że podobnie jest ze zmiennymi liczbowymi i stałymi dosłownymi bo przykład z góry
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i pytanie autora pokazuje fakt, że autor na razie KOMPLETNIE nie zdaje sobie sprawy z tego:
1. co to są zmienne globalne
2. że zmienne globalne inicjowane są ZEREM i nie trzeba ich zerować w programie .... dlaczego ? Ano dlatego, że to zerowanie robione jest tu programowo i pójdzie na to kilka bajtów jak widać
3. że przypisanie wartości innej niż ZERO będzie wymagało - umieszczenie tej wartości przecież w pamięci FLASH i jej przypisanie w tej linii stąd jeszcze więcej bajtów tracisz
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
_________________
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 ]