You are on page 1of 4

Hit roku 2000

BASCOM College
Ćwiczenie 6
Zegar z magistralą I2C
Rys. 1

Dzisiaj rozpoczniemy ćwiczenia w nieco nie− Popatrzcie na rysunek 2, na którym został po− +5VDC i będzie funkcjonował zupełnie po−
typowy sposób: musimy trochę przerobić na− kazany schemat przerobionego fragmentu prawnie. Jednak po wyłączeniu zasilania
sze podstawowe narzędzie pracy, jakim jest płytki. Przed przeróbką dwa układy współpra− układ ten “straci pamięć” i po powtórnym uru−
płytka testowa AVT−2500. Nie, nie obawiajcie cujące z magistralą I2C zegar czasu rzeczywi− chomieniu rozpocznie zliczanie czasu od po−
się, nie ma na niej żadnych fatalnych błędów stego IC5 i pamięć szeregowa EEPROM IC2 czątku, czyli od ustawień zerowych. Czytelni−
(no może poza jednym malutkim, który zaraz mogły być dołączane za pomocą jumperów do cy, którzy mają zamiar wykonywać długo−
przy okazji naprawimy). Płytkę musimy nieco różnych wyprowadzeń procesora. Takie roz− trwałe eksperymenty z RTC lub nawet chwilo−
zmodyfikować z innego powodu: podczas jej wiązanie, aczkolwiek możliwe do zrealizowa− wo wykorzystywać płytkę testową w roli do−
projektowania nie wszystko zostało do końca nia na drodze programowej, nie miało naj− mowego zegara, mogą dokonać jeszcze jednej
przemyślane i zoptymalizowane. To dość nor− mniejszego sensu, a nawet zaprzeczało idei zmiany. Układ PCF8574 do poprawnej pracy
malne: dopiero czas pokazuje, jakie rozwiąza− magistrali I2C. Po przeróbce do transmisji da− wymaga podania napięcia zasilania nie mniej−
nia sprawdziły się w praktyce, a jakie musimy nych I2C potrzebne będą tylko dwa wyprowa− szego niż +5VDC. Jednak nawet po obniżeniu
zmienić. Zmiany na płytce będą drobne i pro− dzenia procesora: P3.5 i P3.7. Bardzo Was tego napięcia do 1V układ nie przestaje zliczać
ste do przeprowadzenia i polegać będą na przepraszam, że musieliście wykonać dodat− upływającego czasu, traci jedynie możliwość
przecięciu trzech ścieżek i dolutowaniu od kową pracę, ale nie wszystko przemyślałem do kontaktu z procesorem, pobierając za to prąd
spodu płytki dwóch dodatkowych zworek. końca podczas projektowania płytki. rzędu kilku mikroamperów. Wynika z tego, że
Popatrzcie na rysunek 1, na którym zosta− Istnieje jeszcze jedna możliwość modyfi− warto dodać na naszej płytce dodatkowe
ła pokazana od strony lutowania mozaika kacji naszej płytki, o której można powiedzieć źródło zasilania awaryjnego dla układu
ścieżek naszej płytki testowej. Kolorem niebie− że jest “nadobowiązkowa” i dotyczy sposobu PCF8683, którym może być dowolnie mała
skim zaznaczone są zworki już istniejące na zasilania “bohatera” naszego dzisiejszego bateryjka 1,5V. Na rysunku 2b został pokaza−
płytce, a kolorem zielonym dwa dodatkowe ćwiczenia: zegara czasu rzeczywistego ny schemat zmian, jakie musimy wykonać na
połączenia, które za chwilę wykonamy. Nato− PCF8583. Układ ten zasilany jest na płytce
miast czerwone strzałki wskazują miejsca, zupełnie prawidłowo: z szyny zasilającej Rys. 2
w których musimy przeciąć ścieżki. Przecięcia
w punktach oznaczonych jako 1 i 2 umożliwią
wykonanie nowych połączeń, a przecięcie
ścieżki w punkcie 3 pozwoli przy okazji napra−
wić drobny błąd, który powstał w procesie pro−
dukcyjnym pierwszej serii płytek AVT−2500.
Zwarty na stałe został na niej jumper JP4, unie−
możliwiając w ten sposób odłączenie wypro−
wadzenia SCL układu IC5 od magistrali I2C.
Po przecięciu ścieżek musimy jeszcze
wykonać dodatkowe połączenia, zaznaczone
na rysunku kolorem zielonym. Połączenia
wykonujemy odcinkami kynaru lub zwykłe−
go przewodu w izolacji, lutując je do punk−
tów zaznaczonych na rysunku zielonymi
kropkami. Po sprawdzeniu poprawności wy−
konania przeróbek, wkładamy płytkę z po−
wrotem do obudowy.
O co właściwie chodziło i co osiągnęliśmy
w wyniku dokonania tych prostych przeróbek?

Elektronika dla Wszystkich 23


BASCOM
naszej płytce testowej, aby zapewnić nieprze− Print "Pod adresem: " ; Adres ; " nie znaleziono układu!" śmy jej na poprzedniej
rwane odliczanie czasu przez zegar RTC. Do− Cls lekcji. Zajmijmy się
Lcd "Brak ukladu: " ; Adres
datkowe połączenia i elementy zostały zazna− End If więc zegarem czasu
czone kolorem czerwonym. Zmiany sprowa− Wait 1 rzeczywistego. Układ
dzają się do dodania do układu dwóch dowol− Next Adres PCF8583 jest jednym
Print "Koniec przeszukiwania"
nych diod, np. 1N4148 i bateryjki. Jako bate− Cls z najpopularniejszych
rię proponowałbym zastosować miniaturowe Lcd "Koniec" typów zegarów stoso−
ogniwko typu AAA, umieszczone pod wy− End wanych w systemach
świetlaczem LCD. mikroprocesorowych
Jeszcze jedna, ostatnia prośba. Obojętne, Program testujący magistralę I2C wysy− i komputerowych. Zaprojektowany został
czy dokonaliśmy zmiany w systemie zasilania ła komunikaty jednocześnie na wyświe− już dawno temu przez firmę PHILIPS, ale do
zegara czasu rzeczywistego, czy nie, już teraz − tlacz LCD umieszczony na płytce testowej tej pory nie ma sobie równych wśród mniej
zanim zaczniemy czytać dalszą część tego arty− oraz do emulatora terminala w pakiecie lub bardziej doskonałych jego odpowiedni−
kułu − włączmy zasilanie naszej płytki testowej. BASCOM. ków. Wyjaśnijmy sobie najpierw termin: ze−
Ogromnym ułatwieniem w wykonywaniu gar czasu rzeczywistego RTC
dzisiejszych ćwiczeń będzie fakt, że wszyst− (Real Time Clock).
kie je możemy wykonać wyłącznie w emula− Układ RTC jest przede wszy−
cji sprzętowej, bez konieczności programo− stkim wbudowanym w strukturę
wania procesora. Jest to jedna z zalet trans− układu scalonego szeregiem licz−
misji I2C: szybkość transmisji nie jest w ża− ników. Ich zadaniem jest jedynie
den sposób ograniczona “od dołu” i narzuca− zliczanie upływającego czasu,
na jest przez urządzenie nadrzędne, do które− począwszy od setnych części se−
go “niewolnicy” muszą się bezwzględnie do− kundy do lat.
stosować. W naszym przypadku urządzeniem Zliczanie czasu nie jest jedyną
nadrzędnym będzie komputer, który za po− funkcją pełnioną przez układu
średnictwem programu BASCOM i układu Rys. 2b RTC. Muszą one także umożli−
emulatora sprzętowego “udaje”, że jest za− wiać ustawienie stanu początko−
programowanym procesorem. wego wszystkich liczników.
Na naszej płytce testowej umieszczone są Taka funkcja jest absolutnie
dwa układy mogące współpracować z magi− niezbędna, ponieważ nie istnie−
stralą I2C: zegar czasu rzeczywistego je zegar idealny i wskazania
PCF8583 i pamięć szeregowa PCF8582 każdego czasomierza musimy
(AT24C04). Wielu z Was ma także do dyspo− niejednokrotnie korygować.
zycji układ klawiatury szesnastkowej, także Kolejnymi funkcjami rea−
sterowany “I kwadratem”. lizowanymi przez układy RTC
Cóż jednak z tego, że mamy te układy są rozbudowane układy budzi−
umieszczone na płytce, jeżeli nie wiemy ków i timerów. Możemy tu
o nich najważniejszego: jakie są ich adresy? wykorzystywać najróżniejsze
Z wykładu wiemy, że aby “dobrać się” do ja− kombinacje: alarmy pracujące
kiegokolwiek układu współpracującego w trybie codziennym, tygo−
z I2C, musimy znać jego adres. A zatem mu− dniowym, miesięcznym lub
simy chyba zajrzeć do kart katalogowych .... nawet rocznym.
nie, mamy też inne wyjście. Pamiętajmy Rys. 3 Układy RTC najróżniejszych typów znaj−
o naszej zasadzie: praktyka, praktyka i je− dują się w każdym bez wyjątku komputerze
szcze raz praktyka i spróbujmy doświadczal− W efekcie działania tego prostego progra− klasy PC, w sprzęcie RTV wyposażonym
nie ustalić adresy obydwóch wymienionych mu uzyskaliśmy informację (patrz rysunek 3), w funkcje programowania (np. w magnetowi−
układów. Napiszmy sobie krótki program że w naszym systemie znajdują się dwa ukła− dach) i w innych urządzeniach. Bywają też po−
i po skompilowaniu uruchommy w emulacji dy mogące współpracować z magistralą wodem poważnych problemów, o których wie−
sprzętowej. I2C i że ich adresy bazowe to 160 i 162. Mo− le mówiono nie tak dawno temu. Mam tu na
glibyśmy teraz zidenty− myśli “problem roku 2000”, do której to daty
$sim
Config Lcd = 16 * 1a 'konfiguracja wyświetlacza LCD fikować każdy z ukła− RTC starszych komputerów nie były przysto−
Dim Adres As Byte 'deklaracja zmiennej ADRES dów przez proste wyję− sowane i traktowały ją jako rok ... 1900!
Print "Start poszukiwania" 'wyświetlenie komunikatu wstępnego cie jednego z nich Znamy już adres bazowy zegaru PCF
Cls 'wyczyść ekran wyświetlacza
Lcd "Start" 'komunikat wysyłany na LCD z podstawki, ale szkoda 8583, ale jak dobrać się do przechowywanej
Cls 'wyczyść ekran wyświetlacza na to czasu. Powiem w nim informacji?
For Adres = 150 To 200 Step 2 'przeszukaj 50 adresów Wam, że układem o ad− Schemat blokowy kostki PCF8583 został
I2cstart 'inicjalizacja magistrali I2C
I2cwbyte Adres 'wyślij na magistralę zapytanie resie 162 jest PCF8583, pokazany na rysunku 4. Wiemy zatem, pod
po kolejny adres a pamięć szeregowa jakim adresem wewnętrznym mamy szukać
I2cstop 'koniec transmisji posiada adres o 2 potrzebnych nam informacji o aktualnym
If Err = 0 Then 'jeżeli wywoływane urządzenie
odpowiedziało, to: mniejszy. czasie. Aby np. odczytać aktualną godzinę
Print "Układ pod adresem: " ; Adres ; " !" 'wydrukuj Od czego więc za− i minutę, musimy wykonać następujące
komunikat o znalezieniu układu pod danym adresem
Cls 'wyczyść ekran wyświetlacza
czniemy? O pamięci czynności:
Lcd "Uklad pod: " ; Adres 'komunikat o znalezieniu szeregowej EEPROM 1. Zainicjalizować transmisję I2C;
układu pod danym adresem mamy już pewne poję− 2. Podać na magistralę adres układu,
Else
cie, ponieważ używali− z którym chcemy nawiązać łączność;

24 Elektronika dla Wszystkich


BASCOM
3. Poinformować układ, z którego rejestru ma− dzie BCD większość z Was z pewnością słysza−
MAKEBCD [wartość] przetwarza podaną wartość,
my zamiar korzystać; ła i wiecie, że jest to “okrojony” kod szesnast− która musi być liczbą ośmiobitową, na jej reprezentację
4. Poinformować układ, czy mamy zamiar kowy, będący binarną reprezentacją cyfr od 0 w kodzie BCD
odczytywać, czy zapisywać dane; do 9. Takim kodem sterowane są między inny− MAKEDEC [wartość] przetwarza wartość podaną
w kodzie BCD na jej postać w kodzie dziesiętnym
5. Odczytać potrzebne informacje; mi dekodery wyświetlaczy siedmiosegmento−
6. Ukazać odczytane dane na wyświetlaczu lub wych. Jednak w przypadku naszego zegara Pamiętajmy jednak, że nie należy nigdy
emulatorze terminala. sprawa przedstawia się nieco inaczej: kod BCD wierzyć komuś wyłącznie na słowo, jeżeli ma−
A więc, do roboty! Napiszmy sobie nastę− ma tu postać liczby nie cztero− ale ośmiobito− my empiryczną możliwość weryfikacji gło−
pujący programik, którego zadaniem będzie wej i zawiera informacje o wartości dwóch cy− szonych przez niego prawd. A zatem, piszemy
cykliczne odczytywanie danych z rejestru se− fr dziesiętnych, np. dziesiątek i pojedynczych sobie króciutki programik i po skompilowaniu
kundowego, minutowego i godzinnego ukła− minut. Najprościej wyjaśnić to na przykładzie. uruchamiamy go w symulacji programowej:
du PCF8583. Po skompilowaniu program Weźmy na przykład liczbę 57, składającą się
uruchamiamy w emulacji sprzętowej. z dwóch cyfr: 5 i 7. A zatem binarną reprezen− Dim X As Word
X = 99
tacją dziesiątek w tej X = Makebcd(x)
$sim 'praca w emulacji sprzętowej liczbie będzie 0101, Print "134 w kodzie BCD= " ; X
Config Sda = P3.5 'konfiguracja linii SDA magistrali I2C Print X ; " w kodzie BCD po konwersji na postać
Config Scl = P3.7 'konfiguracja linii SCL magistrali I2C a jednostek 0111. A za− dziesiętną= ";
Dim M As Byte 'deklaracja zmiennej określającej minuty tem w kodzie BCD, sto− X = Makedec(x)
Dim S As Byte 'deklaracja zmiennej określającej sekundy sowanym w naszym ze− Print X
Dim H As Byte 'deklaracja zmiennej określającej godziny
Do garze, ta liczba będzie
I2cstart 'inicjalizacja magistrali I2C miała postać: 0101 Wynik działania tego programu, pokazany
I2cwbyte 162 'podanie adresu PCF8583 dla zapisu “sklejone” z 0111, czyli na rysunku 6, świadczy dobitnie, że polece−
I2cwbyte 2 'wybranie drugiego rejestru (sekund)
I2cstart 'powtórna inicjalizacja magistrali I2C 01010111 (BCD) . Praw− nia konwersji kodów działają poprawnie.
I2cwbyte 163 'podanie adresu PCF8583 dla odczytu danych da, że proste? Wracajmy jednak do naszego zegara, którego
I2crbyte S , Ack 'odczyt sekund z potwierdzeniem transmisji
I2crbyte M , Ack 'odczyt minut z potwierdzeniem transmisji
Rzeczywiście, zasa− budowę dopiero rozpoczęliśmy.
I2crbyte H , Nack 'odczyt godzin bez potwierdzania transmisji da przedstawiania liczb Jak na razie uzyskaliśmy możliwość po−
I2cstop 'koniec transmisji I2C dwucyfrowych w ko− prawnego odczytywania rejestrów układu
'wyślij na ekran terminala:
Print "Godzina: " ; H ; " Minuta: " ; M ; " Sekunda: " ; S
dzie BCD jest dość PCF8583 i to tylko tych, w których zapisana
Loop prosta, ale przeliczenie jest informacja o aktualnej godzinie, minucie
tak przedstawio− i sekundzie. Z pewnością zwróciliście uwagę
nych danych na na fakt, że wyświetlanie sekund odbywa się
kod dziesiętny dziwnie nieregularnie. Zmiana wartości na−
z pewnością ta− stępuje, nie jak można by było się spodzie−
kim nie będzie. wać, co sekundę, ale w zależności od szybko−
Prawdę mówiąc, ści procesora komputera, co kilka sekund.
nie bardzo wie− Jest to zjawisko całkowicie normalne i wyni−
działbym, jak kające ze spowolnienia działania programu
się do tego za− w emulacji sprzętowej. Gdybyśmy tak napi−
brać “z marszu”, sanym programem zaprogramowali procesor,
ale na szczęście to zjawisko to ustąpiłoby całkowicie. Nie są−
z pomocą przy− dzę jednak, aby było warto programować pro−
chodzi nam ko− cesor na tym etapie pracy. Nasz program jest
lejny “fajer− jeszcze “w powijakach” i jak na razie może
werk” języka MCS BASIC. Aby otrzymać służyć wyłącznie celom szkoleniowym.
Rys. 4 prawidłowe wyświetlanie aktualnego czasu, Zobaczmy teraz, “co słychać” w wy−
wystarczy dodać do naszego programu, bez− ższych rejestrach układu RTC, tam, gdzie po−
Rezultaty działania naszego programu po− pośrednio przed wysłaniem danych do termi− winny być zapisane informacje o aktualnej
kazane są na rysunku 5. Niestety, kompletna nala, tylko jedną linijkę: dacie. Do naszego programu dopisujemy na−
klapa! Ta godzina 20 to jeszcze by mogła być, stępujące linijki:
ale 87 minut? I na domiar złego jeszcze te 68 H = Makedec(h) : M = Makedec(m) : S = Makedec(s)
sekund! O co tu chodzi, błąd w programie czy Dim Day As Byte 'deklaracja zmiennej
też może ci projektanci od Philipsa coś sknoci− Efektem działania polecenia MAKEDEC określającej dzień miesiąca
Dim Month As Byte 'deklaracja zmiennej
li w układzie? Ponieważ nic mądrego na razie jest dokonanie przez program automatycznej
określającej miesiąc roku
nie możemy wymyślić, to pozostaje nam je− konwersji liczb z kodu BCD na czytelną dla
szcze jedna droga ratunku: zajrzeć do karty ka− człowieka postać dziesiętną. Jak BASCOM to na początku programu,
talogowej układu PCF8583. No i co się okazu− robi? Nie wiem i nie potrzebuję wiedzieć!
je? Jeszcze raz sprawdza się stara maksyma, że Wiem tylko, że można to zrobić jeszcze I2crbyte Day , Ack 'odczyt dni
jeżeli wszystkie metody uruchomienia jakiegoś prościej jedynie modyfikując jedną linię I2crbyte Month , Nack 'odczyt miesięcy
układu zawiodły, to należy ... zajrzeć do in− programu:
strukcji, w której jak byk jest napisane: “... po odczycie czasu
Print "Godzina: " ; Bcd(h) ; " Minuta: " ; Bcd(m) ; " Sekunda:
events are stored in BCD format...”. A więc " ; Bcd(s)
wszystko jasne, przed wyświetleniem otrzyma− Day = Makedec(day) : Month = Makedec(month)
nych z RTC danych należy je przekształcić Zatrzymajmy się na chwilę przy polece− Print "Dzień: " ; Day ; " Miesiąc: " ; Month
z formatu BCD na normalną, zrozumiałą dla niach służących konwersji liczb na różne for−
człowieka postać dziesiętną. Tylko jak to zrobić maty, ponieważ w przyszłości będą nam one i nie zapominając o zmianie NACK na ACK
i co to właściwie jest ten format BCD? O ko− z pewnością bardzo potrzebne. w linii odczytu godzin:

Elektronika dla Wszystkich 25


BASCOM
z Was (malkontenci zawsze się znaj− Rys. 7
I2crbyte H , Ack 'odczyt godzin dą), to zapraszam do dalszej części
ćwiczenia.
Po wykonaniu tych drobnych zmian, po− Wiemy, jak odczytywać czas z ze−
wtórnie uruchamiamy nasz program w emu− gara RTC i najwyższa pora, aby dowie−
lacji sprzętowej. Jak widać na rysunku 7, re− dzieć się, jak można nasz zegarek zsyn−
zultat jest już nieco lepszy: na ekranie mamy chronizować z realnym czasem otacza−
już nie tylko pełną informację o aktualnym jącego nas świata. Okazuje się, że jest
czasie, ale i o dacie. Tylko że te liczby jakieś to równie proste, jak odczytywanie da−
dziwne: dlaczego mamy miesiąc 1, dzień 1 nych z PCF8583. Napiszmy sobie na−
i do tego 0 godzin, 40 minut i jakieś tam se− stępujący program, który następnie do−
kundy? Odpowiedź na to pytanie jest zaska− damy do napisanego już wcześniej, za−
kująco prosta: ponieważ zasilanie płytki te− raz po deklaracji zmiennych:
stowej zostało wyłączone i ponownie włą−
czone właśnie 40 minut “z hakiem” temu! Input "Podaj miesiąc: " , Month

Input "Podaj dzień miesiąca: " , Day


Rys. 5 Input "Podaj godzinę: " , H

Input "Podaj minutę: " , M

Month = Makebcd(month) 'konwersja

miesiąca do formatu BCD

Day = Makebcd(day) 'konwersja

dnia do formatu BCD

H = Makebcd(h) 'konwersja godziny

doformatu BCD

M = Makebcd(m) 'konwersja minut

do formatu BCD

S = 0 'wyzerowanie sekund
Rys. 8
I2cstart 'inicjalizacja magistrali I2C

I2cwbyte 162 'podanie adresu Po skompilowaniu uruchamiamy nasz


PCF8583 do zapisu program, jak zwykle w emulacji sprzętowej.
I2cwbyte 0 'wybranie pierwszego Po starcie program zaczyna wypytywać nas
(kontrolnego) rejestru o czas i datę, które podajemy z klawiatury
I2cwbyte 8 'ustawienie zapisu
komputera. Następnie dane zostają wprowa−
dzone do rejestrów układu RTC i od tego mo−
rejestru daty
mentu nasz zegar rozpoczyna prawidłowe
I2cstop 'koniec transmisji
zliczanie upływającego czasu.
I2cstart 'inicjalizacja magistrali I2C Powyższe przykłady nie wyczerpują wszyst−
I2cwbyte 162 'ustawianie trybu zapisu kich możliwości, jakie oferuje sterowany kontro−
I2cwbyte 2 'wybranie drugiego lą I2C układ PCF8583. Nawet nie wspomnieli−
rejestru (sekund) śmy o ustawianiu roku, dnia tygodnia, ani o wy−
korzystywaniu timerów i budzika. Nie możemy
I2cwbyte S 'zapis sekund
Rys. 6 jednak poruszyć wszystkich tematów, bo co zo−
I2cwbyte M 'zapis minut
stałoby dla Was, do samodzielnej pracy? Sądzę,
I2cwbyte H 'zapis godzin
Mamy zatem zegar, ale o “rewelacyjnych” że zarówno temat lekcji, jak i przerabiane ćwicze−
parametrach użytkowych. Potrafi on tylko I2cwbyte Day 'zapis dnia nia zachęciły Was do poznawania sposobu obsłu−
odliczać czas, jaki upłynął od ostatniego włą− I2cwbyte Month 'zapis miesiąca gi urządzeń współpracujących z magistralą I2C.
czenia zasilania płytki testowej. Gdyby jed− I2cstop 'koniec transmisji Zbigniew Raabe
nak takie urządzenie nie zadowalało kogoś e−mail: zbigniew.raabe@edw.com.pl

Ciąg dalszy ze strony 22 Jednak składnia polecenia I2CRECEIVE Na tym możemy zakończyć teoretyczne
Warto zauważyć, że polecenie I2CSEND może być znacznie bardziej rozbudowana, rozważania na temat magistrali I2C i spo−
nie wymaga wstępnego inicjalizowania ma− a to samo polecenie może służyć zarówno do sobu jej obsługiwania z poziomu języka
gistrali, które wykonywane jest samoczyn− odbierania danych z magistrali I2C, jak i do MCS BASIC. Zapraszam Was teraz do
nie. Niestety, większa uniwersalność tego ich wysyłania: wykonania kilku ćwiczeń, które dadzą
polecenia okupiona jest pewnym zwiększe− I2CRECEIVE [adres, wartość, liczbę baj− nam rzecz najważniejszą: praktyczną wie−
niem długości kodu wynikowego. tów do wysłania, liczbę bajtów do odebrania] dzę o sposobach wykorzystywania magi−
Poleceniem komplementarnym do Na przykład: strali I2C.
I2CSEND jest I2CRECEIVE. Składnia tego Dim Wartosc(10) As Byte
polecenia i jego możliwości są bardzo podob− Wartosc(1) = 1
ne do I2CSEND. W najprostszej postaci uży− Wartosc(2) = 3 Zbigniew Raabe
I2creceive adres urządzenia, Wartosc(), 2, 1
wamy tego polecenia do odczytywania jednej 'wysłanie na magistralę e−mail: zbigniew.raabe@edw.com.pl
wartości z urządzenia podporządkowanego: I2C dwóch bajtów i odebranie 'jednego bajtu Konsultacje: Sławomir Surowiński
I2CRECEIVE [adres, wartość] Print Wartosc(1) 'wydruk odebranej wartości e−mail: slawomir.surowinski@ep.com.pl

26 Elektronika dla Wszystkich

You might also like