I²C TWI – jak kaktus „dawał po garach” ;-D

Tym razem opowiem trochę o magistrali TWI obsługiwanej w środowisku BascomAVR, lub krótko mówiąc wątek będzie wokół tematu: I²C Bascom.

W środowisku tym obie te nazwy (I²C, TWI) używa się zamiennie i dotyczą jednego i tego samego. protokołu komunikacji na magistrali dwuprzewodowej. Jak ogólnie wiadomo nazwa I²C została opatentowana więc Atmel stworzył swoją dla nazwania ulepszonego protokołu.  Wszyscy też wiemy, iż w świecie IC i µC mamy do czynienia z prędkościami transmisji rzędu 100 kbps  (tryb standardowy) i 400 kbps (Fast Mode). Oraz pośrednie między nimi. Jest jeszcze jeden tryb określający prędkość wymiany danych na magistrali (High Speed Mode), pozwalający na komunikację  na poziomie 3,4 Mbps, niemniej nie spotkałem się z nim jeszcze w praktyce. Ja wyczyniałem inne „wariactwa” 😆 :

Podgląd magistrali I2C przebiegi generowane oprogramowaniem Bascom. Zaznaczyłem opis "co się dzieje na magistrali".

Podgląd magistrali I²C przebiegi generowane oprogramowaniem Bascom. Zaznaczyłem opis „co się dzieje na magistrali”.

czytam dalej co kaktus napisał

Real Time Counter prawie jak RTC

Real Time Counter prawie jak RTC, nie należy mylić ze sobą tych dwóch pojęć choć skrót (RTC) wychodzi identyczny. Real Time Counter – licznik czasu rzeczywistego, Real Time Clock – zegar czasu rzeczywistego.

Real Time Counter prawie jak RTC bo to licznik przystosowany do pracy jako „miernik upływu czasu” a Real Time Clock to niezależne specjalizowane urządzenie (najczęściej układ scalony – IC) zoptymalizowane do bardzo precyzyjnego i energooszczędnego funkcjonowania przy zliczaniu czasu. Upływający czas to pojecie bardzo przytłaczające – przynajmniej dla mnie …. Swego czasu wywaliłem osobisty zegarek i jestem zdrowszym, szczęśliwszym człowiekiem. Jakby nie było jest to wymysł bardziej lub mniej niezbędny. Kiedyś było tak: nadchodził świt ludzie wstawali, … robił się zmierzch szli spać lub i nie  🙂 i to był wyznacznik czasu. Ewentualnie wspomagano się pozycją słonka na horyzoncie, widocznie było wystarczające. Na dziś dzień pęd cywilizacji spowodował powstanie atomowych wzorców czasu … czytam dalej co kaktus napisał

Operacje na bitach w BASCOM – jak maskować lub ustawiać wybrane bity

Temat nie jest skomplikowany, a potrzeba taka rodzi się co jakiś czas. Za każdym razem kiedy muszę przeprowadzić operacje na bitach, po pierwsze przychodzi myśl cholera jak to było ….
A no tak:
1. prawie jak RESET
Dla skasowania wybranego bitu w bajcie stosujemy operator logiczny AND maska „0” resetuje dany bit.
2. prawie jak SET
Dla ustawienia wybranego bitu w słowie trzeba skorzystać z operatora OR, gdzie maska „1” ustawia dany bit.
3. prawie jak TOGGLE
I trzecia możliwość – modyfikacja bitu na stan przeciwny, dzięki operatorowi XOR, możemy sobie zmienić w słowie wartości poszczególnych bitów na przeciwne. W tym celu stosujemy maskę „1„. czytam dalej co kaktus napisał

Pull-up resistor i pull-down resistor w µC AVR

Tym razem opiszę – zanotuję sobie,  😀 jak to jest z tymi wewnętrznymi pull-up resistor i pull-down resistor w µC AVR.

Dla świętego spokoju można wyczytać w nocie katalogowej każdego µC jakie ma te rezystory i czy w ogóle ma, oraz o jakich są one wartościach. Rezystancja tych elementów jest odmienna dla pinów reset i GPIO. Stosowne informacje o wartościach zawiera dział Electrical Characteristics  tabela – DC Characteristics, – wiersze u dołu. czytam dalej co kaktus napisał

TIMER i tryb CTC

Co to u licha jest ten TIMER i tryb CTC?

Krótko mówiąc  “Clear on Timer Compare”, w skrócie CTC – czyli jeden z trybów w jakim może pracować timer µC. Timer to krótko mówiąc jednostka „zliczająca” stosowana do odmierzania przedziału czasu. Jak to działa? Po prostu µC sprzętowo porównuje wartość zliczającego timera z pożądaną wartością umieszczoną w stosownym rejestrze. Gdy wartość ta zostanie osiągnięta, timer zostaje automatycznie wyzerowany i ustawiona zostaje flaga w rejestrze statusu (status register). Tymczasem kolejny cykl zliczania dalej trwa. Więc musimy tylko sprawdzać czy odpowiednia flaga w rejestrze statusu jest ustawiona i w stosownym dla nas momencie zerować ją. czytam dalej co kaktus napisał

Optymalizacja kodu Bascom

Czyli pamięci flash przybywaj .. 😎

Optymalizacja kodu Bascom, to może bardzo duże słowa, niemniej zwrócę uwagę na kilka istotnych aspektów dzięki którym, można upchnąć zamierzony cel do pamięci flash. Czasem, może być to nie lada wyczyn.

Objętość wynikowego kodu, który utworzy kompilator zależy od różnych czynników. Ma na nią wpływ ilość i typ zmiennych i operatorów, dlatego typy należy dobierać optymalnie zależnie od potrzeby. W zależności od objętości typu, może on zajmować od jednego bita do czterech bajtów, zarówno pamięci RAM jak i Flash. Przy czym w drugim wypadku bit stanowi wyjątek ponieważ upychany/sklejany jest w bajty. czytam dalej co kaktus napisał