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



Teraz jest 22 sty 2026, o 05:06


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 21 paź 2016, o 19:20 
Offline
Nowy

Dołączył(a): 21 paź 2016
Posty: 4
Lokalizacja: Gdańsk
Pomógł: 0

Witam serdecznie!
Chciałbym zapytać czy miał ktoś z forumowiczów do czynienia z zewnętrzną pamięcią EEPROM 25AA1024. Jest to pamięć o organizacji 128kx8bit i komunikacji po SPI. Obsługuję ją z ATmegi 1284. Przechowuję w niej obrazy (mieści się ich 10), które są zapisywane przez mk, a później odczytywane i wyświetlane. Nie ma zbyt wielu informacji w internecie, więc trzeba bazować na nocie katalogowej. Opracowałem zapis i odczyt obrazów. Przy zapisie należało uwzględnić wielobajtowy zapis tylko w obrębie jednej strony o rozmiarze 256 bajtów.

Jak wspomniałem, w pamięci mieście się 10 obrazów, a każdy z nich zajmuje dokładnie 48 stron. Problem pojawia się w momencie przechowywania w pamięci wielu obrazów. Okazuje się, że wgrywając kolejne obrazy od 1 do 5 wszystko jest OK - obrazy są wgrywane, odczytywane i poprawnie wyświetlane. Wgranie kolejnych obrazów (od 6 do 10) powoduje już pewne problemy, mianowicie wgranie np. 6 obrazu psuje 1 obraz, 9 psuje 4, 10 psuje 5 itd. Jednocześnie wgranie np 5 obrazu powoduje uszkodzenie obrazu 10. Widać tu pewną analogię i nie wiem z czego to wynika. Trzeba zaznaczyć, że wgranie np 9 obrazu psuje obraz 4, ale sam obraz 9 jest poprawny. "Psucie" polega na jakimś nakładaniu się obrazów, ich fragmentacji i jakichś dziwnych połączeniach. Mógłbym podejrzewać jakieś złe adresy, niemniej zapis odbywa się w prawidłowe miejsce, jednak jakimś cudem uszkadza inne obrazy.

Męczę się z tym nieco i nie potrafię poradzić :( Może ktoś spotkał się z czymś podobnym lub ma jakiś pomysł :) Kodu póki co nie wstawiam, bo jest on częścią większego projektu, jednak jak będzie trzeba to wykroję potrzebne fragmenty.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 19:24 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Bez kodu to nie da się pomóc

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 19:38 
Offline
Nowy

Dołączył(a): 21 paź 2016
Posty: 4
Lokalizacja: Gdańsk
Pomógł: 0

Ok, podrzucam zatem 2 funkcje. Obraz w pamięci przechowywany jest jako dwuwymiarowa tablica struktur reklama[][]. Elementami struktury są kolory RGB.
Funkcja zapisz_obraz zapisuje właśnie tę tablicę do EEPROMa w odpowiedni slot, czyli 1 z 10 banków pamięci. Na początku wyliczany jest adres pierwszej komórki pamięci tego slotu, następnie obraz ten jest dzielony na fragmenty 256 bajtowe (odpowiadające wielkości strony EEPROMa) i ostatecznie zapisywana w jednym "przebiegu" do pamięci. Ten cykl powtarza się dla 48 stron, co odpowiada całemu obrazowi.
Funkcja zmien_slot odczytuje obraz z pamięci z odpowiedniego slotu do tablicy reklama[][]. Używana funkcja czytaj_bajt_EEPROM odpowiada za czytanie pojedynczego bajta spod podanego adresu.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 21:02 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2605
Pomógł: 129

Wyglada to na efekt jakbys albo dwa razy wiecej danych zapisywal, albo masz pamiec o polowie pojemnosci (dlatego ze licznik sie przepelnia i laduje znow w zerze nadpisujac poprzednia zawartosc). Ale to tylko takie dywagacje z dala od komputera.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 13:38 
Offline
Nowy

Dołączył(a): 21 paź 2016
Posty: 4
Lokalizacja: Gdańsk
Pomógł: 0

Problem rozwiązany. Niepoprawnie był wyliczany adres pierwszej komórki pamięci. Instrukcję z 3 linijki zastąpiłem bezpośrednim switch-case.



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: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO