Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
ATxMega128 i TWI - problemy... cd
SQ8MVY Offline
Paweł
****

Liczba postów: 724
Dołączył: 30-07-2011
Post: #13
RE: ATxMega128 i TWI - problemy... cd
Witaj Staszku,

Nie za bardzo zrozumiałem z Twojego postu z czym masz problem - zapis, odczyt całego bufora ??

Na zapis do pamięci danych z bufora bez magicznych wzorów, które podałeś, można sobie np. tak poradzić:
Kod:
void mem_c512_write( uint16_t reg, uint8_t * bufor, uint8_t len )
{

uint8_t i = len - 1;

do {
  bufor[i + 2] = bufor[ i ];
} while( i--);

bufor[0] = reg >> 8;
bufor[1] = reg & 0xff;


twic_write_buf(mem_ADDR, bufor, len + 2);                //wysylanie bufora do C512
}

W tym przypadku bufor musi mieć co najmniej o 2 bajty większy rozmiar, niż ilość danych do zapisu. Na uwadze też mieć należy to, że zawartość bufora jest modyfikowana.
Nie określiłeś się co dokładnie chcesz zapisywać, odczytywać z/do pamięci. Jeżeli jakieś ustawienia, to może warto rozważyć użycie struktury, a w niej 2 pierwsze bajty zarezerwować dla adresu komórki w pamięci C512 ? Wtedy bez żadnych dodatkowych zabiegów wysyłamy taką strukturę przez i2c ? Rozwiązań jest tyle, ilu programistów...

Przy okazji taka mała sugesia. Staraj się bez potrzeby nie używać operacji dzielenia. Zwiększa to niepotrzebnie rozmiar kodu. Chyba, że ATxmega ma rozkazy sprzętowego dzielenia liczb 16 bitowych.

Przykład pisany "na kolanie".... więc.....

73 Paweł
(Ten post był ostatnio modyfikowany: 13-12-2016 23:19 przez SQ8MVY.)
13-12-2016 23:19
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: ATxMega128 i TWI - problemy... cd - SQ8MVY - 13-12-2016 23:19

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości