(13-12-2016 23:26)SP2GNB napisał(a): - czytam podając adres żądanego rejestru np. 0x0024
- do zapisu muszę użyć adresu wg wzoru: adres_rej=4*adres_rej+1 czyli 0x0091
i wtedy zapiszę pod realnym adresem 0x0024. Tego zupełnie nie rozumiem :-(...
Zaglądnąłem do PDF-a pamięci. Funkcja zapisu z przedstawionych tu przykładów zapisuje pod prawidłowym adresem.
Natomiast funkcję odczytu będzie trzeba zmodyfikować do tej pamięci.....
Strona 11 pdf-a. Mamy pokazany zapis do pamięci pojedynczej danej oraz całego "bufora". Jak widzisz, wysyłamy adres układu, 2 bajty adresu komórki pamięci, oraz dane. Między bajtami jest tylko sygnał ACK i na końcu STOP.
Odczyt już jest z lekka zakręcony.
mamy taką sekwencję::
START -> DEVICE_ADRESS(bit write)->ACK-->MSB_ADRES->ACK->LSB_ADRES->ACK->
START->DEVICE_ADRESS(bit read)->ACK->DATA1->NO_ACK->STOP
Zwróć uwagę na wyróżnioną sekwencję START. Występuje bez wcześniejszego STOP !!!
Te funkcje w przykładach chyba nie obsługują takiego odczytu. Nie przeglądałem ich...
Przy okazji, aby się upewnić, czy dane są zapisane pod właściwym adresem, zapisz do niej coś pod znany adres. Następnie w programatorze zewnętrznym odzytaj pamięć. Badzie wszystko wiadomo, gdzie leży błąd. W zapisie pod błędny adres, czy w funkcji odczytu....
PDF pamięci nic nie mówi o takim mechanizmie odczytu/zapisu:
adres_rej=4*adres_rej+1.
Nie posiadam aktualnie pamięci c512, oraz Xmegi, więc są to moje rozważania teoretyczne na chwilę obecną.
doc1116.pdf (Rozmiar: 503.6 KB / Pobrań: 910)