====== Teensy 3.0 ====== ===== Einführung ===== Teensy 3.0 ist ein Arduino IDE kompatibles Entwicklungsboard von [[http://www.http://pjrc.com/|PJRC]]. {{ :arm_t3board.jpg?nolink&400 |}} [[http://www.flickr.com/photos/41898857@N04/8598463440/in/photolist-e6PnBE-ecR7UE-dMd9Q7-dMda49-dMd9dd-dMd8Zh-dgHvsZ-emrWUi-e8WQN7-ezcbgV-ectCa2-ejU29i-ejZMmj-ehc6ra-ezfn3u-ezfnBq-ezfnkm-ezfnTd-ennH8y-e8WQD9-e4yGoz-af9K6q-dzxRMt-dgZEmv-dhiwJo-dxaJDN-dFWmFo | Foto von SparkFun Electronics]] 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.0 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. Das erste Los der Teensy 3.0 Boards wurde via Kickstarter finanziert. ===== Hardware ===== Das Teensy 3.0 Board basiert auf dem Cortex M4 Prozessor MK20DX128VLH5 von Freescale ([[http://cache.freescale.com/files/32bit/doc/data_sheet/K20P64M50SF0.pdf|Datenblatt]]). Folgende Funktionen bietet der Mikroprozessor auf dem Teensy 3.0 Board: * Core: ARM Cortex-M4 * Frequenz: max. 50 MHz (auf 96 MHz übertaktbar) * RAM: 16 KB * Interner Flash: 128 KB * EEPROM: 2KB * PWM Kanäle: 10 * 34 (digitale) Pins mit verschiedenen Funktionen und zusätzlich 4 analoge Eingänge * Serielle Schnittstellen: 3 + USB * SPI und I2C Schnittstelle * Touch Sensing Interface * integrierter Spannungsregler * integrierte Echtzeituhr (RTC) Zusätzlich ist noch ein MINI54 von NuMicro verbaut, das ist ein Mikrocontroller 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. Dies scheint für die weitere Zukunft jedoch geplant zu sein, mit dem Ziel, weitere Energiesparmodi zu implementieren. ==== Schema ==== [[http://www.pjrc.com/teensy/schematic.html|direkter Link zur Teensy 3.0 Projektseite]] ==== Unterschied Reset und Program ==== Das Teensy 3.0 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.0 Board in den Programmier-Modus versetzt. Der kleine Taster auf dem Board ist mit dem //Program// Eingang verbunden. ==== Echtzeituhr (RTC) aktivieren ==== Um die integrierte RTC verwenden zu können, muss ein zusätzlicher Quarz 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.com/product-detail/en/CFS206-32.768KDZF-UB/300-8303-ND/862580|Digikey]] Auf der unteren Seite des Teensy 3.0 Baords 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.0 Footprints kann [[https://bitbucket.org/thewknd/tlib|hier (bitbucket.org)]] heruntergeladen werden. ===== Software ===== Das Teensy 3.0 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.0// ausgewählt werden. Wird nun Programmcode auf das Teensy 3.0 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.0 Board kompatibel ist, kann auf [[http://www.pjrc.com/teensy/td_libs.html|dieser Seite]] nachgeschaut werden. ==== Adafruit LCD Bibliotheken ==== Die Bibliotheken von Adafruit verwenden oft Aufrufe von AVR spezifischen Funktionen. Darum kommt man selten um eine Anpassung umhin. === Adafruit_GFX === Alle neuern Display Bibliotheken von Adafruit basieren auf der [[https://github.com/adafruit/Adafruit-GFX-Library|Adafruit GFX-Library]]. Diese läuft auf dem Teensy 3.0 Board ohne Probleme. === Adafruit_TFTLCD === Diese muss an das Teensy 3.0 Board angepasst werden. Eine Repository mit allen nötigen Anpassungen gibt es [[https://github.com/thewknd/TFTLCD-Library|hier (github.com)]]. Das Display muss wie folgt angeschlossen werden: (Die Pins können nicht geändert werden) // LCD Data Bit : 7 6 5 4 3 2 1 0 // T3 dig. pin : 5 21 20 6 8 7 14 2 // T3 port/pin : PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 Die Änderungen stammen aus dem PJRC Forum: [[http://forum.pjrc.com/threads/16798-2-8-quot-TFT-touchscreen-Teensy-3-0]] === Adafruit_ST7735 == ===== Projekte und Beispiele ===== * [[arm:teensy3:octows2811|OctoWS2811 (Ansteuern von vielen LED)]] * [[arm:teensy3:ArduinoR3ShialdAdapter|Teensy 3.0 zu Arduino R3 Shield Adapter]] * [[arm:teensy3:BreadboardAdapter|Teensy 3.0 zu Breadboard Adapter]] ===== Ressourcen ===== * [[http://www.pjrc.com/|PJRC]] * [[http://forum.pjrc.com/forum.php|PJRC Forum]] * [[http://pjrc.com/teensy/teensyduino.html|Teensyduino download]] * [[http://www.kickstarter.com/projects/paulstoffregen/teensy-30-32-bit-arm-cortex-m4-usable-in-arduino-a|Kickstarter Projektseite]] * [[http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=K20_USB_MCU&tid=mKOvp|Startseite von Freescale zur Kinetis K20 Serie]] * [[http://cache.freescale.com/files/32bit/doc/data_sheet/K20P64M50SF0.pdf|Datenblatt Freescale K20]]