Witam,
Miło mi przedstawić najnowszą wersję, teoretycznie prostej biblioteki do obsługi komunikacji po magistrali I2C. Ktoś powie, że przecież jest tego pełno w internecie przeróżnych bibliotek i to za FREE. No i super - sam potwierdzam, że tak jest ... więc jeśli ktoś się tylko tym kieruje to w zasadzie można odpuścić sobie czytanie dalej tego posta i ew oglądanie zawartych w nim poradników wideo. Ale jeśli kogoś interesuje nowe hmmm nie obawiam się powiedzieć CAŁKIEM nowe podejście do I2C, i co ciekawego niesie ze sobą omawiania biblioteka to serdecznie zapraszam. Powiem tylko, że ogromną motywacją dla mnie do stworzenia takiej biblioteki był właśnie fakt, że praktycznie co się pojawiał jakiś nowy projekt, w którym miałem używać I2C w najróżniejszych konfiguracjach to prawie zawsze "apiać od nowa" rezanie I2C od podstaw i dopasowywanie do konkretnego projektu jeśli było potrzeba czegoś ciut więcej, albo w sposób bardziej wyśrubowany czasowo ... albo chociażby żeby nie powielać właśnie setek błędów tych rzekomo darmowych rozsianych po całym necie bibliotek ;) ... A jeśli ktoś tu chlapnie - że przecież jest kocie andruino - to rzeczywiście chlapnie - bo tak samo spora część darmowych bibliotek andruino jest albo nafaszerowana błędami jak dobra kasza skwarkami, albo działają często mułowato albo niezgodnie do końca z opisanymi założeniami. Mówcie co chcecie ale tak jest i nie chodzi li tylko o biblioteki do I2C ale do wszystkiego. Nie wspomnę też już o fakcie, że te darmowe libsy zbierane po necie - zawsze są jakimiś szczątkami albo okruchami - albo pasują do tego albo do siamtego ale nie ma często jednego pewnego całego dobrego rozwiązania. Czy ja twierdzę, że prezentowana biblioteka jest OCH, ACH najlepsza ? (tu pozwolicie proszę, że zwrócę się do malkontentów) ... Nie - otóż nie jest OCH, ACH najlepsza - przydałoby się na przykład żeby jeszcze w trybie master mogła działać na przerwaniach, albo żeby dorobić obsługę Multimaster - bo tego nie ma ... no ale też konia z rzędem stawiam temu kto np w każdym swoim projekcie używa więcej niż jednego mastera I2C. A więc tu poszedłem na pewną swoistą optymalizację ;) Ktoś może to uznać a ktoś inny nie - wolny wybór ;)
link do biblioteki:
https://sklep.atnel.pl/pl/p/0581_0582-MK-I2C-AVR-Biblioteka-C/244
No dobrze na początek kilka punktów co oferuje i co zapewnia omawiana biblioteka:
1. Niespotykane (przynajmniej ja nie spotkałem) nigdzie w necie rozwiązanie jeśli chodzi o podejście do ustawiania prędkości BITRATE I2C. Z automatycznym dostosowywaniem prędkości dla taktowania, które np nie umożliwia ustawienia wybranego Bitrate ! Ustawia się wtedy maksymalny możliwy do osiągnięcia Bitrate ! Ale to nie wszystko - funkcja zwraca jeszcze nam wartość Bitrate! Dzięki czemu zawsze możemy gołym okiem przekonać się co uzyskujemy na wyjściu pomimo zadania konkretnej prędkości. Jest to ważne np w przypadku kwarców przyjazny RS232 mających nie okrągłe wartości ;)
2. Praca w trybie MASTER
a.) przy wykorzystaniu sprzętowego modułu TWI procków AVR (tylko procki ATmega)
b.) przy wykorzystaniu programowej wersji tzw SOFT I2C (ATmega i ATtiny - dowolne piny)
3. Praca w trybie SLAVE (przy wykorzystaniu systemu PRZERWAŃ sprzętowych)
a.) Przy zastosowaniu sprzętowego modułu TWI procków AVR (tylko procki ATmega)
b.) Przy zastosowaniu sprzętowego modułu USI w prockach ATtiny i niektórych ATmega
4. Obsługa na dzień dzisiejszy Expanderów I2C - PCF8574 (8-bit), PCF8575 (16-bit)
5. Obsługa błędów na magistrali I2C
4. Obsługa na dzień dzisiejszy Expanderów I2C - PCF8574 (8-bit), PCF8575 (16-bit)
5. Obsługa błędów na magistrali I2C
Myślę, że jak na taką niby małą - nie małą biblioteczkę to sporo się dzieje. A do tego MEGA INTUICYJNA obsługa i konfiguracja do pracy w różnych warunkach.
po resztę zapraszam do poradników - a przy okazji można się dowiedzieć czegoś ciekawego n/t Bitrate - z czego pewnie wiele osób nie zdaje sobie sprawy zabierając się za zabawy z I2C a często nawet pracując parę lat z I2C
;)
Brak komentarzy:
Prześlij komentarz