Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

TechEkspert 04 Sep 2019 19:09 10788 32
  • 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:
    Code: c
    Log in, to see the code


    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...

    Code: c
    Log in, to see the code


    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...
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    TechEkspert
    Editor
    Offline 
    W moich materiałach znajdziecie testy i prezentacje sprzętu elektronicznego, modułów, sprzętu pomiarowego, eksperymenty. Interesuje mnie elektronika cyfrowa, cyfrowe przetwarzanie sygnałów, transmisje cyfrowe przewodowe i bezprzewodowe, kryptografia, IT a szczególnie LAN/WAN i systemy przechowywania i przetwarzania danych.
    Has specialization in: elektronika, mikrokontrolery, rozwiązania it
    TechEkspert wrote 3241 posts with rating 2504, helped 11 times. Been with us since 2014 year.
  • Computer ControlsComputer Controls
  • #2
    szymon122
    Level 38  
    TechEkspert wrote:
    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?
  • #3
    TechEkspert
    Editor
    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...
  • Computer ControlsComputer Controls
  • #4
    khoam
    Level 39  
    To już lepiej przyjrzeć się NANO 33 BLE. Tam przynajmniej Arduino HAL oparte jest Mbed OS.
  • #5
    leonow32

    Level 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
    Level 39  
    leonow32 wrote:
    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

    Level 30  
    khoam wrote:
    leonow32 wrote:
    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
    Level 29  
    No własnie "khoam" po co? do arduino nano też kupujesz "bazówke" czy wtykasz do stykówki.
  • #9
    khoam
    Level 39  
    Janusz_kk wrote:
    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
    Level 39  
    leonow32 wrote:
    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
    Level 22  
    TechEkspert wrote:
    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
    Level 39  
    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 wrote:
    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
    Level 22  
    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.
  • #15
    khoam
    Level 39  
    fotomh-s wrote:
    Teensy 4.0 strasznie marnotrawi piny.

    Są jeszcze dodatkowe dostępne od spodu płytki:

    Arduino NANO Every, test, uruchomienie, problemy...
  • #16
    Janusz_kk
    Level 29  
    fotomh-s wrote:
    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
    Level 39  
    fotomh-s wrote:
    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
    User removed account
    Level 1  
  • #19
    Janusz_kk
    Level 29  
    o_Tadeusz wrote:
    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 wrote:
    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 wrote:
    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 wrote:
    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 wrote:
    Na AVRmega a nawet Xmega, nie zrobisz np

    Nie muszę.
  • #20
    User removed account
    Level 1  
  • #21
    Janusz_kk
    Level 29  
    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
    User removed account
    Level 1  
  • #23
    TechEkspert
    Editor
    @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
    Level 38  
    Quote:
    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
    Level 29  
    tronics wrote:
    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
    Level 39  
    Janusz_kk wrote:
    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
    Level 38  
    Quote:
    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.
    Quote:
    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
    User removed account
    Level 1  
  • #29
    Janusz_kk
    Level 29  
    tronics wrote:
    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
    User removed account
    Level 1