Renesas Synergy interfejsy szeregowe (1)
|
|
- Irena Żurek
- 6 lat temu
- Przeglądów:
Transkrypt
1 Renesas Synergy interfejsy szeregowe (1) Interfejsy szeregowe są bardzo ważnym elementem budowania systemów mikroprocesorowych. Wiele elementów zewnętrznych, takich jak wyświetlacze, czujniki, moduły komunikacyjne i inne mają wbudowane szeregowe interfejsy komunikacyjne z jednej strony, a mikrokontrolery układy peryferyjne obsługujące transmisję szeregową z drugiej strony. Moduły komunikacyjne mikrokontrolerów są często bardzo rozbudowane. Przychodzące i wysyłane dane mogą być przesyłane kanałami DMA lub są buforowane w FIFO. Bardziej rozbudowane interfejsy, na przykład I 2 C, mogą pracować jako master w magistrali z wieloma masterami. Konfigurowanie tego typu peryferii jest prawdziwą udręką dla programistów. Konieczność zapisania wielu rejestrów konfiguracyjnych i wzajemne czasami skomplikowane zależności pomiędzy bitami konfiguracyjnymi powodują, że łatwo się pomylić i bardzo trudno znaleźć przyczynę pomyłki. Żeby ułatwić i przyspieszyć konfigurację, stosuje się dwa wzajemnie się uzupełniające elementy. Pierwszy z nich to najczęściej graficzny konfigurator, a drugi to gotowe biblioteki warstwy HAL. Warstwa HAL Hardware Abstraction Layer, to warstwa biblioteki zawierająca funkcje, które są niezależne od rozwiązań sprzętowych. Użytkownik używający tych funkcji nie musi znać żadnych rejestrów konfiguracyjnych i szczegółów sprzętowych interfejsu. Funkcje warstwy HAL wykorzystują funkcje warstwy niższej zależnej od sprzętu i różnych dla różnych typów mikrokontrolerów. Żeby takie rozwiązanie mogło poprawnie działać, trzeba bibliotekę skonfigurować. Ręczna konfiguracja wymagałaby znajomości sprzętu, a to zniweczyłoby korzyści ze stosowania warstwy HAL. Dlatego stosuje się różnego rodzaju graficzne konfiguratory. Takie oprogramowanie na podstawie znajomości wybranego typu mikrokontrolera i danych wprowadzonych przez użytkownika generuje struktury konfiguracyjne, z których korzystają funkcje biblioteki. Renesas oferuje środowisko projektowe e2studio zawierające graficzny konfigurator projektu. Jednym z możliwości tego konfiguratora jest szybka i bezproblemowa konfiguracja układów peryferyjnych. W wyniku pracy konfiguratora dostajemy projekt używający gotowych firmowych bibliotek SSP, w tym funkcji używających warstwy HAL. W tym artykule pokażę, jak: Utworzyć nowy projekt w środowisku e2studio. Projekt będzie przeznaczony dla mikrokontrolera serii S1 R7F- S124773A01CFM zamontowanego w module Arrow Aris EDGE (kompatybilnym sprzętowo z systemem ARDUINO). Skonfigurować driver interfejsu SCI do pracy w trybie SPI, wykorzystując konfigurator Synergy Configurator wbudowany w e2studio. Obsłużyć mały wyświetlacz OLED ze sterownikiem SSD1306 wykorzystując funkcje drivera r_sci_spi warstwy HAL biblioteki SSP. Skonfigurować dwa drivery interfeju I 2 C, wykorzystując konfigurator Synergy Configurator wbudowany w e2studio. Obsłużyć dwa czujniki: temperatury i wilgotności, wykorzystując funkcje drivera r_riic warstwy HAL biblioteki SSP. Zdefiniować i użyć funkcji callback przeznaczonych do powiadamiania między innymi o zakończeniu transmisji w interfejsach szeregowych. Rysunek 1. Nowy projekt Rysunek 2. Konfiguracja projektu Projekt Użycie modułu Arrow Aris EDGE z mikrokontrolerem serii S1 R7F- S124773A01CFM skutkuje brakiem wsparcia BSP (Board Support Package). Takie wsparcie mają tylko firmowe moduły ewaluacyjne. Jednak nie jest to żaden problem, bo odpowiednie konfiguracje wykonamy samodzielnie. Tworzenie projektu zaczynamy z menu File New Synergy Project (rysunek 1). W kolejnym kroku nadajemy naszemu projektowi w oknie Project name nazwę interfejsy, wybieramy bezpłatny kompilator GCCARM Embedded i podajemy ścieżkę dostępu do pliku licencji kompilatora, jeżeli nie była do tej pory podana. Pokazano to na rysunku 2. Ostatnie okno konfiguracji projektu zawiera okna wyboru: Wersji biblioteki SSP. Płytki ewaluacyjnej. Typu mikrokontrolera. Typu debuggera/programatora. Wybieramy najnowszą dostępną w czasie pisania artykułu wersję SSP o numerze Ponieważ płytka nie jest wspierana (przynajmniej w momencie pisania tego tekstu), w oknie Board wybieramy Custom User Board (S124). Typ mikrokontrolera płytki ewaluacyjnej wybieramy w oknie Device (rysunek 3). 109
2 Rysunek 3. Końcowy etap konfiguracji projektu Po przejściu wszystkich etapów wstępnej konfiguracji wykonywanej w trakcie tworzenia nowego projektu konfigurator generuje szkielet projektu gotowy do skompilowania. Oczywiście taki projekt niczego nie robi i trzeba go uzupełnić o funkcje obsługi interfejsów komunikacyjnych warstwy HAL i ewentualnie o funkcje warstw wyższych. Interfejs SPI Konfigurowanie interfejsu dla samej konfiguracji nie ma większego sensu. Dlatego pokażę jak skonfigurować interfejs SPI sterujący pracą wyświetlacza OLED z wbudowanym sterownikiem SSD1306. SSD1306 ma możliwość komunikacji za pomocą magistrali równoległej w standardzie Intel8080 lub Motorola 6800 oraz za pomocą magistrali szeregowej w standardzie SPI lub I 2 C. Dla aplikacji, w których jest ważna prędkość przesyłanych danych są wybierane magistrale równoległe. W pozostałych wypadkach magistrale szeregowe. Dla typowych aplikacji z interfejsem użytkowania wystarczająca jest prędkość dostępna za pomocą interfejsu szeregowego. Podstawowe właściwości sterownika umieszczono w tabeli 1. W tym typie wyświetlacza na etapie produkcji wybrano 4-przewodowy interfejs SPI. Ponieważ nie przewidziano odczytywania jakichkolwiek danych ze sterownika, to SPI ma tylko linię danych DIN (MOSI z punktu widzenia hosta) oraz linię zegarową CLK. Oprócz tych linii do przesyłania danych są używane linie CS i D/C. Sygnał CS jest standardowym sygnałem SPI uaktywniającym układ, do którego są wysyłane dane. Używając CS Tabela 1. Podstawowe właściwości sterownika SSD1306 Rozdzielczość Napięcie zasilania Maksymalny prąd segmentu 100 µa Maksymalny całkowity prąd matrycy Kontrast matrycy Wbudowana pamięć obrazu Matryca piksele Układy logiczne od +1,65 V do +3,3 V Drivery panelu matrycy od +7 V do +15 V 15 ma 256 poziomów (programowany) SRAM bity Interfejsy komunikacyjne Równoległy 8-bitowy 8080/6800 Funkcje akceleratora graficznego Remapowanie Oscylator Zakres temperatury pracy Szeregowy SPI 3-, lub 4-liniowy Szeregowy I 2 C Ciągłe skrolowanie w poziomie Ciągłe skrolowanie w pionie Kolumn i wierszy Wbudowany w układ C Rysunek 4. Przebiegi transferu danych na magistrali SPI sterownika SSD1306 można do jednej magistrali dołączyć kilka wyświetlaczy każdy ze swoją linią CS. Linia D/C jest wykorzystywana do kierowania danych albo do rejestru komend (D/C=0), albo do pamięci obrazu (D/C=1). Na rysunku 4 pokazano przebiegi czasowe na magistrali SPI w trakcie transferu danych. Organizacja pamięci obrazu, komendy sterujące, inicjalizacja sterownika itp. jest dokładnie opisana w dokumentacji sterownika i wyświetlacza. Sam moduł wyświetlacza był również opisywany na łamach Elektroniki Praktycznej i nie ma powodów by je tutaj powielać. Zajmiemy się głównym tematem naszych rozważań, czyli interfejsem SPI i jego konfiguracją. Mikrokontrolery Synergy mają wbudowane dwa typy interfejsów szeregowych. Pierwszy z nich to interfejs SCI Serial Communications Interface. Jest to uproszczony uniwersalny interfejs, który można zaprogramować do pracy w trybie SPI, I 2 C lub UART Drugi typ to natywne interfejsy SPI, I 2 C i UART. Pracują tylko ze swoją magistralą, ale mają większe możliwości konfiguracji. Z punktu widzenia sterowania wyświetlacza nie ma większego znaczenia, który interfejs wybierzemy, bo SSP obsługuje oba typy. Wyznaję zasadę, że najlepiej jest zaczynać od rzeczy prostych i dlatego na początek wybierzemy interfejs SCI pracujący jako SPI. Mikrokontroler ma wbudowane dwa moduły SCI0 i SCI1. Schemat blokowy SCI pokazano na rysunku 5. Wbudowane rejestry bufora FIFO pozwalają na pracę w trybie full-duplex i bezprzerwowe wysyłanie danych. Ważnym elementem jest układ BRG Baud Rate Generator ustalający prędkość wysyłania i odbierania danych niezależnie dla każdego z modułów SCI. Konfiguracja interfejsu SCI w trybie SPI Konfiguracja interfejsu z poziomu konfiguratora środowiska projektowego e2studio pozwala na ustawienie parametrów pracy interfejsu: wyboru kanału (numeru) interfejsu, trybu SPI, prędkości transmisji, fazy i polaryzacji zegara taktującego. Dodatkowo konfiguruje się układ przerwań niezbędny do działania drivera SPI. Konfigurator po zatwierdzeniu zmian dodaje do szkieletu projektu konieczne pliki źródłowe ze strukturami konfiguracji. Konfigurowanie interfejsu zaczynamy od zakładki Clocks rysunek 6. Przyjąłem, że mikrokontroler będzie taktowany maksymalna częstotliwością 24 MHz. Jeżeli z jakichś powodów, na przykład przy optymalizowaniu pobory mocy trzeba będzie zmniejszyć częstotliwość taktowania, to najwygodniej jest to zrobić w zakładce Clocks. Po ustawieniu taktowania przechodzimy do zasadniczej fazy naszego projektu: wyboru interfejsu SCI i drivera z warstwy HAL. W zakładce Threads wybieramy HAL/Common i dodajemy driver klikając na ikonkę plusa w prawym górnym rogu okna HAL/Common Stacks. Z rozwijanego menu wybieramy: Driver Connectivity SPI Driver on r_sci_spi, jak pokazano na rysunku 7. Jak już wiemy, SCI może pracować w trybie SPI, UART lub I 2 C. Sposób wyboru interfejsu pokazano na rysunku 8. Dodany driver wymaga kolejnego konfigurowania wykonywanego w oknie Properties, jak pokazano na rysunku 9. Zależnie od potrzeb ustawiamy: 110
3 Rysunek 5. Schemat blokowy interfejsu SCI Włączenie i priorytety obsługi przerwań od zdarzeń zgłaszanych przez driver. To ustawienie jest konieczne dla prawidłowego działania drivera. Nazwę modułu i numer kanału SCI wybieramy kanał zerowy. Tryb pracy modułu Master/Slave wybieramy tryb Master. Polaryzację i fazę zegara taktującego transmisję te ustawienia muszą się pokrywać z trybami pracy układu slave, Rysunek 6. Zakładka ustawień zegara taktującego Rysunek 7. Dodanie drivera SPI interfejsu SCI Rysunek 8. Wybór magistrali SPI interfejsu SCI w naszym wypadku z trybem pracy magistrali SPI sterownika wyświetlacza. Kolejność wysyłania bitów w słowie pierwszy najstarszy. Prędkość wysyłania bitów 100 kb/s. Nazwę funkcji callback zostanie dokładnie opisana dalej. Na tym etapie kończymy konfigurowanie drivera SPI warstwy HAL i przechodzimy do warstwy niższej związanej ze sprzętem. Musimy zaprogramować odpowiednie linie portu przez przypisanie ich do linii interfejsu SCI. Wykorzystujemy w tym celu zakładkę Pins. W oknie Pins Selection wybieramy Pripherials SCI0_2_4_6_8. W oknie Pin Configuration przypisujemy liniom interfejsu linie portu P1 rysunek 10. Skonfigurowane linie P100, P101, P102 i P103 można zobaczyć na rysunku obudowy mikrokontrolera umieszczonego w oknie Package. Każda z przypisanych linii musi być jeszcze skonfigurowana przez określnie głównie kierunku przepływu danych: wejście lub wyjście, jak na rysunku 11. Po wykonaniu wszystkich czynności konfiguracyjnych klikamy na przycisk Generate Project Content i konfigurator umieści w projekcie wszystkie pliki źródłowe i konfiguracyjne. Teraz musimy napisać sobie procedury warstwy aplikacji. Obsługa interfejsu SPI jest wykonywana przez funkcje drivera SCI SPI R_SCI_SPI. Za ich pomocą użytkownik może zainicjować driver i wykonywać operacje transferu danych poprzez fizyczną magistralę SPI. Wszystkie parametry konfiguracji ustawiane na rysu. 10 są umieszczane w strukturze spi_cfg_t generowanej automatycznie przez konfigurator. Druga strukturą używana przed driver jest spi_ctr_t. Zawiera ona informacje o tym czy kanał komunikacyjny został otwarty, numer używanego kanału itp. Jako pierwszą opiszemy funkcję otwarcia kanału drivera R-SCI_SSPI_Open. ssp_err_t R_SCI_SSPI_Open (spi_ctrl_t *p_ctrl, spi_cfg_t const *const p_cfg) Jej argumentami są wspomniane struktury spi_ctrl_t i spi_cfg_t wygenerowane przez konfigurator. Funkcja sprawdza poprawność parametrów i ewentualnie generuje informacje o błędach, włącza zasilanie kanału SPI, blokuje przerwania i na podstawie wprowadzonych ustawień inicjalizuje rejestry konfiguracyjne SCI. Jeśli używamy więcej niż jednego drivera SPI pracującego 111
4 Rysunek 9. Konfiguracja drivera SPI interfejsu SCI Rysunek 11. Konfiguracja linii portów Rysunek 10. Przypisanie linii portu do interfejsu SCI z tą sama magistralą funkcja Open w połączeniu z funkcja Close pozwala na sterowanie dostępem driverów do magistrali. Wywołanie funkcji otwarcia kanału drivera będzie wyglądało następująco: err=r_sci_spi_open(g_spi0.p_ctrl, g_spi0.p_cfg);. Wszystkie funkcje drivera zwracają informacje o statusie wykonania funkcji ssp_err_t. Status SSP_SUCCESS oznacza prawidłowe wykonanie funkcji. Każda inna wartość oznacza jakiś błąd. Z funkcją otwarcia kanału jest skojarzona funkcja zamknięcia kanału ssp_err_t R_SCI_SSPI_Close (spi_ctrl_t *const p_ctrl) Funkcja zamyka otwarty kanał, wyłącza jego zasilanie, blokuje przerwania skojarzone z obsługą drivera i odświeża status kanału. Jeżeli używamy jednego kanału SPI o stałych parametrach transmisji i nie używamy systemu RTOS, to nie ma potrzeby zamykania kanału SPI funkcją Close. W przypadku używania RTOS może się okazać, że różne watki będą rywalizować o jedna magistrale SPI. Obie opisywane funkcje pozwalają na zarządzanie zasobem, którym jest dostęp do magistrali SPI. Do sterowania transferem danych na magistrali są przeznaczone 3 funkcje: R_SCI_SPI_Write zapisywanie danych przez interfejs SPI. R_SCI_SPI_Read odczytywanie danych za pomocą SPI. R_SCI_SPI_WriteRead jednoczesne zapisywanie i odbieranie danych. Dala nas jest najważniejsza funkcja zapisu danych na magistralę. Umożliwia ona zapisanie określonej liczby danych z bufora pamięci RAM. Jej działanie jest wykonywane w kilku krokach: Sprawdzenie poprawności parametrów i wygenerowanie ewentualnych informacji o błędach. Zablokowanie przerwań. Ustawienie długości przesyłanego słowa w bitach. Odblokowanie nadajnika danych. Odblokowanie przerwań. Rozpoczęcie transmisji danych po wykryciu przerwania zgłaszanego przez pusty bufor danych. Przekopiowanie danych z bufora źródłowego do rejestru danych modułu SPI. Rysunek 12. Nazwa modułu określa nazwę struktur konfiguracyjnych i sterujących Odebranie danych po zgłoszeniu przerwania od zapełnionego bufora odbiornika. Ignorowanie odebranych danych. Zablokowanie nadajnika danych. Zablokowanie odbiornika danych. Zablokowanie przerwań. Funkcja R_SCI_SSPI_Write R_SCI_SSPI_Write (spi_ctrl_t *const p_ctrl, void ssp_err_t const *p_src, uint32_t const length, spi_bit_ width_t const bit_width ma następujące argumenty p_ctrl wskaźnik na strukturę konfiguracyjną, p_src wskaźnik na bufor z danymi do wysłania, length liczba danych do wysłania, bit_width długość słowa danych w bitach. Podobnie jak funkcje Open i Close, jest zwracany status (kod błędu) wykonania funkcji spp_err_t. Zwrócenie SSP_SUCCESS oznacza, że jest możliwe wysłanie danych i moduł je rozpoczął. Każda inna zwrócona wartość sygnalizuje niepowodzenie transmisji i program użytkownika musi jakoś na to zareagować. Pozostałe funkcje: R_SCI_SPI_Read i R_SCI_SPI_WriteRead nie będą używane w procedurach obsługi wyświetlacza i nie będziemy ich dokładniej opisywać. Programowa obsługa wyświetlacza 4-przewodowy interfejs SPI, oprócz linii MOSI, MISO i SCK, wymaga standardowej linii interfejsu SPI CS (P105) i linii DC (P104) określającej miejsce docelowe przesyłanych danych (rejestry sterujące, lub pamięć obrazu). Poza tym sterownik SSD1306 musi zostać sprzętowo wyzerowany przez wymuszenie stanu niskiego na linii RESET (P106). Wszystkie te linie musza być ustawione jako wyjściowe GPIO w zakładce Pins konfiguratora e2studio jak pokazano na rysunku 12. Wyprowadzenia płytki wyświetlacza nie zawierają linii wyjścia danych ze sterownika, a to oznacza jak już 112
5 wiemy, że żadnych danych nie będziemy mogli odczytywać. Do sterowania wyświetlaczem będą nam potrzebne dwie procedury: zapisania rejestrów stepujących, czyli kodu komendy i ewentualnie jej argumentów oraz zapisania danej do pamięci obrazu wyświetlacza (listing 1 i listing 2). Wysłanie komendy rozpoczyna się od wyzerowania linii DC (komendy) i CS (wybranie układu). Manipulacje poziomami linii wykonywane są za pomocą funkcji pinwrite warstwy HAL. Dane na magistralę są wysyłane przez funkcję R_SCI_SPI_Write. Nazwa struktury sterującej p_ctrl dla funkcji R_SCI_SPI_ Write jest określana automatycznie przez konfigurator projektu, jak pokazano na rysunku 13. Konfigurator deklaruje struktury konfiguracyjną i sterowniczą oraz zapisuje je wartościami określonymi w oknie Properties zwalniając programistę z wykonania tych czynności. Jeżeli funkcja R_SCI_SPI zwróci kod błędu, to program dla celów testowych wchodzi w pętlę nieskończoną. W praktycznych Listing 1. Wysłanie komendy sterującej do sterownika //wysłanie komendy do sterownika przez SPI ssp_err_t WriteCmd(uint8_t cmd) ssp_err_t err; uint8_t buffer[2]; data_ready=0; buffer[0]=cmd; g_ioport.p_api->pinwrite (DC,IOPORT_LEVEL_LOW);//DC=0; g_ioport.p_api->pinwrite (CS,IOPORT_LEVEL_LOW);//CS=0; err=r_sci_spi_write(g_spi0.p_ctrl,buffer, 1, SPI_BIT_WIDTH_8_ BITS); if(err!=ssp_success) while(data_ready==0); g_ioport.p_api->pinwrite (CS,IOPORT_LEVEL_HIGH);//CS=1; g_ioport.p_api->pinwrite (DC,IOPORT_LEVEL_HIGH);//DC=1; return(err); Listing 2. Wysłanie danej do sterownika przez SPI //wysłanie danej do sterownika przez SPI ssp_err_t WriteData(uint8_t data) ssp_err_t err; uint8_t buffer[2]; data_ready=0; buffer[0]=data; g_ioport.p_api->pinwrite (DC,IOPORT_LEVEL_HIGH);//DC=1; g_ioport.p_api->pinwrite (CS,IOPORT_LEVEL_LOW);//CS=0; err=r_sci_spi_write(g_spi0.p_ctrl,buffer, 1, SPI_BIT_WIDTH_8_ BITS); if(err!=ssp_success) while(data_ready==0); g_ioport.p_api->pinwrite (CS,IOPORT_LEVEL_HIGH);//CS=1; g_ioport.p_api->pinwrite (DC,IOPORT_LEVEL_HIGH);//DC=1; return(err); Listing 3. Przykład funkcji callback //prototyp funkcji calback dla kontroli transmisji SPI void spi_callback(spi_callback_args_t * p_args) if(spi_event_transfer_complete == p_args->event) data_ready=1; Listing 4. Inicjalizacja sterownika SSD1306 //inicjalizacja sterownika wyświeltacza ssp_err_t InitOled(void) ssp_err_t err; uint16_t i; err=r_sci_spi_open(g_spi0.p_ctrl, g_spi0.p_cfg); g_ioport.p_api->pinwrite (RES,IOPORT_LEVEL_LOW);//RES=0; for(i=0;i<0xffff;i++) i=i; g_ioport.p_api->pinwrite (RES,IOPORT_LEVEL_HIGH);//RES=1; for(i=0;i<28;i++) err=writecmd(buffer_init[i]); if(err!=ssp_success) zastosowaniach takie rozwiązanie jest nie do przyjęcia, bo może zablokować cały program, kiedy coś pójdzie nie tak. Użytkownik powinien napisać obsługę błędu tak by program mógł na niego efektywnie zareagować. Kolejna pętla nieskończona czeka na zakończenie wysyłania danych. Tu również należałoby napisać zabezpieczenie przed zablokowaniem programu. Mechanizm wykrywania końca transmisji zostanie opisany za chwilę przy okazji omawiania mechanizmu callback. Wysyłanie danych jest zorganizowane identycznie, tylko przed wysłaniem danych na linia DC jest ustawiana (listing 2). Jak już wcześniej wspomniałem funkcja R_SPI_SCI_Write inicjalizuje wysyłanie danych i nie sprawdza czy transmisja została zakończona. Dobrze napisane funkcje biblioteczne nie mogą czekać w pętli na wystąpienie jakiegoś zdarzenia, w tym przypadku na zakończenie transmisji danych po magistrali SPI. Jednak wykrycie zakończenia transmisji jest konieczne do tego by móc wysłać kolejna daną i nie spowodować konfliktu na magistrali. W systemach wykorzystujących RTOS można zatrzymać wątek i na semaforze i czekać aż wysyłanie bajtu zostanie zakończone. My nie używamy RTOS i trzeba sobie poradzić inaczej. Zakończenie transmisji jest powiązane ze zgłoszeniem przerwania. Użytkownik może sobie napisać procedurę obsługi i tam testować wystąpienie przerwania sygnalizującego zakończenie transmisji danej. Jednak trochę koliduje to z ogólną ideą użycia bibliotek HAL. Dlatego wprowadzono mechanizm nazwany callback. Jeżeli w zakładce Callback okna Properties drivera SPI zamiast opcji NULL wpiszemy jakąś swoją nazwę, to konfigurator zdefiniuje prototyp funkcji o tej nazwie wywoływanej w momencie zgłoszenia przerwania. Argumentem tej funkcji jest wskaźnik na strukturę zawierającą między innymi informacje o zdarzeniach dotyczących transmisji przez SPI. Zostało to pokazane na rysunku 13. Użytkownikowi pozostaje tylko napisać tą swoja funkcję, umieścić ją w programie źródłowym i testować tam na przykład zdarzenie zakończenia transmisji. Ta funkcja musi być formalnie zdefiniowana zgodnie z wymaganiami biblioteki SSP listing 3. Zdefiniowałem zmienną globalną data_ready, która jest zerowana przed każdym wywołaniem funkcji transmisji R_SCI_SPI_ Write. Po zakończeniu działania tej funkcji testuję jej wartość. Jeżeli w funkcji spi_callback zostanie wykryte zdarzenie SPI_ EVENT_TRANSFER_COMPLETE oznaczające zakończenie wysyłania danej po magistrali SPI, to do data_ready jest wpisywana jedynka i procedury wysyłania danych mogą przejść do transferu kolejnej danej. Jak widać nie potrzebujemy pisać własnych procedur obsługi przerwania, ani testować bitów rejestrów konfiguracyjnych, czy rejestrów powiązanych z przerwaniami. Ten mechanizm działa z każdym mikrokontrolerem Synergy wspieranym przez aktualnie dostępna bibliotekę SSP i za każdym razem jest taki sam niezależnie od typu mikrokontrolera. DisplayCls(0); return(err); Rysunek 13. Definiowanie funkcji callback 113
6 Mamy już funkcje wysyłające do sterownika wyświetlacza komendy i dane pamięci obrazu. Możemy zacząć obsługiwać wyświetlacz od procedury inicjalizacyjnej. SSD1306 tak jak większość sterowników po włączeniu zasilania ustawia w rejestrach sterowniczych domyślne wartości nie zawsze właściwe dla zastosowanej matrycy i zazwyczaj program użytkownika musi je zmienić w procesie inicjalizacji. Inicjalizacja polega na wysłaniu szeregu komend do sterownika i realizuje ją procedura InitOled pokazana na listingu 4. Inicjalizacja rozpoczyna się od wywołania funkcji otwarcia kanału SPI za pomocą funkcji Open i wykonaniu sekwencji zerowania sterownika przez chwilowe wyzerowanie linii RES. Potem jest wysyłanych 28 komend inicjalizujących sterownik. Po włączeniu zasilania pamięć RAM obrazu jest zapisana przypadkowymi wartościami. Dlatego na zakończenie inicjalizacji ta pamięć jest zapisywana wartością zerową (zgaszenie wszystkich pikseli matrycy). Procedura zerująca DisplayCls została pokazana na listingu 5. W pamięci RAM mikrokontrolera jest zdefiniowana dwuwymiarowa tablica static unsigned char DispBuff[128][8]; odpowiadająca pamięci obrazu sterownika. Organizacja bufora odpowiada organizacji pamięci RAM sterownika. DisplayCls najpierw zeruje bufor, a potem wywołuje procedurę RefreshRAM, która zapisuje jego zawartość do pamięci sterownika wyświetlacza (listing 6). W docelowej aplikacji będziemy wyświetlać tylko informacje tekstowe wyświetlacz graficzny doskonale się nadaje do tego celu. W typowych wyświetlaczach alfanumerycznych czcionki mają jednakową wielkość, zależną od wielkości wyświetlacza i mogą być wyświetlane w ustalonych wierszach. W wyświetlaczu graficznym można definiować czcionki o różnych wymiarach zależnie od potrzeb i umieszczać je w dowolnym miejscu wyświetlacza o ile się tam zmieszczą. Przy adresowaniu Page Addressing Mode jest bardzo łatwo zdefiniować znaki o wysokości 8 pikseli lub o wielokrotności tej wartości: 16, 24, 32 itd. Najprościej definiować znaki np. 8 6 pikseli umieszczając w pamięci generatora znaków 6 kolejnych bajtów. Niestety, w tym wyświetlaczu znaki o wysokości 8 pikseli są praktycznie nieczytelne. Wynika to po prostu z małych wymiarów (przekątnej) matrycy. Wartością graniczną jest wysokość 12 pikseli, a najlepiej gdyby znaki miały 16 i więcej pikseli. Do rysowanie znaków o dowolnej wielkości potrzebna będzie funkcja DrawPoint (listing 7), która umożliwia zaświecenie lub zgaszenie pojedynczego piksela o dowolnych współrzędnych x, y, niezależnych od trybu adresowania. Jak łatwo zauważyć funkcja void DrawPoint() z list. 7 tylko modyfikuje zawartość dwuwymiarowego bufora DispBuff i nie zapisuje modyfikacji do sterownika SSD1306. Jak zobaczymy dalej wszystkie procedury wyświetlania modyfikują tylko ten bufor i aby zobaczyć efekt tych modyfikacji trzeba przepisać całą zawartość DispBuff do pamięci sterownika wywołując funkcję void RefreshRAM(void). Mając do dyspozycji procedurę zaświecającą/gaszącą piksel o konkretnej współrzędnej możemy rysować proste, figury, okręgi, ale też znaki alfanumeryczne o dowolnej wielkości. Żeby to robić, potrzebne są wzorce znaków umieszczone w tablicy zwanej też generatorem znaków. Tablice są tak zbudowane, że kod ASCII znaku adresuje grupę bajtów definiujących ten znak. To znacznie upraszcza procedury wyświetlające łańcuchy znaków (napisy). Na przykład, tablica dla znaków o wysokości 12 i szerokości 6 pikseli jest dwuwymiarową tablicą const char c_chfont1206[95][12] i zawiera 95 wzorców znaków. Każdy element wzorca znaków ma 12 bajtów i definiuje znak o szerokości 6 pikseli, ale wykorzystuje przestrzeń 12 8 pikseli. Dla znaków 16 8 pikseli jest zdefiniowana druga tablica const uint8_t c_chfont1608[95] [16]. Tablica generatora znaków i procedura DrawPoint ustawiająca/ zerująca bit w buforze pamięci mikrokontrolera, odpowiadający zawartości pamięci RAM sterownika, a tym samym odpowiadający pikselowi na matrycy OLED, pozwala napisać procedurę rysującą znak w pamięci RAM mikrokontrolera. Pamiętamy, że aby ten znak Listing 5. Zerowanie wyświetlacza //zerowanie wyświetlacza void DisplayCls(uint8_t fill) uint8_t i, j; for (i = 0; i < 8; i ++) for (j = 0; j < 128; j ++) DispBuff[j][i] = fill; RefreshRAM();//zawartosc bufora do RAM obrazu Listing 6. Zapisanie zawartości bufora DispBuff do pamięci wyświetlacza void RefreshRAM(void) uint8_t i, j ; for (i = 0; i < 8; i ++) WriteCmd(0xb0+i); SetColStart(); for (j = 0; j < 128; j ++) WriteData(DispBuff[j][i]); Listing 7. Rysowanie punktu w pamięci obrazu wyświetlacza // rysowanie punktu w buforze RAM mikrokontrolera Hosta void DrawPoint(uint8_t x,uint8_t y, uint8_t p) uint8_t chpos, chbx, chtemp = 0; if (x > 127 y > 63) return; chpos = 7 - y / 8; chbx = y % 8; chtemp = 1 << (7 - chbx); if (p) DispBuff[x][chPos] = chtemp; else DispBuff[x][chPos] &= ~chtemp; się wyświetlił trzeba przepisać zawartość DispBuff do pamięci RAM wywołując funkcję void RefreshRAM(). Na listingu 8 pokazano procedurę void DisplayChar() z argumentami: x i y współrzędne początku znaku na ekranie, Chr kod ASCII wyświetlanego znaku, size wielkość znaku 12 lub 16 pikseli, mode=1 wyświetlanie normalne, mode=0 wyświetlanie w negatywie. Zależnie od wartości argumentu size, bajty wzorca są pobierane z tablicy c_chfont1206[95][12] lub z tablicy c_chfont1608[95][16]. Jeśli Rysunek 14. Testowanie trybu alfanumerycznego 114
7 Listing 8. Wyświetlenie jednego znaku //wyświetlenie jednego znaku //argumenty: //x,y - współrzędne na ekranie //Chr - kod ASCII znaku //size - rozmiar 12, lub 16 //mode=1 znak wyświetlany normalnie, mode=0 znak wyświetlany w negatywie void DisplayChar(uint8_t x, uint8_t y, uint8_t Chr, uint8_t size, uint8_t mode) uint8_t i, j; uint8_t chtemp, chypos0 = y; Chr =Chr - ; for (i = 0; i < size; i ++) if (size == 12) if (mode) chtemp = c_chfont1206[chr][i]; else chtemp = ~c_chfont1206[chr][i]; else if (mode) chtemp = c_chfont1608[chr][i]; else chtemp = ~c_chfont1608[chr][i]; for (j = 0; j < 8; j ++) if (chtemp & 0x80) DrawPoint(x, y, 1); else DrawPoint(x, y, 0); chtemp <<= 1; y ++; if ((y - chypos0) == size) y = chypos0; x ++; break; argument mode jest wyzerowany, to dodatkowo wartość pobranego bajtu jest negowana. Potem jest analizowany każdy bit bajtu wzorca i zależnie od jego wartości DrawPoint () zapisuje do bufora DispBuff odpowiednią wartość. Na listingu 9 pokazano procedurę void DispTxt() wyświetlającą łańcuch znaków od określonej pozycji z argumentami: x i y współrzędne początku znaku na ekranie, *txt wskaźnik na początek bufora z łańcuchem znaków, size wielkość znaku 12 lub 16 pikseli, mode=1 wyświetlanie normalne, mode=0 wyświetlanie w negatywie. Testowanie trybu wyświetlania znaków alfanumerycznych wykonamy umieszczając trzy wywołania funkcji DispTxt w funkcji Rysunek 15. Wyświetlanie bitmapy Listing 9. Wyświetlenie łańcucha znaków //wyświetlenie łańcucha znaków - napisu //argumenty //x,y - współrzędne na ekranie //*txt - wskaźnik na początek bufora zwierającego łańcuch znaków ASCII do wyświetlenia //size - wysokość znaków 12, lub 16 pikseli //mode=1 znaki wyświetlane normalnie, mode=0 znaki wyświetlane w negatywie void DispTxt(uint8_t x, uint8_t y, const uint8_t *txt, uint8_t size, uint8_t mode) while (*txt!= \0 ) if (x > (SSD1306_WIDTH - size / 2)) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww x = 0; y += size; if (y > (SSD1306_HEIGHT - size)) y = x = 0; DisplayCls(0x00); DisplayChar(x, y, *txt, size, mode); x += size / 2; txt ++; Listing 10. Testowanie trybu alfanumerycznego void hal_entry(void) InitOled(); DispTxt(0, 0, ARROW module, 16,1); DispTxt(0, 20, Renesas Synergy, 16,1); DispTxt(0, 40, text mode test, 16,1); RefreshRAM(); hal_entry, jak pokazano na listingu 10. Efekt działania tego testu pokazano na rysunku 14. Każda czcionka wyświetlana w trybie tekstowym jest bitmapą rysowaną na ekranie. Te bitmapy wzorce znaków umieszczane są w tablicy generatora znaków i mają jednakowe wymiary. Jednak często zachodzi konieczność wyświetlania bitmap o różnych wymiarach. Będziemy potrzebowali programu konwertującego bitmapy monochromatyczne na tablicę w języku C w formacie zgodnym z organizacją pamięci RAM sterownika wyświetlacza. Ja używam prostego programu bmp2.exe służącego do konwersji monochromatycznej mapy o niewielkiej rozdzielczości na tablicę w języku C. Kiedy już mamy skonwertowana bitmapę, to procedura jej wyświetlania jest stosunkowo prosta pokazano ją na listingu 11. Wywołanie funkcji rysującej pełnowymiarową bitmapę pokazano na listingu 12. Tablica bmparray jest generowana automatycznie przez program bmp2.exe. Po zapisaniu bufora pamięci DispBuff procedura RefreshRAM przepisuje jego zawartość do pamięci sterownika wyświetlacza. Efekt działania programu wyświetlającego bitmapę jest pokazany na rysunku 15. Tomasz Jabłoński, EP Listing 11. Rysowanie bitmapy //****************************** //rysuj bitmapę //argumenty //x,y współrzędne początku bitmapy //*bmp wskaźnik na tablicę z przekonwertowaną bitmapą //width - szerokość bitmapy //height - wysokość bitmapy //****************************** void DrawBmp(uint8_t x, uint8_t y, const uint8_t *bmp, uint8_t width, uint8_t height) uint16_t i, j; uint16_t bytewidth = (width + 7) / 8; for(j = 0; j < height; j ++) for(i = 0; i < width; i ++ ) if(*(bmp + j * bytewidth + i / 8) & (128 >> (i & 7))) DrawPoint(x + i, y + j, 1); Listing 12. Rysowanie bitmapy o rozdzielczości piksele DrawBmp(0,0, bmparray, 128, 64); RefreshRAM(); 115
GUIX Studio (1) Projekt e2studio
Krok po kroku Kursy EP GUIX Studio (1) Każda aplikacja wymagająca interakcji z użytkownikiem musi być wyposażona w interfejs użytkownika. Współcześnie zwykle do tego celu używa się wyświetlaczy graficznych.
Obsługa wyświetlacza ze sterownikiem SSD1306
Obsługa wyświetlacza ze sterownikiem SSD36 Niewielkie wyświetlacze z matrycami OLED cieszą się dużą popularnością wśród konstruktorów projektujących interfejsy użytkownika. Ich zaletami są: bardzo dobra
1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych
Dodatek A Wyświetlacz LCD. Przeznaczenie i ogólna charakterystyka Wyświetlacz ciekłokrystaliczny HY-62F4 zastosowany w ćwiczeniu jest wyświetlaczem matrycowym zawierającym moduł kontrolera i układ wykonawczy
Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.
Sprawozdanie z projektu MARM Część druga Specyfikacja końcowa Prowadzący: dr. Mariusz Suchenek Autor: Dawid Kołcz Data: 01.02.16r. 1. Temat pracy: Układ diagnozujący układ tworzony jako praca magisterska.
Szkolenia specjalistyczne
Szkolenia specjalistyczne AGENDA Programowanie mikrokontrolerów w języku C na przykładzie STM32F103ZE z rdzeniem Cortex-M3 GRYFTEC Embedded Systems ul. Niedziałkowskiego 24 71-410 Szczecin info@gryftec.com
Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa
Projekt MARM Dokumentacja projektu Łukasz Wolniak Stacja pogodowa 1. Cel projektu Celem projektu było opracowanie urządzenia do pomiaru temperatury, ciśnienia oraz wilgotności w oparciu o mikrokontroler
Komunikacja w mikrokontrolerach Laboratorium
Laboratorium Ćwiczenie 4 Magistrala SPI Program ćwiczenia: konfiguracja transmisji danych między mikrokontrolerem a cyfrowym czujnikiem oraz sterownikiem wyświetlaczy 7-segmentowych przy użyciu magistrali
PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA
EGMONT INSTRUMENTS PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA EGMONT INSTRUMENTS tel. (0-22) 823-30-17, 668-69-75 02-304 Warszawa, Aleje Jerozolimskie 141/90 fax (0-22) 659-26-11
ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1
Instrukcja obsługi aplikacji 1 1./ instalacja aplikacji. Aplikacja służy do zarządzania, konfigurowania i testowania modułów firmy Advance Electronic wyposażonych w RS485 pracujących w trybie half-duplex.
ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM
ĆWICZENIE 5 TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM Wiadomości wstępne: Port szeregowy może pracować w czterech trybach. Tryby różnią się między sobą liczbą bitów
MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART
MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART Własności MOBOT-RCR v2a: - pasmo komunikacji: ISM 433MHz lub 868MHz - zasięg 50m 300m * - zasilanie: z USB, - interfejs wyjściowy:
Wstęp...9. 1. Architektura... 13
Spis treści 3 Wstęp...9 1. Architektura... 13 1.1. Schemat blokowy...14 1.2. Pamięć programu...15 1.3. Cykl maszynowy...16 1.4. Licznik rozkazów...17 1.5. Stos...18 1.6. Modyfikowanie i odtwarzanie zawartości
Instrukcja do oprogramowania ENAP DEC-1
Instrukcja do oprogramowania ENAP DEC-1 Do urządzenia DEC-1 dołączone jest oprogramowanie umożliwiające konfigurację urządzenia, rejestrację zdarzeń oraz wizualizację pracy urządzenia oraz poszczególnych
dokument DOK 02-05-12 wersja 1.0 www.arskam.com
ARS3-RA v.1.0 mikro kod sterownika 8 Linii I/O ze zdalną transmisją kanałem radiowym lub poprzez port UART. Kod przeznaczony dla sprzętu opartego o projekt referencyjny DOK 01-05-12. Opis programowania
Programowanie Mikrokontrolerów
Programowanie Mikrokontrolerów Wyświetlacz alfanumeryczny oparty na sterowniku Hitachi HD44780. mgr inż. Paweł Poryzała Zakład Elektroniki Medycznej Alfanumeryczny wyświetlacz LCD Wyświetlacz LCD zagadnienia:
Wbudowane układy komunikacyjne cz. 1 Wykład 10
Wbudowane układy komunikacyjne cz. 1 Wykład 10 Wbudowane układy komunikacyjne UWAGA Nazwy rejestrów i bitów, ich lokalizacja itd. odnoszą się do mikrokontrolera ATmega32 i mogą być inne w innych modelach!
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Systemy Czasu Rzeczywistego Programowanie wyświetlacza graficznego LCD laboratorium: 01 autor: mgr inż. Paweł Pławiak
1. Opis. 2. Wymagania sprzętowe:
1. Opis Aplikacja ARSOFT-WZ2 umożliwia konfigurację, wizualizację i rejestrację danych pomiarowych urządzeń produkcji APAR wyposażonych w interfejs komunikacyjny RS232/485 oraz protokół MODBUS-RTU. Aktualny
Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780
Dane techniczne : Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780 a) wielkość bufora znaków (DD RAM): 80 znaków (80 bajtów) b) możliwość sterowania (czyli podawania kodów znaków) za pomocą
Instrukcja użytkownika ARSoft-WZ1
05-090 Raszyn, ul Gałczyńskiego 6 tel (+48) 22 101-27-31, 22 853-48-56 automatyka@apar.pl www.apar.pl Instrukcja użytkownika ARSoft-WZ1 wersja 3.x 1. Opis Aplikacja ARSOFT-WZ1 umożliwia konfigurację i
Alternatywa dla alfanumerycznych wyświetlaczy LCD
Alternatywa dla alfanumerycznych wyświetlaczy LCD Jednym z ważniejszych elementów urządzeń sterowanych mikrokontrolerem jest interfejs użytkownika. Od tego, z jakich komponentów jest zbudowany i jak jest
Mikroprocesory i Mikrosterowniki Laboratorium
Laboratorium Ćwiczenie 4 Magistrala SPI Program ćwiczenia: konfiguracja transmisji danych między mikrokontrolerem a cyfrowym czujnikiem oraz sterownikiem wyświetlaczy 7-segmentowych przy użyciu magistrali
1. Tworzenie nowego projektu.
Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty
Kod produktu: MP01105
MODUŁ INTERFEJSU KONTROLNO-POMIAROWEGO DLA MODUŁÓW Urządzenie stanowi bardzo łatwy do zastosowania gotowy interfejs kontrolno-pomiarowy do podłączenia modułów takich jak czujniki temperatury, moduły przekaźnikowe,
Programowanie w językach asemblera i C
Programowanie w językach asemblera i C Mariusz NOWAK Programowanie w językach asemblera i C (1) 1 Dodawanie dwóch liczb - program Napisać program, który zsumuje dwie liczby. Wynik dodawania należy wysłać
1 Moduł Neuronu Cyfrowego SM
1 Moduł Neuronu Cyfrowego SM Moduł Neuronu Cyfrowego SM daje użytkownikowi Systemu Vision możliwość obsługi fizycznych urządzeń Neuronów Cyfrowych podłączonych do Sterownika Magistrali. Moduł odpowiada
Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej
Struktura stanowiska laboratoryjnego Na rysunku 1.1 pokazano strukturę stanowiska laboratoryjnego Z80 z interfejsem częstościomierza- czasomierz PFL 21/22. Rys.1.1. Struktura stanowiska. Interfejs częstościomierza
Programowanie mikrokontrolerów. 8 listopada 2007
Programowanie mikrokontrolerów Marcin Engel Marcin Peczarski 8 listopada 2007 Alfanumeryczny wyświetlacz LCD umożliwia wyświetlanie znaków ze zbioru będącego rozszerzeniem ASCII posiada zintegrowany sterownik
2. Architektura mikrokontrolerów PIC16F8x... 13
Spis treści 3 Spis treœci 1. Informacje wstępne... 9 2. Architektura mikrokontrolerów PIC16F8x... 13 2.1. Budowa wewnętrzna mikrokontrolerów PIC16F8x... 14 2.2. Napięcie zasilania... 17 2.3. Generator
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 10 (3h) Implementacja interfejsu SPI w strukturze programowalnej Instrukcja pomocnicza do laboratorium z przedmiotu
Opis procedur asemblera AVR
Piotr Kalus PWSZ Racibórz 10.05.2008 r. Opis procedur asemblera AVR init_lcd Plik: lcd4pro.hvr Procedura inicjuje pracę alfanumerycznego wyświetlacza LCD za sterownikiem HD44780. Wyświetlacz działa w trybie
Expandery wejść MCP23S17 oraz MCP23017
Expandery wejść MCP23S17 oraz MCP23017 Expander I/O MCP20S17 I2C Piny wyjściowe expanderów MCP23S17 oraz MCP23017 Expander I/O MCP23S17 SPI Podłączenie urządzenia na magistrali SPI z płytą Arduino. Linie
Instrukcja programu użytkownika OmegaUW.Exe. Program obsługuje następujące drukarki fiskalne: ELZAB OMEGA II generacji ELZAB OMEGA F, MERA, MERA F.
Instrukcja programu użytkownika OmegaUW.Exe Program obsługuje następujące drukarki fiskalne: ELZAB OMEGA II generacji ELZAB OMEGA F, MERA, MERA F. Program nie obsługuje drukarek ELZAB OMEGA I generacji
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i Mikrokontrolery Dostęp do portów mikrokontrolera ATmega32 język C laboratorium: 10 autorzy: dr
OPTIMA PC v2.2.1. Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA 255 2011 ELFON. Instrukcja obsługi. Rev 1
OPTIMA PC v2.2.1 Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA 255 Instrukcja obsługi Rev 1 2011 ELFON Wprowadzenie OPTIMA PC jest programem, który w wygodny sposób umożliwia konfigurację
Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne
Spis treści 5 Spis treœci Co to jest mikrokontroler? Wprowadzenie... 11 Budowa systemu komputerowego... 12 Wejścia systemu komputerowego... 12 Wyjścia systemu komputerowego... 13 Jednostka centralna (CPU)...
Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.
Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio. IComsat jest to shield GSM/GPRS współpracujący z Arduino oparty o moduł SIM900 firmy SIMCOM.
o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)
O autorze (9) Podziękowania (10) Wstęp (11) Pobieranie przykładów (12) Czego będę potrzebował? (12) Korzystanie z tej książki (12) Rozdział 1. Programowanie Arduino (15) Czym jest Arduino (15) Instalacja
Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.
1 Moduł OPC Moduł OPC pozwala na komunikację z serwerami OPC pracującymi w oparciu o model DA (Data Access). Dzięki niemu można odczytać stan obiektów OPC (zmiennych zdefiniowanych w programie PLC), a
Mikrokontrolery AVR i ARM : sterowanie wyświetlaczami LCD / Tomasz Francuz. Gliwice, cop Spis treści
Mikrokontrolery AVR i ARM : sterowanie wyświetlaczami LCD / Tomasz Francuz. Gliwice, cop. 2017 Spis treści Wstęp 9 Moduły LCD 11 Schematy 12 Kody przykładów 12 Rozdział 1. Wprowadzenie do środowiska AVR
ISBN Copyright by Wydawnictwo BTC Legionowo 2008
Duża popularność graficznych wyświetlaczy LCD powoduje, że w coraz większej liczbie aplikacji warto byłoby wykorzystać ich możliwości (np. dla zwiększenia atrakcyjności urządzenia lub ułatwienia jego obsługi).
ze względu na jego zaokrąglony kształt musimy go umieścić w innych bloczkach np. ze zmienną: lub jeśli chcemy sprawdzić jaki właśnie znak odczytujemy:
Ostatnio kontynuowaliśmy temat "rozmawiania" z Arduino (komunikacji z wykorzystaniem portu szeregowego), która jest nam o tyle potrzebna, że właśnie w ten sposób później będziemy rozmawiać z płytką wykorzystując
interfejs szeregowy wyświetlaczy do systemów PLC
LDN SBCD interfejs szeregowy wyświetlaczy do systemów PLC SEM 08.2003 Str. 1/5 SBCD interfejs szeregowy wyświetlaczy do systemów PLC INSTRUKCJA OBSŁUGI Charakterystyka Interfejs SBCD w wyświetlaczach cyfrowych
Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja. do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1.
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1 PAMIĘCI SZEREGOWE EEPROM Ćwiczenie 3 Opracował: dr inŝ.
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury Cel ćwiczenia: Głównym celem ćwiczenia jest nauczenie się obsługi klawiatury. Klawiatura jest jednym z urządzeń wejściowych i prawie zawsze występuje
LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2
LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2 1. Cel ćwiczenia Celem ćwiczenia jest pokazanie budowy systemów opartych na układach Arduino. W tej części nauczymy się podłączać różne czujników,
Roger Access Control System. Aplikacja RCP Point. Wersja oprogramowania : 1.0.x Wersja dokumentu: Rev. C
Roger Access Control System Aplikacja RCP Point Wersja oprogramowania : 1.0.x Wersja dokumentu: Rev. C Spis treści Spis treści... 2 1. Wstęp... 3 1.1 Przeznaczenie i główne cechy aplikacji... 3 1.2 Wymagania
FAQ: 00000041/PL Data: 09/06/2012. Zastosowanie zmiennych Raw Data Type WinCC v7.0
Zmienne typu Raw Data są typem danych surowych nieprzetworzonych. Ten typ danych daje użytkownikowi możliwość przesyłania do oraz z WinCC dużych ilości danych odpowiednio 208 bajtów dla sterowników serii
Komunikacja Master-Slave w protokole PROFIBUS DP pomiędzy S7-300/S7-400
PoniŜszy dokument zawiera opis konfiguracji programu STEP7 dla sterowników S7 300/S7 400, w celu stworzenia komunikacji Master Slave z wykorzystaniem sieci PROFIBUS DP pomiędzy sterownikami S7 300 i S7
Obługa czujników do robota śledzącego linie. Michał Wendland 171628 15 czerwca 2011
Obługa czujników do robota śledzącego linie. Michał Wendland 171628 15 czerwca 2011 1 Spis treści 1 Charakterystyka projektu. 3 2 Schematy układów elektronicznych. 3 2.1 Moduł czujników.................................
LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program
LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program Przygotował: Jakub Wawrzeńczak 1. Wprowadzenie Lekcja przedstawia wykorzystanie środowiska LabVIEW 2016
1. Cel ćwiczenia. Celem ćwiczenia jest zestawienie połączenia pomiędzy dwoma sterownikami PLC za pomocą protokołu Modbus RTU.
1. Cel ćwiczenia Celem ćwiczenia jest zestawienie połączenia pomiędzy dwoma sterownikami PLC za pomocą protokołu Modbus RTU. 2. Porty szeregowe w sterowniku VersaMax Micro Obydwa porty szeregowe sterownika
Arduino dla początkujących. Kolejny krok Autor: Simon Monk. Spis treści
Arduino dla początkujących. Kolejny krok Autor: Simon Monk Spis treści O autorze Podziękowania Wstęp o Pobieranie przykładów o Czego będę potrzebował? o Korzystanie z tej książki Rozdział 1. Programowanie
Wyświetlacze graficzne : 162x64 z kontrolerem S1D x60 z kontrolerem S1D15710
S1D15705 Wyświetlacze graficzne : 162x64 z kontrolerem S1D15705 219x60 z kontrolerem S1D15710 S1D15710 Wyświetlacze S1D15705/S1D15710 są graficznymi wyświetlaczami ciekłokrystalicznymi. Wyposażone są w
4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.
13 4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD. Zagadnienia do przygotowania: - budowa i działanie interfejsu szeregowego UART, - tryby pracy,
Przemysłowy odtwarzacz plików MP3
Przemysłowy odtwarzacz plików MP3 WWW.DIGINN.EU Spis treści 1. Opis odtwarzacza MP3... 3 2. Wyprowadzenia odtwarzacza... 4 2.1 Wymiary płytki... 6 4. Tryby pracy... 8 5. Podłączanie MP3 Playera... 9 6.
Laboratorium Komputerowe Systemy Pomiarowe
Jarosław Gliwiński, Łukasz Rogacz Laboratorium Komputerowe Systemy Pomiarowe ćw. Zastosowanie standardu VISA do obsługi interfejsu RS-232C Data wykonania: 03.04.08 Data oddania: 17.04.08 Celem ćwiczenia
Pierwsze kroki z FPGA (9)
Pierwsze kroki z FPGA (9) Obsługa z kontrolerem SSD1331 Celem projektu było obsłużenie sprzętowego kontrolera kolorowego za pomocą układu FPGA zestawu maximator. Zastosowany w przykładzie wyświetlacz wyposażono
Instrukcja użytkownika ARsoft-CFG WZ1 4.0
05-090 Raszyn, ul Gałczyńskiego 6 tel. (+48) 22 101-27-31, 22 853-48-56 automatyka@apar.pl www.apar.pl Instrukcja użytkownika ARsoft-CFG WZ1 4.0 wersja 4.0 www.apar.pl 1 1. Opis Aplikacja ARsoft-CFG umożliwia
3.4. Opis konfiguracji layoutów.
Definicja layout-ów dla tablicy odczytywana jest z tabeli w bazie danych: [UnitId_System] Gdańsk = 42, Gdynia = 43 [UnitId_Subsytem] 6 = TZT, 7 = ZZT [UnitId_Unit] identyfikator obiektu [Update_TimeStamp]
Pierwsze kroki z FPGA (9)
Pierwsze kroki z FPGA (9) Obsługa z kontrolerem SSD1331 Celem projektu było obsłużenie sprzętowego kontrolera kolorowego za pomocą układu FPGA zestawu maximator. Zastosowany w przykładzie wyświetlacz wyposażono
Kod produktu: MP01105T
MODUŁ INTERFEJSU DO POMIARU TEMPERATURY W STANDARDZIE Właściwości: Urządzenie stanowi bardzo łatwy do zastosowania gotowy interfejs do podłączenia max. 50 czujników temperatury typu DS18B20 (np. gotowe
Magistrala SPI. Linie MOSI i MISO sąwspólne dla wszystkich urządzeńna magistrali, linia SS jest prowadzona do każdego Slave oddzielnie.
Magistrala SPI Magistrala SPI składa się z linii: MOSI Master output Slave input MISO Master input Slave Output SCK Clock SS Slave select (CS Chip Select lub CE Chip Enable) Sygnał taktujący transmisję
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Zadanie polega na napisaniu pierwszego programu w języku C, jego poprawnej kompilacji i wgraniu na mikrokontroler. W tym celu należy zapoznać
Technika Mikroprocesorowa
Technika Mikroprocesorowa Dariusz Makowski Katedra Mikroelektroniki i Technik Informatycznych tel. 631 2648 dmakow@dmcs.pl http://neo.dmcs.p.lodz.pl/tm 1 System mikroprocesorowy? (1) Magistrala adresowa
CECHY URZĄDZENIA: Podłączenie wyświetlacza
CECHY URZĄDZENIA: Napięcie zasilania: 230 VAC; Średni pobór prądu (gdy wyświetlany jest tekst) 0,25A; Maksymalny pobór prądu 0,45 A; Matryca LED o wymiarach 32 x 128 punktów, zbudowana z czerwonych diod
Hardware mikrokontrolera X51
Hardware mikrokontrolera X51 Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Hardware mikrokontrolera X51 (zegar)
ZL10PLD. Moduł dippld z układem XC3S200
ZL10PLD Moduł dippld z układem XC3S200 Moduły dippld opracowano z myślą o ułatwieniu powszechnego stosowania układów FPGA z rodziny Spartan 3 przez konstruktorów, którzy nie mogą lub nie chcą inwestować
Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski
Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej Systemy wbudowane Witold Kozłowski Zakład Fizyki i Technologii Struktur Nanometrowych 90-236 Łódź, Pomorska 149/153 https://std2.phys.uni.lodz.pl/mikroprocesory/
Ćwiczenie 7 Matryca RGB
IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -1- Ćwiczenie 7 Matryca RGB IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -2-1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z inną oprócz RS - 232 formą szeregowej
ZL8AVR. Płyta bazowa dla modułów dipavr
ZL8AVR Płyta bazowa dla modułów dipavr Zestaw ZL8AVR to płyta bazowa dla modułów dipavr (np. ZL7AVR z mikrokontrolerem ATmega128 lub ZL12AVR z mikrokontrolerem ATmega16. Wyposażono ją w wiele klasycznych
Kod produktu: MP-W7100A-RS232
KONWERTER RS232 - TCP/IP ETHERNET NA BAZIE W7100A FIRMY WIZNET MP-W7100A-RS232 jest gotowym do zastosowania konwerterem standardu RS232 na TCP/IP Ethernet (serwer portu szeregowego). Umożliwia bezpośrednie
4 Transmisja szeregowa, obsługa wyświetlacza LCD.
1 4 Transmisja szeregowa, obsługa wyświetlacza LCD. Zagadnienia do przygotowania: - budowa i działanie interfejsu szeregowego UART, - tryby pracy, - ramka transmisyjna, - przeznaczenie buforów obsługi
ActionFX oprogramowanie do sterowania efektami platform i kin 7D V1.0.1
Instrukcja obsługi ActionFX oprogramowanie do sterowania efektami platform i kin 7D V1.0.1 1 ActionFX to zaawansowane oprogramowanie umożliwiające sterowanie platformami efektowymi i efektami w kinach
PRUS. projekt dokumentacja końcowa
Adrian Antoniewicz Marcin Dudek Mateusz Manowiecki 17.01.2007 PRUS projekt dokumentacja końcowa Temat: Układ zdalnego sterowania (za pomocą interfejsu RS-232) wyświetlaczem LCD. Spis treści: 1. 2. 3. 4.
1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33
Spis treści 3 1. Wprowadzenie...11 1.1. Wstęp...12 1.2. Mikrokontrolery rodziny ARM...13 1.3. Architektura rdzenia ARM Cortex-M3...15 1.3.1. Najważniejsze cechy architektury Cortex-M3... 15 1.3.2. Rejestry
1. Aplikacja LOGO! App do LOGO! 8 i LOGO! 7
1. Aplikacja do LOGO! 8 i LOGO! 7 1.1. Przegląd funkcji Darmowa aplikacja umożliwia podgląd wartości parametrów procesowych modułu podstawowego LOGO! 8 i LOGO! 7 za pomocą smartfona lub tabletu przez sieć
Architektura komputerów
Architektura komputerów Tydzień 11 Wejście - wyjście Urządzenia zewnętrzne Wyjściowe monitor drukarka Wejściowe klawiatura, mysz dyski, skanery Komunikacyjne karta sieciowa, modem Urządzenie zewnętrzne
MIKROKONTROLERY I MIKROPROCESORY
PLAN... work in progress 1. Mikrokontrolery i mikroprocesory - architektura systemów mikroprocesorów ( 8051, AVR, ARM) - pamięci - rejestry - tryby adresowania - repertuar instrukcji - urządzenia we/wy
PROJECT OF FM TUNER WITH GESTURE CONTROL PROJEKT TUNERA FM STEROWANEGO GESTAMI
Bartosz Wawrzynek I rok Koło Naukowe Techniki Cyfrowej dr inż. Wojciech Mysiński opiekun naukowy PROJECT OF FM TUNER WITH GESTURE CONTROL PROJEKT TUNERA FM STEROWANEGO GESTAMI Keywords: gesture control,
Pliki. Operacje na plikach w Pascalu
Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie
MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN
MODBUS RTU wersja M1.14 protokół komunikacyjny do wyświetlaczy SEM 04.2010 Str. 1/5 MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN W wyświetlaczach LDN protokół MODBUS RTU wykorzystywany
FAQ: 00000014/PL Data: 26/11/2008 Komunikacja w protokole MPI za pomocą Global Data (GD) pomiędzy sterownikami S7-300
PoniŜszy dokument zawiera opis konfiguracji programu STEP7 dla sterowników SIMATIC S7 300/S7 400 w celu stworzenia komunikacji między dwoma stacjami S7 300 za pomocą sieci MPI i usługi komunikacyjnej Danych
TECHNIKA MIKROPROCESOROWA II
Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Wydział IEiT Katedra Elektroniki TECHNIKA MIKROPROCESOROWA II LAB 6 Moduł UART - współpraca z komputerem poprzez BlueTooth Mariusz Sokołowski
1 Moduł Neuronu Analogowego SM
1 Moduł Neuronu Analogowego SM Moduł Neuronu Analogowego SM daje użytkownikowi Systemu Vision możliwość obsługi fizycznych urządzeń Neuronów Analogowych podłączonych do Sterownika Magistrali. Dzięki temu
Spis treści. 1 Moduł RFID (APA) 3
Spis treści 1 Moduł RFID (APA) 3 1.1 Konfigurowanie Modułu RFID..................... 3 1.1.1 Lista elementów Modułu RFID................. 3 1.1.2 Konfiguracja Modułu RFID (APA)............... 4 1.1.2.1
Parametryzacja przetworników analogowocyfrowych
Parametryzacja przetworników analogowocyfrowych wersja: 05.2015 1. Cel ćwiczenia Celem ćwiczenia jest zaprezentowanie istoty działania przetworników analogowo-cyfrowych (ADC analog-to-digital converter),
Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
APOLLO KISO II - PC INSTRUKCJA UŻYTKOWNIKA INSTRUKCJA OBSŁUGI PROGRAMU DO KOMUNIKACJI KASA KOMPUTER. (ver. 1.0 czerwiec 2005)
APOLLO KISO II - PC INSTRUKCJA OBSŁUGI PROGRAMU DO KOMUNIKACJI KASA KOMPUTER DLA KASY APPOLLO KIISSO IIII INSTRUKCJA UŻYTKOWNIKA (ver. 1.0 czerwiec 2005) 1 1. UWAGI OGÓLNE... 3 2. KABEL KOMUNIKACYJNY...
Mikroprocesory i mikrosterowniki Wydział Elektroniki Mikrosystemów i Fotoniki Politechniki Wrocławskiej Ćwiczenie nr 4
1 Ćwiczenie nr 4 Program ćwiczenia: Interfejs szeregowy SPI obsługa sterownika ośmiopozycyjnego, 7-segmentowego wyświetlacza LED Interfejs szeregowy USART, komunikacja mikrokontrolera z komputerem PC.
1 Moduł E-mail. 1.1 Konfigurowanie Modułu E-mail
1 Moduł E-mail Moduł E-mail daje użytkownikowi Systemu możliwość wysyłania wiadomości e-mail poprzez istniejące konto SMTP. System Vision może używać go do wysyłania informacji o zdefiniowanych w jednostce
Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
// Potrzebne do memset oraz memcpy, czyli kopiowania bloków
ZAWARTOŚCI 3 PLIKOW W WORDZIE: MAIN.CPP: #include #include #include pamięci // Potrzebne do memset oraz memcpy, czyli kopiowania bloków #include "Rysowanie_BMP.h" using
1.Wstęp. 2.Generowanie systemu w EDK
1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).
Kurs programowania mikrokontrolerów KURS PIC Kurs programowania mikrokontrolerów PIC (6) Sterowanie kolorowym wyświetlaczem Nokii 3510i
Kurs programowania mikrokontrolerów KURS PIC Kurs programowania mikrokontrolerów PIC (6) Sterowanie kolorowym wyświetlaczem Nokii 3510i Graficzne wyświetlacze z telefonów komórkowych są chętnie stosowane.
1.2. Architektura rdzenia ARM Cortex-M3...16
Od Autora... 10 1. Wprowadzenie... 11 1.1. Wstęp...12 1.1.1. Mikrokontrolery rodziny ARM... 14 1.2. Architektura rdzenia ARM Cortex-M3...16 1.2.1. Najważniejsze cechy architektury Cortex-M3... 16 1.2.2.
Spis treści. Dzień 1. I Konfiguracja sterownika (wersja 1410) II Edycja programu (wersja 1406) III Środowisko TIA Portal (wersja 1410)
Spis treści Dzień 1 I Konfiguracja sterownika (wersja 1410) I-3 Zadanie Tworzenie konfiguracji sprzętowej I-4 Co jest potrzebne by zacząć? I-5 TIA Portal ekran startowy I-6 Tworzenie nowego projektu I-7
Kod produktu: MP-W7100A-RS485
KONWERTER RS485/422 - TCP/IP ETHERNET NA BAZIE W7100A FIRMY WIZNET MP-W7100A-RS485 jest gotowym do zastosowania konwerterem standardu RS485 lub RS422 na TCP/IP Ethernet. Umożliwia bezpośrednie podłączenie
ROZDZIAŁ 1. PRZEGLĄD BRAMOFONU SAFE...
Spis treści INSTRUKCJA OBSŁUGI SPIS TREŚCI ROZDZIAŁ 1. PRZEGLĄD BRAMOFONU SAFE... 2 1.3. WYMAGANIA SYSTEMU... 2 ROZDZIAŁ 2. APLIKACJA I URZĄDZENIE.... 4 2.1. DODAWANIE BRAMOFONU DO APLIKACJI... 4 2.2.
Projekt Komputerowych Systemów Sterowania Wymiana danych pomiędzy dwoma sterownikami Siemens S7-300 po sieci Profibus DP
Gliwice, 7 stycznia 2007-01-07 Projekt Komputerowych Systemów Sterowania Wymiana danych pomiędzy dwoma sterownikami Siemens S7-300 po sieci Profibus DP Janusz Serwin KSS, sem. 9 Informacje ogólne Profibus