Powrót

Mikroprocesorowa ośla łączka, część 8

Poprzednio używany czterocyfrowy 7-segmentowy wyświetlacz LED miał jedną niedogodność (bo trudno to nazwać wadą) – zużywał sporą liczbę wyprowadzeń. Co zrobić by to zminimalizować.

Arduino Nano, to środowisko, które nie jest zbyt „bogate” w zasoby, jakimi są wyprowadzenia portów. To one stanowią podstawowy element łączący mikroprocesor ze światem zewnętrznym. Pamiętając, że ATMEGA328 ma trzy porty (w dodatku niepełne) oraz część wybranych wyprowadzeń pełni inne istotne funkcje, liczba dostępnych pinów do wykorzystania staje się jeszcze mniejsza. Wykorzystany wyświetlacz 4-cyfrowy zajął 12 pinów, co stanowi praktycznie połowę jego dostępnych zasobów. Czy można na to coś zaradzić?

Zasięg identyfikatorów w programie

Zanim zostaną omówione warianty pozwalające zoptymalizować „zużycie” zasobów mikrokontrolera (jakimi są jego piny do współpracy ze światem zewnętrznym), wrócimy jeszcze do poprzedniego artykułu. Celowo w programach tam opisanych użyłem tej samej nazwy dla funkcji i zmiennej. Zostało to zrobione celowo, by pokazać pewne cechy języka i spowodować „świadome” korzystanie z tego. Warto pamiętać, że czasami finalny program jest efektem współpracy kilku autorów, jak choćby fakt, że dołączane funkcje biblioteczne musiał ktoś napisać. Tam również są funkcje i zmienne o określonych identyfikatorach, które potencjalnie mogą prowadzić do „konfliktów identyfikatorów”. Każdy z nich ma swój zasięg działania (rysunek 1), który można określić jako lokalny (obowiązujący lokalnie w obrębie funkcji, w której został utworzony) lub globalny (w obrębie pliku, ale jest to pewne uproszczenie, a do tej kwestii będziemy jeszcze wracać).

Rysunek 1

Zastosowanie rejestru przesuwającego

Jednym z możliwych rozwiązań jest zastosowanie rejestrów przesuwających z wejściem szeregowym i wyjściem równoległym. Takie rozwiązanie potrafi znacząco zmniejszyć wymaganą liczbę wyprowadzeń do obsługi przyłączanego wyświetlacza. Tu istnieje cała gama układów spełniająca nasze wymagania a przykładem takiego może być PCF8474 jako układ 8-bitowy lub PCF8575 jako układ 16-bitowy. Te elementy wykorzystują do komunikacji interfejs I2 C, o którym można powiedzieć, że nie jest rozwiązaniem banalnym.

Najprostsze rozwiązanie

Jednym z najprostszych rozwiązań jest wykorzystanie układu CD4094, który jest rejestrem przesuwającym z szeregowym wejściem i równoległym wyjściem. Bardzo istotną cechą tego układu jest to, że ma dodatkowy rejestr typu zatrzask, do którego po przesłaniu kompletu danych transmitowane dane można zatrzasnąć we wspomnianym rejestrze. W „zwykłym” układzie (przykładowo 74xx164) w trakcie przesuwania danych jego wyjścia zmieniają się wraz z przesuwającymi się danymi, co należy uznać za działania niepożądane. W CD4094 takie zjawisko nie występuje,
przesyłane dane „wchodzą po cichu” do rejestru i po zakończeniu operacji jego stan można przepisać do rejestru wyjściowego. Przykład rozwiązania pokazuje rysunek 2, gdzie do sterowania zespołem wyświetlacza wykorzystane są dwa układy CD4094: jeden odpowiedzialny jest za sterowanie segmentami wyświetlacza, drugi steruje włączaniem napięcia na anodach poszczególnych cyfr.

Rysunek 2

Sumarycznie minimalne zasoby „pinowe” do obsługi tego rejestru redukują się do trzech (rysunek 3): sygnał zegarowy, wejściowe dane szeregowe oraz sygnał strobu. Tego typu rejestry można łączyć kaskadowo (uzyskując zespoły o większej liczbie bitów), wyjście QS2 połączyć z wejściem D następnego układu.

Rysunek 3

Z punktu widzenia mikrokontrolera cały zespół wyświetlacza zajmuje trzy piny mikrokontrolera (w tym jest już ujęta niewielka redukcja, gdyż sygnał OE sterujący stanem wysokiej impedancji na wyjściu rejestru przesuwającego można wysterować na stałe, podając na to wejście jedynkę logiczną). Pozostałe wyprowadzenia są już niestety konieczne.

(…)

——– ciach! ——–

To jest tylko fragment artykułu, którego pełna wersja ukazała się w numerze styczniowym czasopisma Zrozumieć Elektronikę (ZE 1/2025). Pełną wersję czasopisma znajdziesz pod tym linkiem. Natomiast niepełna, okrojona wersja, pozwalająca zapoznać się z zawartością numeru ZE 1/2025 znajduje się tutaj.

Andrzej Pawluczuk
apawluczuk@vp.pl

 

Uwaga! Osoby, które nie są (jeszcze) stałymi Patronami ZE, mogą nabyć PDF-y z pełną wersję tego numeru oraz wszystkich innych numerów czasopisma wydanych od stycznia 2023, „stawiając kawę” (10 złotych za jeden numer czasopisma w postaci pliku PDF).
W tym celu należy kliknąć link (https://buycoffee.to/piotr-gorecki), lub poniższy obrazek
Postaw mi kawę na buycoffee.to
Następnie wybrać – Postaw kawę za:
– jeśli jeden numer ZE – 10 zł,
– jeśli kilka numerów ZE – Własna kwota. I tu wpisać kwotę zależną od liczby zamawianych numerów – wydań (N x 10 zł),
Wpisać imię nazwisko.
Podać adres e-mail.
Koniecznie zaznaczyć: „Chcę dodać dedykację/Wiadomość dla Twórcy” i tu wpisać, który numer lub numery ZE mam wysłać na podany adres e-mailowy. Jeśli ma to być numer z tym artykułem trzeba zaznaczyć, że chodzi o ZE 1/2025.
UWAGA!!! E-mail z linkiem do materiałów (Smash) wysyłamy zazwyczaj w ciągu 24 godzin. Czasem zdarza się jednak, że trafia do spamu. Jeśli więc nie pojawi się w ciągu 48 godzin prosimy sprawdzić w folderze spam, a ewentualny problem zgłosić na adres: kontakt@piotr-gorecki.pl.