Elektroda.pl
Elektroda.pl
X
Computer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino NANO Every, test, uruchomienie, problemy...

TechEkspert 04 Wrz 2019 19:09 4197 30
  • Arduino NANO Every, test, uruchomienie, problemy...
    Nowa płytka Arduino NANO Every wykorzystuje mikrokontroler ATMega4809 AVR, w porównaniu z wcześniejszą wersją nano gdzie zastosowany był ATmega328. Na PCB wersji Every nie znajdziecie rezonatora kwarcowego, ze względu na wbudowany w mikrokontroler generator sygnału zegarowego do 20MHz. Otrzymujemy większą ilość pamięci flash - 48KB, więcej RAM - 6KB, oraz mniej EEPROM - 256B, zakres napięć zasilających płytkę 6-21V. Komunikację USB zapewnia ARM ATSAMD11D14A. Wersja NANO Every pracuje z poziomami napięć 5V podobnie jak w poprzedniej wersji nano. PCB umożliwia wlutowanie złącz glodpin, lub bezpośredni montaż powierzchniowy (SMT) na większej płytce (podobnie jak np. wiele modułów RF). Opisy wyprowadzeń dostępne są na spodniej stronie płytki, co może nie być wygodne np. na płytce stykowej. Do prób z modułem została wykorzysta wersja 1.8.9 środowiska Arduino.

    Arduino NANO Every, test, uruchomienie, problemy...
    Arduino NANO Every, test, uruchomienie, problemy...

    Do rozpoczęcia pracy z NANO Every uruchamiamy menadżer płytek:
    Narzędzia->Płytka->Menadżer Płytek
    Wyszukujemy "every" i wybieramy pakiet: Arduino megaAVR Boards by Arduino.

    Arduino NANO Every, test, uruchomienie, problemy...

    W szkicu wybieramy płytkę Arduino NANO Every, oraz port COM (emulowany na USB), który pojawił się po podłączeniu płytki:
    Arduino NANO Every, test, uruchomienie, problemy...

    Znajdziemy także opcję emulacji rejestrów ATmega328P, czyżby była to zapowiedź możliwych problemów z kompatybilnością?
    Arduino NANO Every, test, uruchomienie, problemy...

    Na początek prosty test komunikacji z płytką i testowe miganie LED - test wypadł pomyślnie:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Wstępne próby pokazały problemy z uruchomieniem bibliotek typu TimerOne, MsTimer2, czy też próby ręcznej modyfikacji rejestrów timerów T0, T1, T2 znanych z wersji Arduino nano np. rejestru OCR1A itp. Osobiście w Arduino Nano przyzwyczaiłem się do timerów, które pozwalały na deterministyczne wyzwalanie przerwań, pomiar czasu, zliczanie impulsów lub generowanie przebiegów.

    Jeżeli porównacie pliki iom328p.h i iom4809.h zlokalizowane w katalogu:
    \arduino-1.8.9\hardware\tools\avr\avr\include\avr
    to okaże się, że w ATMega4809 mamy do dyspozycji inny zestaw rejestrów, w tym rejestry RTC:
    http://ww1.microchip.com/downloads/en/AppNotes/TB3213-Getting-Started-with-RTC-90003213A.pdf

    Wersja NANO Every posiada 5 wyjść PWM ( w poprzedniej wersji nano dostępne było 6 wyjść PWM), różnica wstępuje dla wyjścia D11 - brak PWM w wersji Every.

    W wersji NANO Every znajdziemy także więcej ustawień dotyczących napięcia odniesienia dla ADC:
    https://www.arduino.cc/reference/en/language/functions/analog-io/analogreference/

    Spróbujmy zrobić coś bardziej skomplikowanego, obsługa karty SD i zapis próbek z wejścia analogowego, zobaczymy czy nie wystąpi jakiś problem z kompatybilnością bibliotek. Do cyklicznego zbierania próbek z ADC wykorzystamy przerwania generowane przez RTC. Mamy do dyspozycji więcej pamięci RAM, więc wykorzystamy dwa bufory naprzemiennie wypełniane danymi z ADC, a następnie zapisywane do pliku na karcie SD. Tym sposobem powstanie rejestrator wartości napięcia na wejściu ADC, z zapisem danych do pliku na karcie SD. Napięcie będziemy próbkowali dość wolno, 256 razy na sekundę. Dla testu zostało wybrane jedno z dostępnych napięć odniesienia "INTERNAL4V3" więc możemy rejestrować napięcia z zakresu 0-4.3V, z teoretyczną rozdzielczością 10b.

    Płytka pracuje z napięciem 5V, więc potrzebujemy adapter karty SD dopasowujący poziomy napięć i dostarczający zasilanie 3.3V dla karty.
    Łączymy wyprowadzenia karty SD z wyprowadzeniami modułu:
    CS z D10
    DI z MOSI
    DO z MISO
    SLCK z SCK

    Arduino NANO Every, test, uruchomienie, problemy...

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Podajemy napięcie zmienne sinusoidalne 10Hz 4.3Vpp na wejście A0, a dane zapisane w pliku na karcie SD możemy zwizualizować np. w programie audio Audacity. Importujemy dane raw (16bit, big-endian, 1 kanał). Po znormalizowaniu widoczna jest sinusoida:

    Arduino NANO Every, test, uruchomienie, problemy...

    Prosty system rejestracji zmian napięcia działa:

    Arduino NANO Every, test, uruchomienie, problemy...

    Wbudowane RTC zachęciło mnie do podłączenia ENC28J60 oraz próby zsynchronizowania czasu przez Ethernet z wykorzystaniem NTP, niestety biblioteka UIPEthernet, nie chciała współpracować z płytką NANO Every.

    Podsumowując: ciekawy i tani moduł wykorzystujący nowy mikrokontroler, który powstał po połączeniu Atmel i Microchip. Otrzymujemy nowe możliwości, ale także problemy z kompatybilnością z poprzednią wersją nano. Na PCB znajdziemy konwerter USB<->UART, który po zmianie firmware może stać się innym urządzeniem HID USB. Nowa forma płytki pozwala na montaż SMT bez wykorzystania złączy szpilkowych goldpin. Zobaczymy czy środowisko Arduino rozwinie się tak aby zapewnić kompatybilność NANO Every z poprzednim modelem nano, czy też muszą powstać nowe wersje bibliotek i nie przeniesiemy kodu z nano na NANO Every.

    Co myślicie o Arduino NANO Every?

    Arduino NANO Every, test, uruchomienie, problemy...

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    TechEkspert
    Redaktor
    Offline 
    Specjalizuje się w: elektronika, mikrokontrolery, rozwiązania it
    TechEkspert napisał 2681 postów o ocenie 1796, pomógł 6 razy. Jest z nami od 2014 roku.
  • Computer Controls
  • #2
    szymon122
    Poziom 38  
    TechEkspert napisał:
    Wbudowane RTC zachęciło mnie do podłączenia ENC28J60 oraz próby zsynchronizowania czasu przez Ethernet z wykorzystaniem NTP, niestety biblioteka UIPEthernet, nie chciała współpracować z płytką NANO Every.

    Symulacja rejestrów 328 nie pomogła?
  • Computer Controls
  • #3
    TechEkspert
    Redaktor
    Sęk w tym, że to nic nie dało, nawet trochę to było rozczarowujące, ale daję szansę tej płytce, zobaczymy co czas przyniesie.
    Coraz więcej pytań o te niekompatybilności: https://forum.arduino.cc/index.php?board=137.0
    więc jest szansa że coś się ruszy...
  • #5
    leonow32

    Poziom 30  
    A tutaj płytka od Microchipa z ATmegą4809 i wbudowanym debuggerem za 19,28zł netto. Nie dość, że taniej to jeszcze wszystkie piny wyprowadzone
    https://pl.farnell.com/microchip/dm320115/cur...ano-eval-board-8-bit/dp/2932048?st=atmega4809

    ATmega328 i ATmega4809 to przepaść technologiczna i dobre 15 lat rozwoju. Wszystkie peryferia są zrobione na nowo (a raczej skopiowane z XMEGA).

    Arduino NANO Every, test, uruchomienie, problemy...
  • #6
    khoam
    Poziom 33  
    leonow32 napisał:
    A tutaj płytka od Microchipa z ATmegą4809 i wbudowanym debuggerem za 19,28zł netto.

    Do tego jeszcze wypadałoby dokupić Curiosity Nano Base w cenie 86,48 zł netto, aby można było sensownie używać tej pytki jako testowej/prototypowej.
  • #7
    leonow32

    Poziom 30  
    khoam napisał:
    leonow32 napisał:
    A tutaj płytka od Microchipa z ATmegą4809 i wbudowanym debuggerem za 19,28zł netto.

    Do tego jeszcze wypadałoby dokupić Curiosity Nano Base w cenie 86,48 zł netto, aby można było sensownie używać tej pytki jako testowej/prototypowej.

    A po co?
  • #8
    Janusz_kk
    Poziom 22  
    No własnie "khoam" po co? do arduino nano też kupujesz "bazówke" czy wtykasz do stykówki.
  • #9
    khoam
    Poziom 33  
    Janusz_kk napisał:
    No własnie "khoam" po co? do arduino nano też kupujesz "bazówke" czy wtykasz do stykówki.

    W wypadku Nano nie muszę dokładać mostka USB-UART.
    Oczywiście uwaga ta donosi się do programowania w środowisku Arduino (co jest tematem tego artykułu) oraz do tych, co nie używają Atmel Studio czy Microchip MPLAB.
  • #11
    khoam
    Poziom 33  
    leonow32 napisał:
    ale w płytce od Microchipa jest USB-UART

    To napisz jeszcze proszę, co trzeba zrobić, aby móc korzystać z monitora portu szeregowego np. w Arduino IDE.
  • #12
    fotomh-s
    Poziom 20  
    TechEkspert napisał:
    Komunikację USB zapewnia ARM ATSAMD11D14A

    Czyli układ który robi za przejściówkę USB<-->UPDI ma większą moc obliczeniową od tej megi...

    Skoro i tak wsadzają tam ARMa to czemu w ogóle robią taką płytkę? Nie lepiej zrobić płytkę na jakimś ARMie i zostawić AVRa? Nie rozumiem tego podejścia upartego osła że wszędzie musi być AVR, nawet jeśli nie obejdzie się bez ARMa. To tak jakby w zrobić samolot z APU które przewyższa mocą wszystkie silniki w tej maszynie.
  • #13
    khoam
    Poziom 33  
    Dużo ciekawszą alternatywą dla NANO Every jest płytka Teensy 4.0 z procesorem NXP iMXRT1062 (ARM Cortex-M7).
    Moduł ten ma dobre wsparcie ze strony popularnych bibliotek "arduinowych" - zdecydowanie lepsze niż NANO Every.

    @TechEkspert Biblioteka TimerOne wspiera Teensy 4.0 :)

    Arduino NANO Every, test, uruchomienie, problemy...

    Dodano po 35 [sekundy]:

    fotomh-s napisał:
    Skoro i tak wsadzają tam ARMa to czemu w ogóle robią taką płytkę?

    Może te ATSAMD11D14A kiepsko się sprzedają? ;)
  • #14
    fotomh-s
    Poziom 20  
    Teensy 4.0 strasznie marnotrawi piny. Ten układ ma dużo GPIO z tego co się orientuję, ale na płytce wyprowadzono tylko część.
    To zły nawyk który jest obecnie coraz bardziej popularny.
  • #16
    Janusz_kk
    Poziom 22  
    fotomh-s napisał:
    Skoro i tak wsadzają tam ARMa to czemu w ogóle robią taką płytkę? Nie lepiej zrobić płytkę na jakimś ARMie i zostawić AVRa? Nie rozumiem tego podejścia upartego osła że wszędzie musi być AVR,


    No i co z tego, że arm-y są lepsze skoro x-lat temu jak wchodziły avr-y to były drogie i niedostępne. Ja nie mam zamiaru uczyć się peryferii, asemblera tylko dlatego, że będę miał 32 bity do dyspozycji, bo to co mi oferują szczególnie nowe atmegi i atxmegi w zupełności mi wystarcza.
  • #17
    khoam
    Poziom 33  
    fotomh-s napisał:
    Nie rozumiem tego podejścia upartego osła że wszędzie musi być AVR, nawet jeśli nie obejdzie się bez ARMa

    Na szczęście nie wszędzie. W modelach Nano 33 są ARM-y: nRF 52840 albo SAMD21G18A.
  • #18
    Użytkownik usunął konto
    Poziom 1  
  • #19
    Janusz_kk
    Poziom 22  
    o_Tadeusz napisał:
    Assemblera na ARM? Na AVR piszesz w ASM?

    Nie, czasami robię wstawki w przerwaniu, ale głównie sprawdzam co mi kompilator wypluł, bo już kilka razy miałem, że program mi nie chodził jak chciałem przez nadmierną optymalizację kompilatora.

    o_Tadeusz napisał:
    Więcej ram, SPI, I2C, RAM, FLASH, DMA często w niższej cenie niż AVR.

    Nie rajcuje mnie to, atxmegi, nowe megi też mają full wypas.

    o_Tadeusz napisał:
    AVRtiny/mega ma inne peryferia niż Xmega. Gdy chciałeś użyć Xmega musiałeś poznać nowe peryferia, bo jak piszesz

    Nie mają innych, tylko trochę inaczej zorganizowane i rozbudowane.

    o_Tadeusz napisał:
    Jaki problem teraz poznać peryferia ARM?

    Bo są jeszcze bardzie rozbudowane przez to bardziej zagmatwane?
    Oglądałem pdf-y i samo uruchomienie zegara i podłączenie peryferiów już mi odebrało ochotę do arm-ów.

    o_Tadeusz napisał:
    Na AVRmega a nawet Xmega, nie zrobisz np

    Nie muszę.
  • #20
    Użytkownik usunął konto
    Poziom 1  
  • #21
    Janusz_kk
    Poziom 22  
    Chucki już Ci raz zablokowali konto, nie bądż agresywny a taki się stajesz, ja nie jestem zawodowcem i nie potrzebuję armów, koniec kropka, mam swoje lata i nie mam zamiaru nic zmieniać.
  • #22
    Użytkownik usunął konto
    Poziom 1  
  • #23
    TechEkspert
    Redaktor
    @khoam przyjrzymy się NANO 33 BLE :)

    @leonow32 płytka https://pl.farnell.com/microchip/dm320115/cur...ano-eval-board-8-bit/dp/2932048?st=atmega4809 bardzo fajna, podobnie jak mikrokontroler ATmega4809, dlatego pojawił się ten materiał. Mikrokontroler OK, ale integracja ze środowiskiem Arduino wygląda na to że jest w trakcie realizacji.

    Jakie są koszty dostawy wspomnianej płytki z farnell?

    @fotomh-s tak ARM ATSAMD11D14A robi za USB<->UART, oraz można wymienić w nim firmware i uzyskać inne urządzenie HID, prawdopodobnie wykorzystanie tego układu pozwoliło też na obniżenie ceny modułu?

    @khoam ciekawa ta płytka https://www.pjrc.com/store/teensy40.html wydajność w CoreMark - przepaść.
  • #24
    tronics
    Poziom 37  
    Cytat:
    tak ARM ATSAMD11D14A robi za USB<->UART, oraz można wymienić w nim firmware i uzyskać inne urządzenie HID, prawdopodobnie wykorzystanie tego układu pozwoliło też na obniżenie ceny modułu?

    Możliwe, na mouser ten chip jest za ~5PLN, CP2102 (z NodeMCU) to podobna cena, CH340/341 pewnie taniej, FT232 zdecydowanie drożej, podobnie jakieś Cypressy. Czyli ten SAM D11 nie zwiększa znacząco ceny, robi za porządniejszy mostek USB-UART, a dodatkowo (oprócz własnej nadmiarowej mocy obliczeniowej i I/O gdyby była potrzeba) oferuje debugowanie (z czego IDE Arduino może aktualnie nie korzysta, ale alternatywne IDE mogą).
    Pamiętajcie koledzy, D10 i D11 to takie mikruski ARMowe. Jak na 32bit to mają stosunkowo mało RAM i FLASH. Cudów na tym nie zrobicie. Ale od biedy MOŻE być pomocny i przejąć parę zadań. I tak, 4809 ma peryferia zbliżone (strukturą je opisującą) do Xmega, a nie starszych Atmega więc tak czy siak (gdyby pisać close to metal) trzeba by się uczyć tego na nowo - zatem nostalgia to akurat słaby argument, R-MIK/LChucki/o_Tadeusz ma tu rację. Tylko w Arduino jednak większość rzeczy jest ukryta pod pewną warstwą abstrakcji. I o ile jest pełna i w pełni kompatybilna implementacja funkcji z bibliotek arduino to nie ma większego znaczenia co jest pod maską, czy starszy AVR, czy nowszy, czy ARM od NXP, Nordic, ST czy Microchipa. Arduino zresztą nie jest robione pod wydajność, a pod prostotę. Co najwyżej bierze się szybsze MCU by przykryć wydajnościowy hamulec jaki tworzy narzut samego środowiska. Czy Every będzie ciepło przyjęty? Nie sądzę. Ci, którzy byli przyzwyczajeni do starszych AVR i odnaleźli się w Arduino zdadzą sobie sprawę, że Every oferuje mniej niż Due itp. a mimo to trzeba niektóre przyzwyczajenia zmienić, pewne rzeczy przepisać na nowo. To po co? Zostaną przy klonach starszych wersji. A jeśli by mieli iść na przód i coś nowszego wziąć to wezmą GD32F103, CS32F103 czy STM32F103 z klonów blue pill, albo Kinetisa z Teensy, albo ESP32 ... a Every ominą szerokim łukiem. Takie życie.
  • #25
    Janusz_kk
    Poziom 22  
    tronics napisał:
    Ale od biedy MOŻE być pomocny i przejąć parę zadań. I tak, 4809 ma peryferia zbliżone (strukturą je opisującą) do Xmega, a nie starszych Atmega więc tak czy siak (gdyby pisać close to metal) trzeba by się uczyć tego na nowo - zatem nostalgia to akurat słaby argument,

    Bez przesady, wszystko jest w pdf-ie i w książce TMF-a którą mam i jest dobrze opisane, na pewno łatwiej niż od nowa zaczynać z arm-ami.
    Własnie kupiłem 3208 i wątpie czy coś sensownego znajdę w armach za 5zł+vat.
  • #26
    khoam
    Poziom 33  
    Janusz_kk napisał:
    Własnie kupiłem 3208 i wątpie czy coś sensownego znajdę w armach za 5zł+vat.

    Ciężko będzie w ogóle znaleźć jakiegokolwiek 8 bitowego ARM dla porównania.
  • #27
    tronics
    Poziom 37  
    Cytat:
    na pewno łatwiej niż od nowa zaczynać z arm-ami

    Nie, nie jest. Tylko tak Ci się wydaje, bo są jakieś tam podobieństwa do starszych AVR. Ale niewiele. Zupełnie inne nazwy rejestrów. Inna organizacja pamięci. Nawet głupie machanie pinami to już nie PORTD|= i PORTD&=^ a zwyczajnie PORTD.OUTSET= i PORTD.OUTCLR= ... Do tego dochodzi np. pull-down którego w starszych Atmegach nie ma oraz alternatywne funkcje, których w starszych atmegach również nie ma. Timery zupełnie inaczej się konfiguruje, ADC podobnie, dystrybucja zegara też, uśpienie, przerwania ... mnóstwo różnic.
    Ogółem kto się odnajdzie w xmegach i nowych atmegach to bez problemu odnalazłby się również w ARM które mają znacznie, znacznie, ZNACZNIE bogatsze rodziny układów i do tego są produkowane przez wielu producentów.
    Cytat:
    i wątpie czy coś sensownego znajdę w armach za 5zł+vat

    No toż napisałem dopiero co, że ten ATSAMD11 z płytki Every kosztuje na mouserze w okolicach 5zł netto. Podobnie w farnellu. A choć pamięci mało jak na 32b to jednak usb, 48MHz, DMA, dużo timerów... W podobnej cenie jest np. STM32F030 i podejżewam, że niektóre kinetisy na CM0+ również. Maleństwa, bo maleństwa, ale zdecydowanie mocniejszy rdzeń i nieraz peryferia.
  • #28
    Użytkownik usunął konto
    Poziom 1  
  • #29
    Janusz_kk
    Poziom 22  
    tronics napisał:
    Nawet głupie machanie pinami to już nie PORTD|= i PORTD&=^ a zwyczajnie PORTD.OUTSET= i PORTD.OUTCLR= ... Do tego dochodzi np. pull-down którego w starszych Atmegach nie ma oraz alternatywne funkcje, których w starszych atmegach również nie ma. Timery zupełnie inaczej się konfiguruje, ADC podobnie, dystrybucja zegara też, uśpienie, przerwania ... mnóstwo różnic.

    Mnie to tłumaczysz czy innym, ja to wszystko wiem :)
  • #30
    Użytkownik usunął konto
    Poziom 1