Witam
ja ponownie z TWI Slave. Już praktycznie mam to pięknie rozgryzione na ATmegach , ale zauważyłem pewną dziwną dla mnie rzecz bo chyba nie jest ona opisana w PDFkach. Chodzi mianowicie o to jak ATmega ustawiona na sprzętowe TWI Slave reaguje na próbę odczytu z niej danych przez Mastera w trybie REPEATED START
otóż gdy robi się zwykły odczyt bez Repeated Start to w rejestrze statusu TWSR występują kolejno podczas przerwań statusy takie jak:
&HA8
&HB8
&HC0
gdy odczytujemy ze Slave 1 bajt, i rzeczywiście wystarczy w Masterze odczytać tylko 1 bajt aby go otrzymać
ALE już gdy użyjemy RepeatedStart tzn najpierw coś zapiszemy do Slave a potem repeatedstart i od razu dokonujemy odczytu to !!!! mamy takie statusy:
&H60
&H80
&HA0
&HB8
&HC0
zauważcie, że zeżarło status &HA8 a w zamian za niego Slave emituje jako pierwszy bajt danych swój własny "adres" czyli Master musi odebrać w tym przypadku 2 bajty. Pierwszy to będzie ten nieszczęsny adres, który spędził mi wiele snu z powiek a dopiero drugi to będzie bajt z odesłaną przez Slave daną
hmmm więc jak w temacie - czy może ktoś potwierdzić takie działanie ??? czy to tylko u mnie tak? czy może coś źle robię??? ... ale generalnie teraz jak już wykryłem że tak się dzieje - to transmisja w trybie Slave śmiga mi tak pięknie że aż strach
.... i to napisana w Bascomie
ja ponownie z TWI Slave. Już praktycznie mam to pięknie rozgryzione na ATmegach , ale zauważyłem pewną dziwną dla mnie rzecz bo chyba nie jest ona opisana w PDFkach. Chodzi mianowicie o to jak ATmega ustawiona na sprzętowe TWI Slave reaguje na próbę odczytu z niej danych przez Mastera w trybie REPEATED START
otóż gdy robi się zwykły odczyt bez Repeated Start to w rejestrze statusu TWSR występują kolejno podczas przerwań statusy takie jak:
&HA8
&HB8
&HC0
gdy odczytujemy ze Slave 1 bajt, i rzeczywiście wystarczy w Masterze odczytać tylko 1 bajt aby go otrzymać
ALE już gdy użyjemy RepeatedStart tzn najpierw coś zapiszemy do Slave a potem repeatedstart i od razu dokonujemy odczytu to !!!! mamy takie statusy:
&H60
&H80
&HA0
&HB8
&HC0
zauważcie, że zeżarło status &HA8 a w zamian za niego Slave emituje jako pierwszy bajt danych swój własny "adres" czyli Master musi odebrać w tym przypadku 2 bajty. Pierwszy to będzie ten nieszczęsny adres, który spędził mi wiele snu z powiek a dopiero drugi to będzie bajt z odesłaną przez Slave daną
hmmm więc jak w temacie - czy może ktoś potwierdzić takie działanie ??? czy to tylko u mnie tak? czy może coś źle robię??? ... ale generalnie teraz jak już wykryłem że tak się dzieje - to transmisja w trybie Slave śmiga mi tak pięknie że aż strach
