Port WaveForms SDK na Pascal Digital I/O - dostęp bezpośredni część 8 |
|
Temat bezpośredniego dostępu do cyfrowych wejść-wyjść Analog Discovery 2 jest całkiem prosty i w sumie to mogłabym jakieś większe pisanie o tym odpuścić. Przykład hurtowego odczytu Digital I/O mieliśmy w poprzednim odcinku, zapis jest analogiczny. No ale zapis ów to też jedyna w swoim rodzaju okazja do prezentacji kolejnego cudaka z moich drobnych zbiorów - alfanumerycznego wyświetlacza HDSP-2111 - a zatem... ❦ zapis do I/O Jak wiemy puderniczka AD2 posiada 16 wyprowadzeń cyfrowych, które zależnie od konfiguracji mogą pełnić rolę wejść lub wyjść. O kierunku przepływu danych decyduje szesnastobitowa liczba podana jako parametr wywołania funkcji FDwfDigitalIOOutputEnableSet, bity słowa ustawione na 1 konfigurują port do pracy jako wyjście, podanie 0 ustawia port jako wejście. Jeżeli nasza aplikacja tego wymaga, możemy oczywiście zadziałać precyzyjnie - wywołaniem funkcji FDwfDigitalOutEnableSet konfigurujemy jeden wybrany port AD2. Analogicznie do poprzedniej inwokacji - true ustawi kanał na wyjście, wartość false na wejście. Zapis fizycznej danej odbywa się funkcją FDwfDigitalIOOutputSet, kolejnym bitom szesnastobitowego słowa odpowiadają stany, które zostaną ustawione na fizycznych wyjściach AD2. Tu nie ma żadnego buforowania, należy oczekiwać że nowe stany będą efektywnie dostępne na wyjściach zaraz po zwróceniu sterowania przez wspomnianą funkcyjkę. I to w zasadzie koniec podstaw teoretycznych. ❦ HDSP-2111 Po drobnej dawce koniecznych przynudzeń zabieramy się za zabawę! Zatem proszę, oto mimo że plastikowy to zajesympatyczny wyświetlacz typu HDSP-2111, a właściwe takie dwa. Oba z czasów prospery firmy Hewlett-Packard i datowane na rok '93. No i jeden to pamiątka z irlandzkiego zmywaka, a drugi to owoc regularnego polowania na Wolumen, widzimy je na zdjęciu poniżej. ![]() Dane katalogowe znajdziemy bez trudności w sieci: ➮ https://datasheet.octopart.com/HDSP-2111-Avago-datasheet-7272882.pdf Pierwsze próby zasilenia zestawu układów na płytce stykowej może nie należały do szczególnie mądrych, ale efekt bardzo mi przypominał zachowanie pokładowej Matki z frachtowca Nostromo w filmie Alien. Drugi filmik, w analogicznych klimatach pokazuje wrażliwość modułów na zakłócenia od strony zasilania. Wszelkie meszki i inne efekty specjalnie zniknęły jak ręką odjął po zablokowaniu zasilania 5V małym kondensatorem 10uF. Skoro ten model wyświetlaczy nadaje się do ładnego składania w dłuższe linijki (horizontal stacking) to nie omieszkałam z tego faktu skorzystać i finalny schemat połączeń widzimy na rysunku: ![]() Na schemacie widzimy też fragmenty dokumentacji, bo podłączenie wyświetlacza nie jest tak do końca typowe. Już wyjaśniam: wyszłam z założenia, że priorytetem ma być łatwość wpisywania nowego tekstu do pamięci wyświetlacza, zatem adresację w obrębie jednego modułku zapewniają mi linie A2...A0 połączone z wyprowadzeniami DIO-2...DIO-0 Analog Discovery 2. Selekcją wyświetlaczy zajmuje się negowana po drodze linia DIO-3, która odpowiednio steruje sygnałami /CE modułów. W ten sposób mam liniowo adresowalny, szasnastoznakowy bufor tekstowy. Linie A4 wyświetlaczy mają stale stan H, a spięte razem linie A3 pozwalają mi wybrać, czy wpisuje dane do pamięci tekstu, czy podaję słowo sterujące modułem. Finalna instalacja zaraz przed testami: A tu weryfikacja połączeń i zachowania wyświetlacza sterowanych na piechotę aplikacją WaveForms. Taki już zwyczaj sobie wypracowałam - zanim zacznę dziergać swoje bazgroły w Pascal to sprawdzenie sprzętu zewnętrznym, wiarygodnym (no..niech tam) oprogramowaniem. ![]() No cóż, chyba nie do końca udało się wycelowanie, który modułek jest pierwszy, a który drugi w kolejności adresacji, stąd drobne poprawki. ![]() Nadający się do prezentacji program znajdziemy w lokalizacji ➮ https://github.com/bienata/AnalogDiscovery2/blob/master/dio_hdsp2111_1/dio_hdsp2111_1.lpr Efekt działania poniżej: ![]() ![]() Dwa aspekty dostępu do wyświetlaczy - dane/polecenie pokrywają kolejno: zestaw stałych i następujące procedurki:
W wysokopoziomowego punktu widzenia - możemy pisać sobie teksty, możemy zmieniać jasność napisów, wszystko to w całkiem wygodny sposób:
Działający programik demonstracyjny widzimy też na filmiku: Przy okazji - proszę zwrócić uwagę na wskazówkę amperomierza z zasilaczu, gdy programowo zmieniam jasność wyświetlaczy - zakres zmian poboru prądu jest dość znaczny i chcąc docelowo wykorzystać te układy, trzeba się liczyć z zapasem dedykowanej im mocy zasilania. No i oczywiście ponownie temat zakłóceń - te modułki wymagają jednak bardzo czystego zasilania, czasem na matrycy potrafią pojawić się niespodziewane śmiećki - na filmie widać to wyraźnie. ❦ a za oknem -5 Kolejna zabawka, będąca niejako efektem naturalnej ewolucji programu to model prostego zaokiennego termometru na bazie kostki MCP9700. Mój układzik od prawie roku siedzi na parapecie, w nocniku powstałym na okazję wpisu (na Forum) ➮ Zaziębieniomagedon Instalacja taka jak na zdjęciu, weryfikacja odczytów przy pomocy V640@0.5VDC: ![]() Cały programik pracujący jako pogodynka mamy tu: ➮ https://github.com/bienata/AnalogDiscovery2/blob/master/dio_hdsp2111_2/dio_hdsp2111_2.lpr I może dwa słowa - napięcie wyjściowe z MCP9700 mierzę sobie via Analog In, kanałem pierwszym, ale nie tak jak to było robione przy potencjometrze, jednostkowymi odczytami. Tum razem postanowiłam wykorzystać możliwość sekwencyjnej akwizycji danych (tryb oscyloskopowy) i serię pomiarów wykonywaną z zadanym kwantem czasu pakuje sobie automatycznie do zmiennoprzecinkowego buforka. Znając jego rozmiar można bardzo łatwo wyliczyć wartość średnią serii. Konfigurację kanału do ciągłej akwizycji danych wykonuję kawalątek kodu jak poniżej:
a same odczyty, uśrednianie i konwersję napięcia z offsetem na temperaturę i jej prezentację wraz z wiatraczkiem po prawo realizuje taka oto nieskończona pętelka:
Filmik z działającym na żywo termometrem możemy obejrzeć poniżej: I tym prostym sposobem mam już z głowy większość zagadnień dotyczących cyfrowego bloku w Analog Discovery 2. Jest chyba jasne, że z wykorzystaniem niskopoziomowych funkcji możemy z tym małym pudełkiem robić cokolwiek chcemy, włącznie z nauką skakania przez kijek. Druga refleksja taka, że łączenie funkcjonalności analogowych i cyfrowych, jak w tym właśnie przypadku, otwiera drogę do całkiem ciekawych eksperymentów, gdzie AD2 jest traktowane jako dostępna przez USB cyfrowo-analogowa karta pomiarowa. Zapominamy na chwilę o lansowanych przez sprzedawców określeniach - oscyloskop, generator, analizator stanów. Jeżeli zachodzi kompromis natury: oczekiwane parametry/funkcje vs cena, z tego punktu widzenia Analog Discovery 2 niczym nie różni się od modułów DAQ typu LabJack czy USB-4716 od Advantech. Reszta to kwestia oprogramowania i wsparcia jakie daje dostawca w formie developerskiego SDK dla produktu, tu AD2 wypada IMHO całkiem dobrze. #slowanawiatr, styczeń 2019 |
![]() |
![]() |
![]() |