Share this project


Share this project

Teensy 3.0, an affordable 32 bit ARM Cortex-M4 board, for development in Arduino or C/C++.
Teensy 3.0, an affordable 32 bit ARM Cortex-M4 board, for development in Arduino or C/C++.
1,572 backers pledged $70,874 to help bring this project to life.

Fifth Software Update

Here is another release of the software, adding support for the 3 serial ports and a master-only implementation of the Wire library (I'll work on slave mode in a couple weeks).  Several bugs were also fixed.

Special thanks to Neil Hand for testing the Wire library and comparing waveforms to the AVR version on his logic analyzer.  :-)

Non-serial USB types are still missing, but I plan to work on those over the weekend and early next week, hopefully with a release by the middle of next week.

As always, please report any bugs or incompatibilities.  Detailed and reproducible bug reports are tremendously helpful.  Poor ones slow me down.  Please, always send the complete code you're compiling, and always copy-and-paste (or screenshot) any error messages.


Only backers can post comments. Log In
    1. Paul Stoffregen 2-time creator on

      @John, Thomas - I've found and fixed the SPI bug. :-)

    2. Paul Stoffregen 2-time creator on

      @Rick - use Serial1, Serial2 and Serial3.

    3. Paul Stoffregen 2-time creator on

      I'm try the ST7735 and Adafruit_GFX libraries now. I've added the missing wiring_private.h and extra stuff in avr/pgmspace.h (I already had prog_char, but not prog_uchar). Now I've got it almost compiling, but it's failing with a linker error I don't understand yet. I'm planning to publish another software update very soon, so I'll have to look at this in more detail later. I think this is as far as I'm going to get it for this update.

    4. Joh.Lummel on

      First: Yeah! You make my day! Yesterday (17.10.2012) my Teensy3.0 arrived here in Germany.
      After running the first test-code with variations of BLINK, i tried my actual Arduino-project, which uses a Adafruit 160x128tft-clone. First time I got the same error as Pixel_K and get a solution with an actual version of the libraries.
      (got it via link on -> reference -> libraries -> ST7735 =>

      But now i get following error:
      \arduino-1.0.1.teensy3.b5\libraries\Adafruit_ST7735\Adafruit_ST7735.cpp:23: fatal error: wiring_private.h: No such file or directory
      compilation terminated.
      To reproduce the error, try to compile the graphicstest example from that lib.

      I've looking to other "wiring_private.h" from different boards, but I've no idea what to put in that file...

      Have you any ideas? Sure!
      Time to do it? Hmm... would be very nice ;-)


      PS: If this is not a good place to post -> where is a good place? (maybe i missed that posting before)

    5. Missing avatar

      deleted on

      The author of this comment has been deleted.

    6. Missing avatar

      Pixel_K on

      Received my two, teensies and tried them right away.
      Blink of course works as expected :)
      I tried the SD example with the Adafruit 160x128tft + µSD breakout, but the initialisation of the SD fails everytime.
      Am I right to think that DOUT = MOSI and DIN = MISO ?
      I can't try the SPI LCD right now because the library needs EEPROM access (compilation errored on the unknown prog_uchar type), but this is expected.

    7. Missing avatar

      Thomas on

      Works, thank you! I get a wrong value but that's a different story…

    8. Missing avatar

      Rick Brockman on

      I noticed that this release has support for the 3 serial ports. How are they to be used? The example UART sketch named EchoBoth creates a UART object as: HardwareSerial Uart = HardwareSerial();

      How does one refer to serial 1, 2, or 3 in order to create the object?

    9. Paul Stoffregen 2-time creator on

      @Thomas - Before using the CRC module, you need to activate its clock. By default, all the on-chip peripherals have their clocks disabled, to save power. If you access an unclocked part of the chip, usually the result is a bus error, which effectively crashes your program. You probably need to add this line:


    10. Missing avatar

      Thomas on

      Looks like using the hardware CRC breaks something too…
      This code ( generates this output: "Sta @� L"
      Did anyone try to use the CRC module? The resultint crc in this sketch should actually be 0x00.

    11. Paul Stoffregen 2-time creator on

      I was able to reproduce the EEPROM issue on Windows. I made a case-sensitive file naming mistake, which isn't an issue on Linux, but fails on Windows. Sorry about that! I'll have a fix for this tomorrow.

    12. Paul Stoffregen 2-time creator on

      @Rick, Alex - Could you please email me the problematic EEPROM code? I'm planning another software update tomorrow (with touchRead and RTC support).... today I'm investigating and hopefully fixing bugs before tomorrow's release.

    13. Missing avatar

      Thomas on

      @Rick: Thank you. I did not even try to use attachInterrupt(), I was looking for some register manipulation stuff but attachInterrupt() works great, just added a trigger-on-low interrupt on pin 4. Works great.

    14. Mark Leavitt on

      It's workin' here too in my Windows 7 environment -- great job, Paul!
      One minor glitch, and how I fixed it:

      After unzipping the package and launching arduino.exe, the menu choice Tools>Board did not include Teensy 3.0 in the list. To fix it, I had to go to File>Preferences and change the Sketchbook location to the Arduino install directory (C:\arduino-1.0.1 in my case). Save this change, exit the program, then relaunch arduino.exe and it should be fixed. Apparently Arduino 1.0.1 was using a Sketchbook folder I had specified in my previous arduino-1.0 version, and it prevented it from detecting the new boards.txt file. Others may have a better explanation but it's fixed and off I go. Thanks again, Paul!

    15. Missing avatar

      Alex Ferro on

      I have confirmed Rick's EEPROM issue on my netbook in Windows 7.
      I have also found a couple of other little problems in the course of trying to reproduce the problem.
      Attached are my notes on these little problems.

    16. Missing avatar

      Rick Brockman on

      I am trying to use the EEPROM library and getting the error 'EEPROM' was not declared in this scope error.

      I've added #include EEPROM.h to the sketch and the usage is EEPROM.write(0, 1);

      The EEPROM library works if the target board is changed to one of the Arduino boards, but this error appears when the target is set to Teensy 3.0

      Any suggestions?

    17. Missing avatar

      Rick Brockman on

      @Thomas - In regards to assigning interrupts to pins, I've been successful using it exactly like this:

    18. Paul Stoffregen 2-time creator on

      Thanks. I'll look into this today. It's almost certainly a bug in my code.

    19. Missing avatar

      Thomas on

      Here a workaround to get 2MHz SPI working:
      bitSet(SPI0_CTAR0,1); // 2MHz SPI
      Add this after SPI.begin() and it should work.

    20. Missing avatar

      Thomas on

      SPI.setClockDevicer(SPI_CLOCK_DIV4) does not work for me too (on OS X with Beta5 software / same as for John Beale). CS goes high, MOSI follows but never a clock transition. A picture of the logic analyzer output is here:

      I tried all CLOCK_DIVxx as defined in SPI.h. None of them seems to work, always the same result as above.

      4MHz SPI with a RFM12b slave looks good but the device does not support 4MHz while reading out the FIFO buffer.

      Something completely different… Is there an example somewhere about how to assign an interrupt to a specific pin?

    21. John Plocher on

      Paul and Robin
      What a fantastic experience - as compared to Twine, Digispark and others who are still struggling with their own success disasters. Less than a month from the close of your Kickstarter and everything has arrived, including huge software updates and code to play with. The world needs more role models like you two!



    22. Missing avatar

      John Beale on

      How to change default 4 MHz SPI clock rate? I am using WinXP and Teensy3 Beta5 for Windows. Below simple SPI sketch works as shown, but if I uncomment the "SPI.setClockDivider()" line it does not work: The CS line drops low, but the clock line never transitions at all.
      // minimal SPI demo, works with Arduino and Teensy 3.0
      #include "SPI.h" // Pin 13=CLK 12=MISO 11=MOSI 10=SS
      void setup() // setup SPI pins, and send 1 byte
      { pinMode(10, OUTPUT);
      SPI.begin(); // Default SPI clock is 4 MHz
      //SPI.setClockDivider(SPI_CLOCK_DIV4); // not working on Teensy3
      digitalWrite(10, LOW);
      SPI.transfer(0x28); // send out one byte via SPI
      digitalWrite(10, HIGH);
      void loop() { } // empty main loop

    23. Missing avatar

      andy on

      Kudos to Paul S and Neil Hand on their fine testing and troubleshooting of the Teensy 3.0 new core "wire" library. I have a saying ... "wire does not work without having the DS1307 I2C RTC working!"

      I am in total shock and disbelief. The Teensy 3.0 team accomplished the impossible and their Arduino library "wire" port works ONLY with the DS1307 precision TCXO types. The DS3231, DS3232 and the DS3231M+. The Leaflabs MIT team could not make their Arduino library port "wire" work on their STM ARM "Maple" after three years!

      Please note: The DS1307 is a 5 VDC device and it will not work on the Teensy 3.0 without level converters. The other precision type variations will.

      DS1307 library used: RTClib by Jeelabs
      This library can be used on the precision DS3231, DS3231M+ and DS3232 Real time clocks.

      More RTC testing ongoing ....

    24. Missing avatar

      Will Murnane on

      Will something like be released for Teensy 3.0? I love the project, but it'd be nice to eventually be able to integrate the same processor into a single-circuit-board design. Having the schematic (or even PCB layout) would be great, too. Could I contribute money to get it released?

    25. Mauro Scomparin on

      Great, got the sd examples running! The only thing I noticed it's DO of the SD of the sd should go to DI of the board and DI to DO. Don't know if I got it wrong in the beginning but I thougt SPI should connect MOSI to MOSI and MISO to MISO.
      BTW, yeah, this is cool!!

    26. Serge on

      Received my board today as well, very happy with it so far. The progress with the software is great too, keep it up!

    27. Mauro Scomparin on

      Hi, I've just recieved my teensy3 board today!
      I just downloaded the beta4 sw and had some fun with that.
      I was going to congratulate when I noticed the new update! Wow!! Guys, keep up the great work!
      Btw mine took like 9 days to deliver in Italy (Venice)! Very good! I'm happy about that!