Witam Szanownych i tych mniej Szanownych Forumowiczów (czyli witam wszystkich)
Mam takie małe pytanko. Ale zanim je zadam to opowiem od Adama i Ewy jak to ze lnem było.
Otóż postanowiłem stworzyć pewne urządzonko, którego elementem interakcji z użytkownikiem jest m.in. wyświetlacz NOKIA 5110. Wyświetlacz o wymiarach 84x48 ma to do siebie, że na wyświetlenie o pełnych wymiarach potrzeba 506 bajtów. Biorąc pod uwagę to, że ATMEGA8 (bo takiego procesora używam) ma tylko 1024 bajty SRAMu łatwo domyślić się, że niewiele można wrzucić obrazków zwłaszcza, jak się ma w pamięci dane dla czcionki. Dlatego w tym miejscu z pomocą miała mi przyjść kość 24C16. Pewnie w tym miejscu padnie pytanie "dlaczego właśnie ta kość?", dlatego, że taką miałem na stanie. Pamięć ta charakteryzuje się tym, że ma wielkość 16 kB pogrupowane po 8x2048 bajtów. Mnie w zupełności wystarczy 2kB. Więc pogrzebałem w internecie i znalazłem te stronę -->
http://www.embedds.com/programming-avr-i2c-interface/. Na płytce stykowej przyczepiłem wszystkie elementy tj, wyświetlacz, procesor, zasilanie i pamięć. Wpisałem obrazek do pamięci procesora i napisałem program zapisujący go w EEPROMie. Wszystko poszło jak po maśle. Oczywiście wcześniej zapisałem kilka bajtów w różnych miejscach, wyciągnąłem kość, napisałem program odczytujący, kość podłączyłem i odczytałem dane, które wyświetliłem na LCD. Wszystko pięknie działało. To spróbowałem wrzucić obrazek. Obrazek był wielkości 192 bajtów więc napisałem program w pętli, który wyglądał mniej więcej tak (pisze z pracy, a tu nie mam programu)
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
No i zapis danych do pamięci się udał. Przyszedł czas na odczyt danych z pamięci. W tym celu zmieniłem powyższy program na troszkę inny:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
I tu pojawia się problem. Całość dochodzi do 56 iteracji, a następnie ekran się robi biały, a wszystko wygląda jakby się zawiesiło. Podejrzewam, że wyszedłem poza dostępną pamięć (w pamięci w końcu jest też czcionka, która zajmuje 75%). Czy ktoś może mi powiedzieć co jest nie tak? W sumie nie wiem gdzie popełniłem błąd. Jakieś pomysły? Dziękuję za wszelkie rady
Dodam tylko, że Rysunek jest zadeklarowany jako
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Dodam też, że na początku w zmiennej rysunek też się coś znajduje bo chciałem wyświetlić rysunek, nadpisać go z EEPROMu i wyświetlić drugi rysunek ten co był w EEPROMie.