Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki
Teraz jest 22 lis 2019, o 14:31


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 24 kwi 2018, o 10:50 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 165
Pomógł: 0

Witam.

Ćwiczę sobie podstawy boodloadera (selfprograming) na mikrokontrolerze ATmega644P.

Dla jasności:

ATmega644P to:

256 stron pamięci po 128 dwu bajtowych słów maszynowych na każdej (czyli 64KB flash).
R0 - składowanie pierwszej połówki słowa maszynowego
R1 - składowanie drugiej połówki słowa maszynowego
R30 - składowanie numeru słowa na stronie (pamiętamy o przesunięciu o jedną pozycję w lewo)
R31 - składowanie numeru strony

Popełniłem sobie taki kod:

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


Zasada działania jest prosta:

1. Migaj sobie diodą na porcie B1
2. Jeśli na pinie B0 pojawi się stan niski olej diodę i zaprogramuj komórki pamięci flash numerem strony, na której leży dana komórka.

Prawie działa.

Po zainicjowaniu selfprogramingu (podanie na B0 na chwilę stanu "0", potem znów "1") sczytuję pamięć flash, i co widzę?

Początek jest niezły. Widać, że kolejne strony zostają zapisywane kolejnymi numerami stron (począwszy od wartości 0).

Poniżej widzimy dwie strony i kawałek trzeciej:

Obrazek

Z jakiegoś powodu zapisuje się 17 stron, a później widać niezaprogramowane komórki (255 dec, czyli FF hex):

Obrazek

Gdzieś musi być bug, którego nie potrafię wyłapać.

Pomogą?

:-)



Ostatnio edytowano 24 kwi 2018, o 12:07 przez mes mariusz, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2018, o 11:27 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 165
Pomógł: 0

Dobra, Panowie (i Panie?).

Nie wiem czemu wcześniej nie działało (może za szybko odczytywałem zawartość flash z uC, zanim zakończył się selfprograming) w każdym razie teraz już wszystko działa elegancko, czyli wszystkie strony począwszy od strony 0 do strony 247 (czyli pierwsze 248 stron) zapisuje się wartością numeru strony, a na stronie kolejnej zaczyna się kod bootloadera.

Jest cacy!

Obrazek

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



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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