Iteaduino Lite (LGT8F88A)
Iteaduino Lite to jeden z wielu dostępnych klonów Arduino, jednak bez wątpienia zasługuje on na kilka dodatkowych słów. Płytka została wyposażona w autorski, 8-bitowy układ LGT8F88A, który śmiało może konkurować z mikrokontrolerem ATmega88. Najważniejszą cechą tego układu jest obsługa 131 instrukcji, których 80% jest wykonywana w jednym cyklu zegara. Wielkim atutem jest również zdolność pracowania z częstotliwością 32MHz, a więc dwukrotnie większą niż tą, którą znamy chociażby z Arduino UNO z ATmega328. Producent chwali się również mniejszym zapotrzebowaniem na energię elektryczną oraz większą wydajnością niż konkurencja w tzw. pracy zegar-w-zegar. Sprawdzimy to, jednak na początek przyjrzyjmy się samej płytce.
Decydując się na Iteaduino Lite, otrzymujemy osobno płytkę oraz gniazda do samodzielnego zlutowania, dzięki czemu otrzymujemy układ wyprowadzeń znany z płytek Arduino. Całość możemy zasilić poprzez standardowe 7mm gniazdo D/C, napięciem z przedziału od 7V aż do 24V, które podawane jest na dalej przetwornicę. Za pomocą przełącznika możemy wybrać, jakim napięciem zasilmy nasz układ - może to być napięcie 3.3V lub 5V. Oczywiście nie mogło zabraknąć przycisku RESET oraz nieśmiertelnej diody D13 :)
Ogromną zaletą jest spora liczba miejsc, do których możemy przylutować dodatkowe goldpiny. Nie zapomniano również o wyprowadzeniu złącza ICSP oraz SWD, do którego wrócimy nieco później.
Iteaduino Lite możemy zaprogramować poprzez gniazdo micro USB, gdzie pomaga mostek USB - UART CP2102. Swoją drogą - jest doskonale obsługiwany przez jądro Linuksa. Użytkownicy Windowsa niestety będą zmuszeni doinstalować dodatkowy sterownik.
Instalacja Arduino IDE
Jak przystało na porządnego klona Arduino, możliwe jest jego programowanie za pośrednictwem Arduino IDE. Aby jednak było to możliwe, musimy zaopatrzyć się łatkę, która doda obsługę Iteaduino Lite. Po rozpakowaniu archiwum, musimy skopiować katalog Iteaduino_Lite/ do katalogu hardware/ naszej instalacji IDE. Po ponownym uruchomieniu, powinniśmy zobaczyć w menu Board nasze Iteaduino Lite.
Testy wydajnościowe
Pomimo zdolności pracy z częstotliwością 32MHz, Iteaduino Lite pracuje z częstotliwością o połowę niższą, aby zachować większą kompatybilność z 16MHz produktami Arduino. Pomimo tego LGT8F88A powinien być nieco szybszy od układu Atmegi.
Aby to sprawdzić, przeprowadziłem dwa testy. Pierwszy z nich obliczał liczbę Pi przy milionie iteracji, natomiast drugi polegał na cyklicznej zmianie stanu portu cyfrowego na przeciwny. Wyniki okazały się całkiem niezłe. Kalkulacja liczby Pi została wykonana szybciej o ponad 7%, a operacje I/O pozwalają na uzyskanie częstotlwiości 140 kHz.
Pi Calculate | I/O Speed | I/O Spped | Suma | |
Arduino UNO R3 @ 16 MHz | 56.455 s. | 8.740 s. | 114 kHz | 66.198 s. |
Iteaduino Lite @ 16 MHz | 52.307 s. | 7.160 s. | 140 kHz | 59.471 s. |
Jedynym mankamentem jest niestety ilość pamięci FLASH, która wynosi tylko 8kB.
Praca z częstotlwiością 32MHz
Aby zmusić nasze Iteaduino Lite do pracy z częstotliwością 32MHz musimy nieco zmodyfikować pliki w naszym Arduino IDE.
W pliku main.cpp znajdującym się w katalogy hardware/Iteaduino_Lite/cores/lgt8f/ w linii 12 zmieniamy zapis:
CLKPR = 0x01;
na
CLKPR = 0x00;
Dodatkowo w pliku boards.txt w katalogu hardware/Iteaduino_Lite/ w linii 17 zmieniamy zapis:
lgt88_mini.build.f_cpu=16000000L
na:
lgt88_mini.build.f_cpu=32000000L
Ponowna kompilacja i wykonanie naszego testu daje nam następujące wyniki:
Pi Calculate | I/O Speed | I/O Spped | Suma | |
Arduino UNO R3 @ 16 MHz | 56.455 s. | 8.740 s. | 114 kHz | 66.198 s. |
Iteaduino Lite @ 16 MHz | 52.307 s. | 7.160 s. | 140 kHz | 59.471 s. |
Iteaduino Lite @ 32 MHz | 26.150 s. | 3.580 s. | 279 kHz | 29.732 s. |
Wciąż pozostaje jeszcze konieczność modyfikacji źródeł do poprawnego działania timerów, ale to kiedy indziej.
LGT8F88A za 4 zole
Jeśli dobrze poszukamy, możemy dostać w Polsce układ LGT8F88A za 4zł. W dniu kiedy to piszę, jest to 2zł taniej niż w przypadku ATmega88. Dodatkowo odpada nam konieczność zakupu kwarcu, ponieważ LGT8F88A radzi sobie doskonale bez niego zarówno podczas pracy z częstotliwością 16 i 32 MHz.
LGT8F88A to również wbudowana obsługa 12-kanałowego czujnika dotyku, obciążalność portów I/O na poziomie 80mA oraz wewnętrzny oscylator 32kHz o dokładności 1%.
Układ ten jest również zgodny wyprowadzeniami z ATmega88. Poza drobnymi wyjątkami:
LGT8F88A jest zasilany na pinach 4 i 5, pozostałe linie zasilania, które występują w mikokontrolerze ATmega88 zostały zastąpione dodatkowymi portami I/O. Jeśli nasz projekt PCB posiada na nich zasilanie, wystarczy ich nie używać. Linie ADC7 oraz AREF mogą być obsługiwane przez podwójny tryb działania, co z kolei nie jest możliwe w przypadku ATmegi
To wszystko sprawia, że warto chociaż na chwilę pochylić się nad tym układem.
Jak wgrać bootloader Arduino?
Do wgrania bootloadera do LGT8F88A wymagany jest debugger SWDICE mkII. Wszystko co musimy zrobić, to podłączyć zasilanie do programowanego układu (debugger nie dostarcza napięcia) oraz linie SWC/SWD (piny 18 i 21). Nie zapomnijmy o połączeniu mas :) Wybieramy odpowiedni programator, a następnie opcję Burn Bootloader.
Po chwili powinniśmy zobaczyć stosowany komunikat o sukcesie operacji
Uwaga! Programator w moim przypadku nie był w stanie wgrać bootloadera przy podłączeniu do portu USB 3.0. Jednak wgrywanie wsadu przez programator działa bez problemu zarówno na USB 2.0 jak i USB 3.0.
LGT8F88A pinout
Reklama
Komentarze
Witam,
czy można używać standardowych bibliotek arduino np.: SPI ??
czy szkice Arduino kompilują się z LGT8F88A
jak jest z kompatybilnością programowania.
Faktycznie układ LGT8F88A jest bardzo zachęcającym bardziej że jest wersja 8F328 czyli 32K Flash
Pozdrawiam
Dzięki za artykuł. Mam jedną płytkę z tym uC w wersji "328" i jest bieda. PDF po chińsku, core Wavegat nie polecam, już się przejechałem, że coś tak banalnego jak LCD nie zadziałało, poszło z core od electrodragon. Ten debugger widziałem w Elty i na stronie itead.cc, ale jest już niedostępny, więc w razie czego nie wiem jak wgrać bootloader. Może coś z AVR do PDI podchodzi? Rosjanie już w sumie opublikowali jakieś schematy do programatora a la ArduinoISP - larduinoISP. Ale fajna ciekawostka.