====== Teensy 3.1 ====== ===== Einführung ===== Teensy 3.1 ist ein Arduino IDE kompatibles Entwicklungsboard von [[http://www.http://pjrc.com/|PJRC]]. Das Teensy 3.1 Board ist eine Weiterentwicklung des Teensy 3.0, die grössten Unterschiede sind mehr Speicher, ein [[http://de.wikipedia.org/wiki/Controller_Area_Network|CAN Bus]] Interface, alle digitalen Pins sind 5V tolerant und ein DAC Ausgang. {{ :arm:teensy3:t31_500.jpg |}} Bildquelle: [[https://www.flickr.com/photos/sparkfun/12933297045/in/photolist-mfvCXa-kGSwC6-kp9cCg-nRXVDz-ihrYWt-igfx6Q-igfx1u-igfbQ8-nNUvHc-mZy6p4-jf3btB-k8pCH4-jFG7x5-kzR4HZ| Teensy 3.1]] by [[https://www.flickr.com/photos/sparkfun/|SparkFun Electronics]] is licensed under [[https://creativecommons.org/licenses/by/2.0/| CC BY 2.0]] Ein Kopf hinter [[http://www.http://pjrc.com/|PJRC]] ist Paul Stoffregen, er ist massgeblich für die Hardware und Software Entwicklung des Teensy 3.1 verantwortlich. Paul ist nicht Teil des Arduino Teams, besitzt aber dennoch einen Entwickler Zugang zur Arduino Repository und hat schon verschiedene Verbesserungen beigetragen. Entsprechend gut kennt er sich mit den Internas der Arduino Software aus. ===== Hardware ===== Das [[http://www.pjrc.com/teensy/teensy31.html|Teensy 3.1 Board]] basiert auf dem Cortex M4 Prozessor MK20DX256VLH7 von NXP ([[http://www.nxp.com/assets/documents/data/en/data-sheets/K20P64M72SF1.pdf|Datenblatt]]). Folgende Funktionen bietet der Mikroprozessor auf dem Teensy 3.1 Board: * Core: ARM Cortex-M4 * Frequenz: max. 72 MHz (direkt in der Arduino IDE auf 96 MHz übertaktbar, [[http://forum.pjrc.com/threads/25755-Teensy-3-1-overclock-to-168MHz|mit zusätzlichen Änderungen auf bis zu 168 MHz]]) * RAM: 64 KB * Interner Flash: 256 KB * EEPROM: 2KB * PWM Kanäle: 12 * 34 (digitale) Pins mit verschiedenen Funktionen und zusätzlich 4 analoge Eingänge * Serielle Schnittstellen: 3 + USB * SPI und I2C Schnittstelle * [[http://de.wikipedia.org/wiki/I%C2%B2S|I2S]] Schnittstelle * Touch Sensing Interface * integrierter Spannungsregler (3.3V / 120mA) * integrierte Echtzeituhr (RTC) * einen DAC Ausgang mit einer Auflösung von 12 Bit * integrierte [[http://de.wikipedia.org/wiki/Programmable_Gain_Amplifier|PGA]]: 2 * eine [[http://de.wikipedia.org/wiki/Controller_Area_Network|CAN Bus]] Schnittstelle Zusätzlich ist noch ein MINI54 von NuMicro verbaut, das ist ein Mi­k­ro­con­t­rol­ler mit einem ARM Cortex M0 Kern. ([[http://download.nuvoton.com/NuvotonMOSS/DownloadService/Member/DocumentsInfo.aspx?tp_GUID=DA03-MINI51/52/54|Datenblatt]]) In diesem ist der Bootloader gespeichert. Der MINI54 kann nicht über die Arduino IDE gesteuert oder programmiert werden. ==== Schema ==== [[http://www.pjrc.com/teensy/schematic.html|direkter Link zum Schema auf der Teensy 3.1 Projektseite]] ==== Pinbelegung ==== [[http://www.pjrc.com/teensy/pinout.html|direkter Link zur Pinbelegung auf der Teensy 3.1 Projektseite]] ==== 5V tolerante Eingänge ==== Alle digitale Pins des Teensy 3.1 Boards sind 5V tolerant. Das heisst, auch wenn die Speisung nur 3.3V beträgt, dürfen Signale mit bis zu 5V an den entsprechenden Pins angeschlossen werden. Als nicht digitale Pin gelten die folgenden Pins und dürfen daher mit maximal 3.3V verbunden werden: Program, Reset, VBat, A10, A11, A12, A13, A14 und AREF. (An 3.3V, GND und AGND dürfen auch keine 5V Signale angeschlossen werden). Alle anderen Pins sind 5V tolerant. ==== Farbe des Lötstopplacks ==== Die ersten Chargen des Teensy 3.1 wurden mit schwarzem Lötstopplack ausgeliefert. Aus [[http://forum.pjrc.com/threads/24950-Teensy-3-1-Changes-To-Green-PCB|Qualitätsgründen]] wird seit einiger Zeit nur noch grüner Lötstopplack verwendet. Zusätzlich ist von einem anderen Anbieter das Board mit violettem Lötstopplack erhältlich. ==== Unterschied Reset und Program ==== Das Teensy 3.1 Board besitzt einen //Reset// und einen //Program// Eingang. Durch das Verbinden des //Reset// Eingangs mit 0V, wird ein Reset durchgeführt. Wird an den //Program// Eingang 0V angelegt, wird das Teensy 3.1 Board in den Programmier-Modus versetzt. Der kleine Taster auf dem Board ist mit dem //Program// Eingang verbunden. Der Reset Eingang ist nicht mehr wie beim Teensy 3.0 direkt an einen Pin der Pinleiste geführt, sondern ist nun auf der Unterseite als Testpunkt platziert. ==== Der digitale Pin 33 ==== Der digitale Pin 33 darf während dem Aufstarten nicht mit 0V/GND verbunden sein. Als einfache Regel gilt, den Pin 33 nicht zu verwenden. Wenn der Pin 33 während dem Aufstarten mit GND verbunden ist, wird eine interne Debug Funktion des Mi­k­ro­con­t­rol­lers aktiviert, die das Ausführen des normalen Programmablaufs verhindert. ==== Echtzeituhr (RTC) aktivieren ==== Um die integrierte RTC verwenden zu können, muss ein zusätzlicher Quartz eingelötet werden. Die Spezifikation: * Frequenz: 32.768 kHz * Kapazität: 12.5 pF * radiale Bauform mit einer Länge von max 6 mm Passend ist zum Beispiel der CFS206-32.768KDZF-UB von Citizen. Bezugsquelle: [[http://ch.mouser.com/Search/ProductDetail.aspx?R=CFS206-32.768KDZF-UBvirtualkey69500000virtualkey695-CFS206-327KF-U|Mouser]] [[http://www.digikey.ch/product-detail/en/CFS206-32.768KDZFB/300-1002-ND/283736|Digikey]] Auf der unteren Seite des Teensy 3.1 Boards kann der Quarz eingelötet werden. Die Position ist markiert. {{ :arm:teensy3:t3_mit_quarz.jpg?nolink&400 |}} Eine Beispielanwendung ist unter //Beispiele/Time/TimeTeensy3// in der Arduino IDE abrufbar. Zusätzlich existiert noch der Befehl ''Teensy3Clock.compensate(num);'' Mit der Funktion //compensate(num)// kann die RTC kalibriert werden, falls sie zu schnell oder langsam läuft. Mit einer positiven Zahl wird die Uhr beschleunigt, mit einer negativen Zahl verlangsamt. Der Wert ist in ppm / 8 (parts per million). Mit //compensate(-40)// wird die Geschwindigkeit der Uhr um 5ppm verlangsamt. Damit die RTC bei einem Speisungsunterbruch die aktuelle Zeit nicht vergisst, kann eine zusätzliche Backup Batterie angeschlossen werden. Dazu kann eine 3V Knopfzelle verwendet werden, angeschlossen an den //VBat// Eingang, verhindert sie das stehen bleiben der internen Uhr. ==== Eagle PCB Library ==== Eine Eagle Library mit verschiedenen Teensy 3.1 Footprints kann [[https://bitbucket.org/thewknd/tlib|hier (bitbucket.org)]] heruntergeladen werden. ===== Software ===== Das Teensy 3.1 Board kann mit Hilfe der [[http://pjrc.com/teensy/teensyduino.html|Teensyduino Erweiterung]] in der normalen Arduino IDE programmiert werden. Dazu muss zuerst die Arduino IDE von [[http://arduino.cc/en/Main/Software|Arduino.cc]] heruntergeladen und installiert werden. Danach wird die [[http://pjrc.com/teensy/td_download.html|Teensyduino Erweiterung]] heruntergeladen und installiert. In der Arduino IDE kann unter Tools/Board //Teensy 3.1// ausgewählt werden. Wird nun Programmcode auf das Teensy 3.1 Board übertragen, öffnet sich automatisch der Teensyduino Loader und erklärt den nächsten Schritt. ==== Bibliotheken ==== Die Teensyduino Erweiterung bringt viele zusätzliche Bibliotheken mit, die während der Installation mitinstalliert werden könne. Ob eine Bibliothek mit dem Teensy 3.1 Board kompatibel ist, kann auf [[http://www.pjrc.com/teensy/td_libs.html|dieser Seite]] nachgeschaut werden. ===== Ressourcen ===== * [[http://shop.boxtec.ch/teensy-usb-board-p-41797.html|Link zu Produkt im Boxtec.ch Shop]] * [[http://www.pjrc.com/|PJRC]] * [[http://forum.pjrc.com/forum.php|PJRC Forum]] * [[http://pjrc.com/teensy/teensy31.html|Zusammenfassung Teensy 3.1]] * [[http://pjrc.com/teensy/td_download.html|Teensyduino download]] * [[http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/kinetis-cortex-m-mcus/k-series-performance-m4/k2x-usb/kinetis-k20-72-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-mcus-based-on-arm-cortex-m4-core:K20_72|Startseite von NXP zur Kinetis K20 Serie]] * [[http://www.nxp.com/assets/documents/data/en/data-sheets/K20P64M72SF1.pdf|Datenblatt: Technische Informationen]] * [[http://www.nxp.com/assets/documents/data/en/reference-manuals/K20P64M72SF1RM.pdf|Referenz Handbuch]]