SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

Arduino poradnik

Wstęp

Teoria

Biblioteki

Komponenty

Czujniki i sensory

Rozwiązania i algorytmy

Narzędzia

Mikrokontrolery i Arduino IDE

Arduino i klony

Poradniki wideo

Reklama na Blogu

Najnowsze poradniki

Ostatnie komentarze

Ostatnie fotografie

polskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorywieliczka-szyb-danilowicza

Teensy 3.5 i Teensy 3.6 (MK64FX512VMD12 / MK66FX1M0VMD18)

Teensy 3.5 oraz Teensy 3.6 to nowe płytki rozwojowe od amerykańskiej firmy PJRC wyposażone w 32-bitowe mikrokontrolery ARM Cortex-M4 z koprocesorem arytmetycznym FPU (Floating Point Unit). Oba modele różnią się głównie zastosowanym mikrokontrolerem. Teensy 3.5 jest wyposażony układ MK64FX512VMD12 taktowany zegarem 120 MHz, natomiast w wersji wyższej jest to MK66FX1M0VMD18 taktowany zegarem 180 MHz. Wymiary obu płytek wynoszą 61mm x 18mm.

Teensy 3.5 oraz Teensy 3.6

Pomimo cech wspólnych, różnią się ilością wyspecjalizowanych portów I/O, rozmiarem dostępnej pamięci Flash, RAM oraz EEPROM. Szczególną uwagę przykuwa Teensy 3.5, ponieważ posiada tolerancję napięcia 5V na wszystkich portach.

Ogólnie można powiedzieć, że specyfikacja obu wariantów robi bardzo mocne wrażenie:

  Teensy 3.5 Teensy 3.6
Mikrokontroler MK64FX512VMD12 MK66FX1M0VMD18
Zegar 120 MHz 180 MHz
Pamięć Flash 512 kB 1024 kB
Pamięć RAM 192 kB 256 kB
Pamięć EEPROM 4 kB 4 kB
Port USB (High Speed)
- 1
CAN Bus 1 2
Kanały DMA 16 32
PWM 20 22
I2C 3 4
Touch Input - 11
Poziom logiczny 3.3V (tolerancja 5V)  3.3V

To (aż) tyle, jeśli chodzi o różnice. Pozostałe, wspólne cechy prezentują się następująco:

  Teensy 3.5 & Teensy 3.6
Porty I/O 62 (42 na krawędzi)
SPI 3 (1 z obsługą FIFO)
UART 6 (2 z obsługą FIFO i Fast Baud Rates)
Wejścia analogowe 25 (2 przetworniki ADC / 13-bit)
Wyjścia analogowe 2 (przetwornik DAC / 12-bit)
Port audio I2S 4 kanałowy (wejście / wyjście)
microSD / SDIO Natywny, 4 bitowy
Timery sprzętowe 14
Ethernet 100 Mbit
Port USB (Full Speed) 1
Dodatkowe  Cryptographic Acceleration Unit
Random Number Generator
CRC Computation Unit

Budowa nowych Teensy jest na tyle sprytnie przemyślana, żę pierwsze 28 pinów (po 14 z każdej strony) jest w pełni kompatybilne z wcześniejszymi wersjami płytek, co pozwala na przyjemny i bezbolesny upgrade swoich obecnych projektów. Z prawej strony umieszczono z kolei wszystkie debiutujące nowinki. Teensy 3.6 posiada także dodatkowy port USB 2.0 (High Speed), który może pracować w trybie hosta - oznacza to, że możemy do niego podłączyć pamięć USB, klawiaturę lub inne urzędzenie. Pinout przedstawia się następująco:

Arduino IDE

PJRC zdołało nas już przyzwyczaić, że płytki Teensy są kompatybilne ze środowiskiem Arduino IDE - tak jest i tym razem za sprawą pakietu instalacyjnego Teensyduino 1.30 w której wprowadzono obsługę Teensy 3.5 oraz Teensy 3.6

Teensyduino 1.30 jest możemy doinstalować do Arduino IDE w wersjach 1.0.6, 1.6.5-r5, 1.6.8, 1.6.9, 1.6.10 oraz 1.6.11. Kolejna wersja 1.31 ma przynieść również wsparcie dla Arduino 1.6.12. Instalacja praktycznie ogranicza się do pobrania, uruchomienia instalatora i wybrania katalogu domowego naszej instalacji Arduino IDE.

Dodatkowy krok będą musieli wykonać użytkownicy Linuksa, dodając do reguł udev nowy wpis:

  1. ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", ENV{ID_MM_DEVICE_IGNORE}="1"
  2. ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", ENV{MTP_NO_PROBE}="1"
  3. SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:="0666"
  4. KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:="0666"

Powyższe definicje możemy zapisać na przykład w pliku /etc/udev/rules.d/99-teensy.rules i ponownie uruchomić komputer. W Arduino IDE będziemy mieli już możliwość programowania nowych płytek oraz wyboru trybu pracy gniazda USB oraz częstotliwości taktowania zegara.

Arduino IDE 1.6.11 / Obsługa płytek Teensy

Arduino IDE 1.6.11 / Wybór trybu pracy portu USB

Arduino IDE 1.6.11 / Wybór prędkości taktowania zegara

Co ciekawe, programując Tennsy 3.6 możemy przetaktować układ z 180 MHz do 240 MHz!

Możliwość przetaktowania Teensy 3.6

Benchmark

Na początek użyjemy naszego nieśmiertelnego programu obliczającego 1 milion iteracji liczby Pi.

  1. #define ITERATIONS 1000000L    // number of iterations
  2. #define FLASH 10000            // blink LED every 1000 iterations
  3.  
  4. void setup() {
  5.   pinMode(13, OUTPUT);         // set the LED up to blink every 1000 iterations
  6.   SerialUSB.begin(57600);
  7. }
  8.  
  9. void loop() {
  10.  
  11.   unsigned long start, time;
  12.   unsigned long niter=ITERATIONS;
  13.   int LEDcounter = 0;
  14.   boolean alternate = false;
  15.   unsigned long i, count=0;
  16.   float x = 1.0;
  17.   float temp, pi=1.0;
  18.  
  19.  
  20.   SerialUSB.print("Beginning ");
  21.   SerialUSB.print(niter);
  22.   SerialUSB.println(" iterations...");
  23.   SerialUSB.println();
  24.  
  25.   start = millis();  
  26.   for ( i = 2; i < niter; i++) {
  27.     x *= -1.0;
  28.     pi += x / (2.0f*(float)i-1.0f);
  29.     if (LEDcounter++ > FLASH) {
  30.       LEDcounter = 0;
  31.       if (alternate) {
  32.         digitalWrite(13, HIGH);
  33.         alternate = false;
  34.       } else {
  35.         digitalWrite(13, LOW);
  36.         alternate = true;
  37.       }
  38.       temp = 40000000.0 * pi;
  39.     }
  40.   }
  41.   time = millis() - start;
  42.  
  43.   pi = pi * 4.0;
  44.  
  45.   SerialUSB.print("# of trials = ");
  46.   SerialUSB.println(niter);
  47.   SerialUSB.print("Estimate of pi = ");
  48.   SerialUSB.println(pi, 10);
  49.  
  50.   SerialUSB.print("Time: ");
  51.   SerialUSB.print(time);
  52.   SerialUSB.println(" ms");
  53.  
  54.   delay(10000);
  55. }

Wyniki

Płytka Mikrokontroler Zegar Wynik
Arduino UNO ATmega328 16 MHz 56,455 s
Iteaduino Lite LGT8F88A 16 MHz 52,307 s
Iteaduino Lite LGT8F88A 32 MHz 26,150 s
Arduino Zero ATSAMD21G18 48 MHz 19,661 s
Intel Galileo Gen2 Intel Quark X1000 400 MHz 0,396 s
NodeMCU v2 ESP8266 80 MHz 6,251 s
NodeMCU v2 ESP8266 160 MHz 3,176 s
Teensy 3.5 MK64FX512VMD12 48 MHz 0,710 s
Teensy 3.5 MK64FX512VMD12 120 MHz 0,283 s
Teensy 3.6 MK66FX1M0VMD18 48 MHz 0,710 s
Teensy 3.6 MK66FX1M0VMD18 120 MHz 0,284 s
Teensy 3.6 MK66FX1M0VMD18 180 MHz 0,189 s
Teensy 3.6 MK66FX1M0VMD18 192 MHz 0,177 s
Teensy 3.6 MK66FX1M0VMD18 216 MHz 0,157 s
Teensy 3.6 MK66FX1M0VMD18 240 MHz 0,142 s

Na zakończenie sprawdźmy jaki wpływ ma przetaktowanie Teensy 3.6 do 240 MHz. O ile przy niskich częstotliwościach różnica jest zauważalna, to przetaktowanie układu z 180 MHz do 240 MHz praktycznie nie wpływa negatywnie na wzrost temperatury.

Teensy 3.6 @ @ 24 MHz

Teensy 3.6 @ @ 180 MHz

Teensy 3.6 @ @ 240 MHz


Reklama

Komentarze Komentarze
Avatar 1
xiaomi Linux x86_64 / Safari 537.36
10 December 2016 - 19:20 Warszawa

Jest gdzieś jakiś ranking, benchmark pokazujący wydajność najlepszych procesorów ARM 8-10 rdzeniowych w porównaniu z procesorami AMD, intela? Jaki jest obecnie najwydajniejszy procesor ARM, dogania w ogóle i3?

Avatar 1
ny Windows 7 / Mozilla Firefox 53.0
03 May 2017 - 21:28 Gdynia

Arduino Mega 2560
16MHz
59 030 ms