janusz17 napisał(a):
Przecież masz w BB funkcje wysyłającą/odbierającą jeden bajt:
Proszę wybacz mi określenie ale to nonsens ...
te dwie funkcjie
TWI_write_buf() oraz
TWI_read_buf() -
robią WSZYSTKO ! ![Puszcza oko ;)](https://forum.atnel.pl/images/smilies/icon_e_wink.gif)
zupełnie wszystko i nie ma potrzeby rozbijać tego super mechanizmu. Gdy widzę jak na forum pomimo posiadania takich extra funkcji niektórzy zamiast dopytać - to wchodzą do biblioteki, wyłuskują bebechy na wierzch i jak wysyłają w sposób liniowy całe dziesiątki bajtów - zamiast użyć Qurczę JEDEN funkcji to aż mi coś w kręgosłupie zgrzyta i włosy jeżą się pod łopatkami
johny5 napisał(a):
znajdzie się jakaś życzliwa duszyczka która przerobiła by te dwie Mirkowe funkcje
dobrze, że chociaż zadajesz pytanie na forum .... zamiast to kroić na kawałki jak inni - zupełnie niepotrzebnie
UWAŻAJ - teraz wyślę JEDEN bajt za pomocą tej funkcji, załóżmy że będzie to 8-bitowa zmienna o nazwie np my_reg:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
KONIEC! ... koniec ?
przedostatni argument to ilość bajtów które chcesz wysłać - więc skoro chcesz tylko jeden bajt to dlatego jest tam jedynka
ostatni argument to adres zmiennej (wskaźnik) do bufora jednobajtowego - co uzyskujesz operatorem &
wcześniej oczywiście podajesz standardowy adres swojego scalaka na I2C - masz go w nocie PDF
a drugi argument to adres w pamięci scalaka czy też adres rejestru scalaka - zależy co to za scalak
i po jasny gwint coś przerabiać ? albo wyłuskiwać z biblioteki jakieś tam pojedyncze funkcje ?
------------------------ [ Dodano po: 5 minutach ]jeśli to ma być np zapis godziny do RTC PCF8583 i się uprzesz robić to za pomocą pojedynczych bajtów to proszę
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
(4 - to adres rejestru godzin w scalaku)i co? można? - można .... trudne ? coś trzeba było przerabiać ? nie trzeba bo po grzyba ?
------------------------ [ Dodano po: 7 minutach ]ale jakbyś chciał zapisać od razu sekundy, minuty i godziny to po prostu:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
tyle że teraz zapisujemy 3 bajty a że sekundy w PCF są od adresu = 2 to stąd drugi argument = 2
------------------------ [ Dodano po: 10 minutach ]TO SAMO - DOKŁADNIE to samo dotyczy odczytu
Wiem wiem - zaraz padnie pytanie albo sugestia typu
ale ja mam całkiem inny scalak i nie jest to RTC tylko np przetwornik ADC na i2c ? ... co za Qurczę problem - robimy NADAL DOKŁADNIE TAK samo ... (no chyba że jest jakiś specyficzny scalak, który ma np adresy swoich rejestrów 16-bitowe, albo przesyła się dane 16-bitowe - albo ma jakieś nieco inne adresowanie na i2c to wtedy można sobie lekuchno przerobić te DWIE funkcje - zmieniając chociażby typy dla argumentów i nieco ich ciało i viola! ... nadal używamy tylko tych DWÓCH funkcji
teraz jaśniej ?