Serwisy partnerskie:
Close icon
Serwisy partnerskie

Sprytne porady i sztuczki cyklu Ekscytacje Maxa dotyczące kodowania (15)

Article Image
Zanim wskoczymy do walki z zapałem i porzuceniem (i oczywiście zuchwałością), rozmawiałem ostatnio z moim kumplem Stevem Manleyem, który zajmuje tak ważne miejsce w treści artykułu powyżej. Nie jestem pewien, jak doszliśmy do tego konkretnego tematu, ale Steve nauczył mnie bardzo sprytnej sztuczki kodowania, o czym poniżej.

Osiągnąłem swój limit!

W moich programach bardzo często zdarza się, że mam zmienną całkowitą, której używam jako wskaźnika (lub indeksu) do liczby elementów w tablicy lub podobnej jednostce. Na przykład, powiedzmy, że mamy dziesięć elementów ponumerowanych od 0 do 9. Dla przejrzystości naszego kodu i ułatwienia jego modyfikacji w przyszłości, możemy zdefiniować NUM_E („liczba elementów”) jako 10, a MAX_E („maksymalny element”) jako 9. (Możemy również zdefiniować MIN_E jako 0, ale zazwyczaj używamy po prostu 0).

Załóżmy, że nasz wskaźnik liczby całkowitej nazywa się PtrP. Czasami chcemy zwiększyć ten wskaźnik, dodając 1 do jego bieżącej wartości. Oczywiście, gdy jego aktualna wartość wynosi 9, chcemy, aby jego zwiększona wartość „zawinęła się” do 0. W tym przypadku, pamiętając, że operator % modulo zwraca resztę z dzielenia liczb całkowitych i opierając się na naszych dyskusjach z poprzedniego spotkania (EdW 10/2024), przed dyskusją ze Stevem, mógłbym użyć instrukcji jak poniżej:

W innych przypadkach chcemy zmniejszyć nasz wskaźnik, odejmując 1 (lub dodając –1) do jego bieżącej wartości. W tym przypadku, gdy jego aktualna wartość wynosi 0, chcemy, aby jego zmniejszona wartość „zawinęła się” do 9. Ponownie, w oparciu o nasze wcześniejsze dyskusje, mógłbym użyć instrukcji jak poniżej:

Problem z pamięcią SRAM polega na tym, że jest ona ulotna, co oznacza, że zapomina swoją zawartość po odłączeniu zasilania od systemu. Pamięć Flash jest nieulotna, co oznacza, że pamięta swoją zawartość po odłączeniu zasilania, ale to właśnie w niej przechowywany jest główny program. Załóżmy, że zdecydujemy się napisać program, który mierzy temperaturę otoczenia raz na godzinę i chcemy zapisać te wartości w taki sposób, abyśmy mogli je później odzyskać, nawet jeśli zasilanie mikrokontrolera ulegnie awarii w dowolnym momencie. W takim przypadku jedną z opcji byłoby użycie pamięci EEPROM.

Podobnie, w przypadku 10-znakowych 21-segmentowych wyświetlaczy wiktoriańskich, które Steve i ja konstruujemy, chcemy użyć bajtowych wartości całkowitych bez znaku, aby śledzić różne ustawienia użytkownika, takie jak preferowany format daty (np. 0 = RRRR/MM/DD, 1 = MM/DD/RRRR, 2 = DD/MM/RRRR) i format czasu (np. 0 = 12-godzinny, 1 = 24-godzinny) oraz lokalizację (np. 0 = Wielka Brytania, 1 = USA) i sposób obsługi czasu letniego (np. 0 = ręcznie, 1 = automatycznie) i tak dalej. (FYI, „czas letni” jest nazywany „czasem letnim” (DST) w USA i „brytyjskim czasem letnim” (BST) w Wielkiej Brytanii).

Oczywiście w naszym głównym programie ustalimy wartości domyślne dla tych ustawień. Chcemy jednak również umożliwić użytkownikowi zmianę tych ustawień podczas działania programu i chcemy, aby nasz wyświetlacz pamiętał te zdefiniowane przez użytkownika ustawienia po odłączeniu zasilania od systemu. Ponownie, jednym ze sposobów osiągnięcia tego celu jest użycie pamięci EEPROM.

Należy pamiętać, że termin „bajt” odnosi się do wielkości 8-bitowej. Jak omówiliśmy w głównej części artykułu, mikrokontrolery Teensy 3.2 i 3.6 mają odpowiednio 2 kB (2,048 bajtów ponumerowanych od 0 do 2,047) i 4 kB (4,096 bajtów ponumerowanych od 0 do 4,095) pamięci EEPROM.

Aby przeczytać ten artykuł kup e-wydanie
Kup teraz
Firma:
AUTOR
Źródło
Elektronika dla Wszystkich luty 2025
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Generatory wysokiego napięcia
1/10 Dlaczego nie powinno się pracować z generatorami wysokiego napięcia w pobliżu sprzętu pomiarowego?
Oceń najnowsze wydanie EdW
Wypełnij ankietę i odbierz prezent
W tym numerze znajdziesz źródłową wersję artykułu publikowanego obok
Elektronika dla Wszystkich
luty 2025
Elektronika dla Wszystkich
Przejrzyj i kup
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"