Przejdź do głównej zawartości

Posty

Wyświetlam posty z etykietą UART

Programowanie AVR cz. 10: Modyfikacja mikroprocesorowego sterownika wyświetlacza alfanumerycznego LCD (układ HD44780 lub odpowiednik) z dostępem przez łącze szeregowe (i błędy!)

Błędy zdarzają się nawet w najprostszym kodzie, niestety. Program sterownika do wyświetlacza szeregowego, o którym pisałem jakiś czas temu , też się błędów nie ustrzegł. Przy okazji zmodyfikowałem ten program w celu poprawnej obsługi wyświetlacza 16*2. Dotychczas wykorzystywałem dwa odzyskane ze złomu wyświetlacze jednowierszowe o fizycznej organizacji 16*1, ale logicznie każdy z nich składał się z dwóch wierszy po osiem znaków - stąd konieczność wprowadzenia udziwnionego polecenia mapowanego na bascomowskiego Locate'a i stąd błędy, które się przemknęły podczas testów. Być może wzięło się to z rzadko wykorzystywanego w jednowierszowym wyświetlaczu pozycjonowania tekstu. W każdym razie, po zmianie wyświetlacza na model o bardziej popularnym formacie prezentacji tekstu, program wymagał kilku przeróbek, dlatego też i błędy zostały wyłapane i poprawione. Oto poprawiony i zmodyfikowany program (BASCOM): Warto przetestować ten zmodyfikowany wyświetlacz - szczególnie funkcjonalno...

Arduino i wyświetlacz LCD sterowany przez UART

Być może niektórzy z Was pamiętają mój moduł wyświetlacza sterowany przez port szeregowy . Fajna rzecz - jeśli wolno mi się w ten sposób pochwalić - pozwalająca ocalić cenne wyprowadzenia mikrokontrolera od "zajęcia" przez sterownik wyświetlacza zgodny z HD44780 i wysyłać dane do prezentacji na ekraniku LCD przez zaledwie dwie linie (w tym tylko jedno wyprowadzenie mikrokontrolera - TxD ; druga linia to masa). Odchodząc na chwilę od Noduino  (choć właściwie można by pokombinować z wyświetlaczem i w tym kierunku - o ile Noduino na to pozwoli) postanowiłem sprawdzić, jak Leonardo poradzi sobie z moim wyświetlaczem. W tym celu pozwoliłem sobie zmodyfikować jeden z załączonych do IDE Arduino programów przykładowych i przygotować małe demko, którego kod źródłowy prezentuję poniżej: Zadaniem programu jest wyświetlanie kolejnych znaków ze zbioru podstawowego ASCII oraz ich kodów w systemie dziesiętnym, szesnastkowym i binarnym. Kod odrobinę udziwniony, ponieważ musiałem go do...

Programowanie AVR cz.8: Przetwornik analogowo-cyfrowy oraz modulacja szerokości impulsu.

Dziś kolejny wgląd w wyposażenie mikrokontrolera ATmega48P - tym razem przyglądamy się wbudowanemu w układ przetwornikowi analogowo-cyfrowemu oraz - dostępnej również w modelach ATtiny - modulacji szerokości impulsu realizowanej przez timery. Artykuł ten jest w pewnym sensie wstępem do następnego, który pojawi się już wkrótce, a którego tematykę zdradziłem na końcu. Przetwornik A-C (skrót spotykany w anglojęzycznej literaturze to ADC od Analog to Digital Converter ) to układ pozwalający na zamianę wartości napięcia (elektrycznego sygnału analogowego ;-)) na liczbę. W przypadku mojej ATmegi przetwornik ma rozdzielczość 10-bitową, co oznacza, że wartość napięcia podawanego na wejście przetwornika może być po konwersji zapisana jako liczba z przedziału od 0 do 1023 (musimy użyć zmiennej word do zapamiętania tej liczby). Jeśli jesteśmy w posiadaniu mikrokontrolera w obudowie PDIP 28-wyprowadzeniowej, to mamy do dyspozycji sześć kanałów (niezależnych wejść) przetwornika A-C, przyporzą...

Programowanie AVR cz. 7: Mikroprocesorowy sterownik wyświetlacza alfanumerycznego LCD (układ HD44780 lub odpowiednik) z dostępem przez łącze szeregowe.

Podłączenie wyświetlacza alfanumerycznego na układzie HD44780 (lub podobnym) do mikrokontrolera wymaga użycia w najlepszym przypadku sześciu wyprowadzeń. Jeżeli musimy wykorzystać mały mikrokontroler, np. ATtiny2313, stracimy sporo linii, które mogłyby służyć do realizacji innych funkcjonalności. Zasygnalizował mi to swego czasu znajomy, który właśnie m. in. z tego powodu nie przepada za LCD. Można jednak wykonać małe obejście, które pozwoli na wykorzystanie do połączenia wyświetlacza z mikrokontrolerem dwie linie (czyli dwa wyprowadzenia), przy założeniu istnienia wspólnego obwodu zasilania. Z pomocą przychodzi nam sprzętowy port szeregowy UART, będący na wyposażeniu większości mikrokontrolerów AVR. Ma on ponadto kompletne wsparcie w BASCOMie, a podejrzewam, że jego wykorzystanie w języku C również nie nastręcza problemów. Założenie projektu, który przedstawiam w tym artykule, jest proste: zrealizować mikroprocesorowy sterownik wyświetlacza, który znaki do wyświetlania oraz zbiór po...

Programowanie AVR cz. 6: Czy ATmega z ATtiny mogą się jakoś dogadać?

Mogą. I to na wiele sposobów. Doświadczeni elektronicy od razu wskażą kilka - od prostego połączenia port-w-port począwszy. Jednym z elementów wyposażenia mikrokontrolerów AVR, a dokładniej moich dwóch modeli ATtiny2313 i ATmega48P, jest zrealizowany sprzętowo port UART , zgodny logicznie z RS232 (jeśli chodzi o całkowitą zgodność, konieczne jest użycie układu dopasowującego napięcia - można użyć tranzystorów lub MAX232). Obsługa tego portu w BASCOMie jest banalnie prosta. Posłużmy się przykładem. Niech ATmega będzie nadajnikiem, który wysyła przez łącze szeregowe, w odstępach co ok. pół sekundy, kolejne duże litery alfabetu łacińskiego (a przy okazji każdy wysłany znak sygnalizuje zapalająca się na chwilę dioda - schematu i konstrukcji układu z poprzedniego posta nie zmieniałem); wysyłanie liter uruchamiane jest przyciskiem. ATtiny zaś, wyposażony w wyświetlacz LCD, będzie odbiornikiem, który podczas oczekiwania na znak wyświetla napis "Ready...", po odbiorze znaku wyświe...