Arduino 1.6.0 - any plans to support it?

Status
Not open for further replies.
Hi,

I've tried the 1.21-beta6 with Arduino 1.6.

Found an Issue with Serial 9o1 - it still does'nt work properly without editing the serialx.c - Files.

As mentioned before somewhere in this forum - UARTx_C3 needs to be read before reading UARTx_D.

I changed the files - View attachment Teensy serial.zip - and hope this will become Part of the release version.

regards

gecko
 
Last edited:
Windows 7:

I am beginning some hacking of making a version of ILI9341_t3, that supports SPI1 using the FIFO. Actually just started, tried compiling using 1.6 beta 6, and the error output is:
Code:
C:\arduino-1.6.0/hardware/tools/arm/bin/arm-none-eabi-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -MMD -nostdlib -mthumb -mcpu=cortex-m0plus -D__MKL26Z64__ -DTEENSYDUINO=121 -DARDUINO=10600 -DF_CPU=48000000 -DARDUINO_ARCH_AVR -DUSB_SERIAL -DLAYOUT_US_ENGLISH -IC:\arduino-1.6.0\hardware\teensy\avr\cores\teensy3 C:\Users\Kurt\AppData\Local\Temp\build1474096805716894531.tmp\glcdfont.c -o C:\Users\Kurt\AppData\Local\Temp\build1474096805716894531.tmp\glcdfont.c.o 
C:\arduino-1.6.0/hardware/tools/arm/bin/arm-none-eabi-g++ -c -g -Os -Wall -ffunction-sections -fdata-sections -MMD -nostdlib -fno-exceptions -felide-constructors -std=gnu++0x -fno-rtti -mthumb -mcpu=cortex-m0plus -D__MKL26Z64__ -DTEENSYDUINO=121 -DARDUINO=10600 -DF_CPU=48000000 -DARDUINO_ARCH_AVR -DUSB_SERIAL -DLAYOUT_US_ENGLISH -IC:\arduino-1.6.0\hardware\teensy\avr\cores\teensy3 C:\Users\Kurt\AppData\Local\Temp\build1474096805716894531.tmp\ILI9341_t3LC.cpp -o C:\Users\Kurt\AppData\Local\Temp\build1474096805716894531.tmp\ILI9341_t3LC.cpp.o 
In file included from C:\Users\Kurt\AppData\Local\Temp\build1474096805716894531.tmp\ILI9341_t3LC.cpp:19:0:
C:\Users\Kurt\AppData\Local\Temp\build1474096805716894531.tmp\ILI9341_t3LC.h: In member function 'void ILI9341_t3::waitFifoNotFull()':
And it looks like the system is hung (shows busy cursor)....

I try compiling it with 1.0.6 Beta 6, and the error output is:
Code:
Arduino: 1.0.6 + Td: 1.21-beta6 (Windows 7), Board: "Teensy LC"
C:\Program Files (x86)\Arduino\hardware\tools\arm\bin\arm-none-eabi-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mcpu=cortex-m0plus -DF_CPU=48000000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=106 -mthumb -nostdlib -D__MKL26Z64__ -DTEENSYDUINO=121 -DTIME_T=1424768265 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -IC:\Program Files (x86)\Arduino\hardware\teensy\cores\teensy3 C:\Users\Kurt\AppData\Local\Temp\build1470074844037585720.tmp\glcdfont.c -o C:\Users\Kurt\AppData\Local\Temp\build1470074844037585720.tmp\glcdfont.c.o 

C:\Program Files (x86)\Arduino\hardware\tools\arm\bin\arm-none-eabi-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mcpu=cortex-m0plus -DF_CPU=48000000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=106 -mthumb -nostdlib -D__MKL26Z64__ -DTEENSYDUINO=121 -fno-rtti -felide-constructors -std=gnu++0x -DUSB_SERIAL -DLAYOUT_US_ENGLISH -IC:\Program Files (x86)\Arduino\hardware\teensy\cores\teensy3 C:\Users\Kurt\AppData\Local\Temp\build1470074844037585720.tmp\ILI9341_t3LC.cpp -o C:\Users\Kurt\AppData\Local\Temp\build1470074844037585720.tmp\ILI9341_t3LC.cpp.o 

In file included from ILI9341_t3LC.cpp:19:0:
ILI9341_t3LC.h: In member function 'void ILI9341_t3::waitFifoNotFull()':
ILI9341_t3LC.h:178: error: request for member 'SR' in '*1074229248u', which is of non-class type 'volatile uint8_t {aka volatile unsigned char}'
    sr = SPI1_S.SR;
                ^
ILI9341_t3LC.h: In member function 'void ILI9341_t3::waitFifoEmpty()':
ILI9341_t3LC.h:195: error: 'struct KINETISL_SPI_t' has no member named 'SR'
    sr = SPI0.SR;
              ^
ILI9341_t3LC.h:196: error: 'SPI0_POPR' was not declared in this scope
    if (sr & 0xF0) tmp = SPI0_POPR;  // drain RX FIFO
                         ^
ILI9341_t3LC.h: In member function 'void ILI9341_t3::waitTransmitComplete()':
ILI9341_t3LC.h:201: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   while (!(SPI0.SR & SPI_SR_TCF)) ; // wait until final output done
                 ^
ILI9341_t3LC.h:201: error: 'SPI_SR_TCF' was not declared in this scope
   while (!(SPI0.SR & SPI_SR_TCF)) ; // wait until final output done
                      ^
ILI9341_t3LC.h:202: error: 'SPI0_POPR' was not declared in this scope
   tmp = SPI0_POPR;                  // drain the final RX FIFO word
         ^
ILI9341_t3LC.h: In member function 'void ILI9341_t3::writecommand_cont(uint8_t)':
ILI9341_t3LC.h:205: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = c | (pcs_command << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
        ^
ILI9341_t3LC.h:205: error: 'SPI_PUSHR_CTAS' was not declared in this scope
   SPI0.PUSHR = c | (pcs_command << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
                                                          ^
ILI9341_t3LC.h:205: error: 'SPI_PUSHR_CONT' was not declared in this scope
   SPI0.PUSHR = c | (pcs_command << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
                                                              ^
ILI9341_t3LC.h: In member function 'void ILI9341_t3::writedata8_cont(uint8_t)':
ILI9341_t3LC.h:209: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = c | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
        ^
ILI9341_t3LC.h:209: error: 'SPI_PUSHR_CTAS' was not declared in this scope
   SPI0.PUSHR = c | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
                                                       ^
ILI9341_t3LC.h:209: error: 'SPI_PUSHR_CONT' was not declared in this scope
   SPI0.PUSHR = c | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
                                                           ^
ILI9341_t3LC.h: In member function 'void ILI9341_t3::writedata16_cont(uint16_t)':
ILI9341_t3LC.h:213: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = d | (pcs_data << 16) | SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT;
        ^
ILI9341_t3LC.h:213: error: 'SPI_PUSHR_CTAS' was not declared in this scope
   SPI0.PUSHR = d | (pcs_data << 16) | SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT;
                                                       ^
ILI9341_t3LC.h:213: error: 'SPI_PUSHR_CONT' was not declared in this scope
   SPI0.PUSHR = d | (pcs_data << 16) | SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT;
                                                           ^
ILI9341_t3LC.h: In member function 'void ILI9341_t3::writecommand_last(uint8_t)':
ILI9341_t3LC.h:218: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   SPI0.SR = SPI_SR_TCF;
        ^
ILI9341_t3LC.h:218: error: 'SPI_SR_TCF' was not declared in this scope
   SPI0.SR = SPI_SR_TCF;
             ^
ILI9341_t3LC.h:219: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = c | (pcs_command << 16) | SPI_PUSHR_CTAS(0);
        ^
ILI9341_t3LC.h:219: error: 'SPI_PUSHR_CTAS' was not declared in this scope
   SPI0.PUSHR = c | (pcs_command << 16) | SPI_PUSHR_CTAS(0);
                                                          ^
ILI9341_t3LC.h: In member function 'void ILI9341_t3::writedata8_last(uint8_t)':
ILI9341_t3LC.h:224: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   SPI0.SR = SPI_SR_TCF;
        ^
ILI9341_t3LC.h:224: error: 'SPI_SR_TCF' was not declared in this scope
   SPI0.SR = SPI_SR_TCF;
             ^
ILI9341_t3LC.h:225: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = c | (pcs_data << 16) | SPI_PUSHR_CTAS(0);
        ^
ILI9341_t3LC.h:225: error: 'SPI_PUSHR_CTAS' was not declared in this scope
   SPI0.PUSHR = c | (pcs_data << 16) | SPI_PUSHR_CTAS(0);
                                                       ^
ILI9341_t3LC.h: In member function 'void ILI9341_t3::writedata16_last(uint16_t)':
ILI9341_t3LC.h:230: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   SPI0.SR = SPI_SR_TCF;
        ^
ILI9341_t3LC.h:230: error: 'SPI_SR_TCF' was not declared in this scope
   SPI0.SR = SPI_SR_TCF;
             ^
ILI9341_t3LC.h:231: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = d | (pcs_data << 16) | SPI_PUSHR_CTAS(1);
        ^
ILI9341_t3LC.h:231: error: 'SPI_PUSHR_CTAS' was not declared in this scope
   SPI0.PUSHR = d | (pcs_data << 16) | SPI_PUSHR_CTAS(1);
                                                       ^
In file included from ILI9341_t3LC.cpp:20:0:
SPI1.h: In static member function 'static void SPI1Class::waitForBufferEmpty()':
SPI1.h:193:31: warning: unused variable 'b' [-Wunused-variable]
                       uint8_t b = SPI1_DL;  // get rid of byte
                               ^
ILI9341_t3LC.cpp: In member function 'uint8_t ILI9341_t3::readcommand8(uint8_t, uint8_t)':
ILI9341_t3LC.cpp:212: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   while (((SPI0.SR) & (15 << 12)) && (--wTimeout)) ; // wait until empty
                 ^
ILI9341_t3LC.cpp:215: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   SPI0.SR = SPI_SR_TCF;   // dlear it out;
        ^
ILI9341_t3LC.cpp:215: error: 'SPI_SR_TCF' was not declared in this scope
   SPI0.SR = SPI_SR_TCF;   // dlear it out;
             ^
ILI9341_t3LC.cpp:217: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   while (!((SPI0.SR) & SPI_SR_TCF) && (--wTimeout)) ; // wait until it says the last frame completed
                  ^
ILI9341_t3LC.cpp:221: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   while ((((SPI0.SR) >> 4) & 0xf) && (--wTimeout))  {
                  ^
ILI9341_t3LC.cpp:222: error: 'struct KINETISL_SPI_t' has no member named 'POPR'
     r = SPI0.POPR;
              ^
ILI9341_t3LC.cpp:226: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = 0xD9 | (pcs_command << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
        ^
ILI9341_t3LC.cpp:226: error: 'SPI_PUSHR_CTAS' was not declared in this scope
   SPI0.PUSHR = 0xD9 | (pcs_command << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
                                                             ^
ILI9341_t3LC.cpp:226: error: 'SPI_PUSHR_CONT' was not declared in this scope
   SPI0.PUSHR = 0xD9 | (pcs_command << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
                                                                 ^
ILI9341_t3LC.cpp:230: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = (0x10 + index) | (pcs_data << 16) | SPI_PUSHR_CTAS(0);
        ^
ILI9341_t3LC.cpp:234: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = c | (pcs_command << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
        ^
ILI9341_t3LC.cpp:238: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0);
        ^
ILI9341_t3LC.cpp:243: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   while (((SPI0.SR) & (15 << 12)) && (--wTimeout)) ; // wait until empty
                 ^
ILI9341_t3LC.cpp:246: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   SPI0.SR = SPI_SR_TCF;   // dlear it out;
        ^
ILI9341_t3LC.cpp:248: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   while (!((SPI0.SR) & SPI_SR_TCF) && (--wTimeout)) ; // wait until it says the last frame completed
                  ^
ILI9341_t3LC.cpp:252: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   while ((((SPI0.SR) >> 4) & 0xf) && (--wTimeout))  {
                  ^
ILI9341_t3LC.cpp:253: error: 'struct KINETISL_SPI_t' has no member named 'POPR'
     r = SPI0.POPR;
              ^
ILI9341_t3LC.cpp: In member function 'uint16_t ILI9341_t3::readPixel(int16_t, int16_t)':
ILI9341_t3LC.cpp:272: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
        ^
ILI9341_t3LC.cpp:272: error: 'SPI_PUSHR_CTAS' was not declared in this scope
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
                                                       ^
ILI9341_t3LC.cpp:272: error: 'SPI_PUSHR_CONT' was not declared in this scope
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
                                                           ^
ILI9341_t3LC.cpp:275: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
        ^
ILI9341_t3LC.cpp:276: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
        ^
ILI9341_t3LC.cpp:277: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_EOQ;
        ^
ILI9341_t3LC.cpp:277: error: 'SPI_PUSHR_EOQ' was not declared in this scope
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_EOQ;
                                                           ^
ILI9341_t3LC.cpp:280: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   while ((SPI0.SR & SPI_SR_EOQF) == 0) ;
                ^
ILI9341_t3LC.cpp:280: error: 'SPI_SR_EOQF' was not declared in this scope
   while ((SPI0.SR & SPI_SR_EOQF) == 0) ;
                     ^
ILI9341_t3LC.cpp:281: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   SPI0.SR = SPI_SR_EOQF;  // make sure it is clear
        ^
ILI9341_t3LC.cpp:281: error: 'SPI_SR_EOQF' was not declared in this scope
   SPI0.SR = SPI_SR_EOQF;  // make sure it is clear
             ^
ILI9341_t3LC.cpp:284: error: 'struct KINETISL_SPI_t' has no member named 'POPR'
   dummy = SPI0.POPR; // Read a DUMMY byte of GRAM
                ^
ILI9341_t3LC.cpp:285: error: 'struct KINETISL_SPI_t' has no member named 'POPR'
   r = SPI0.POPR;  // Read a RED byte of GRAM
            ^
ILI9341_t3LC.cpp:286: error: 'struct KINETISL_SPI_t' has no member named 'POPR'
   g = SPI0.POPR;  // Read a GREEN byte of GRAM
            ^
ILI9341_t3LC.cpp:287: error: 'struct KINETISL_SPI_t' has no member named 'POPR'
   b = SPI0.POPR;  // Read a BLUE byte of GRAM
            ^
ILI9341_t3LC.cpp: In member function 'void ILI9341_t3::readRect(int16_t, int16_t, int16_t, int16_t, uint16_t*)':
ILI9341_t3LC.cpp:304: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT | SPI_PUSHR_EOQ;
        ^
ILI9341_t3LC.cpp:304: error: 'SPI_PUSHR_CTAS' was not declared in this scope
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT | SPI_PUSHR_EOQ;
                                                       ^
ILI9341_t3LC.cpp:304: error: 'SPI_PUSHR_CONT' was not declared in this scope
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT | SPI_PUSHR_EOQ;
                                                           ^
ILI9341_t3LC.cpp:304: error: 'SPI_PUSHR_EOQ' was not declared in this scope
   SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT | SPI_PUSHR_EOQ;
                                                                            ^
ILI9341_t3LC.cpp:305: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   while ((SPI0.SR & SPI_SR_EOQF) == 0) ;
                ^
ILI9341_t3LC.cpp:305: error: 'SPI_SR_EOQF' was not declared in this scope
   while ((SPI0.SR & SPI_SR_EOQF) == 0) ;
                     ^
ILI9341_t3LC.cpp:306: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   SPI0.SR = SPI_SR_EOQF;  // make sure it is clear
        ^
ILI9341_t3LC.cpp:306: error: 'SPI_SR_EOQF' was not declared in this scope
   SPI0.SR = SPI_SR_EOQF;  // make sure it is clear
             ^
ILI9341_t3LC.cpp:307: error: 'struct KINETISL_SPI_t' has no member named 'SR'
   while ((SPI0.SR & 0xf0)) {
                ^
ILI9341_t3LC.cpp:308: error: 'struct KINETISL_SPI_t' has no member named 'POPR'
     dummy = SPI0.POPR; // Read a DUMMY byte but only once
                  ^
ILI9341_t3LC.cpp:313: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
       SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;
            ^
ILI9341_t3LC.cpp:315: error: 'struct KINETISL_SPI_t' has no member named 'PUSHR'
       SPI0.PUSHR = 0 | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_EOQ;
            ^
ILI9341_t3LC.cpp:319: error: 'struct KINETISL_SPI_t' has no member named 'SR'
       while ((SPI0.SR & SPI_SR_EOQF) == 0) ;
                    ^
ILI9341_t3LC.cpp:320: error: 'struct KINETISL_SPI_t' has no member named 'SR'
       SPI0.SR = SPI_SR_EOQF;  // make sure it is clear
            ^
ILI9341_t3LC.cpp:323: error: 'struct KINETISL_SPI_t' has no member named 'SR'
     if ((SPI0.SR & 0xf0) >= 0x30) { // do we have at least 3 bytes in queue if so extract...
               ^
ILI9341_t3LC.cpp:324: error: 'struct KINETISL_SPI_t' has no member named 'POPR'
       r = SPI0.POPR;  // Read a RED byte of GRAM
                ^
ILI9341_t3LC.cpp:325: error: 'struct KINETISL_SPI_t' has no member named 'POPR'
       g = SPI0.POPR;  // Read a GREEN byte of GRAM
                ^
ILI9341_t3LC.cpp:326: error: 'struct KINETISL_SPI_t' has no member named 'POPR'
       b = SPI0.POPR;  // Read a BLUE byte of GRAM
                ^
ILI9341_t3LC.cpp:331: error: 'struct KINETISL_SPI_t' has no member named 'SR'
     while ((SPI0.SR & (15 << 12)) > (3 << 12)) ;
                  ^
ILI9341_t3LC.cpp:298:11: warning: unused variable 'fFirst' [-Wunused-variable]
   uint8_t fFirst = 1;
           ^
Included zip file. Again this is no where near done, but simply a test case showing 1.6 error output hanging.
 

Attachments

  • ILI9341_t3_graphicstest_lt-150224a.zip
    18.4 KB · Views: 119
I'm seeing more warnings when compiling libraries included by Arduino/Teensyduino when compiling with TD 1.21-test6.

Code:
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/SD/utility/Sd2Card.cpp: In member function 'uint8_t Sd2Card::readData(uint32_t, uint16_t, uint16_t, uint8_t*)':
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/SD/utility/Sd2Card.cpp:478:12: warning: unused variable 'n' [-Wunused-variable]
   uint16_t n;
            ^
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/SD/utility/Sd2Card.cpp: At global scope:
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/SD/utility/Sd2Card.cpp:145:13: warning: 'void spiSend(const uint8_t*, size_t)' defined but not used [-Wunused-function]
 static void spiSend(const uint8_t* output, size_t len) {
             ^

/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/DS1307RTC/DS1307RTC.cpp: In static member function 'static bool DS1307RTC::set(time_t)':
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/DS1307RTC/DS1307RTC.cpp:51:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^

/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/Wire/Wire.cpp: In member function 'uint8_t TwoWire::requestFrom(uint8_t, uint8_t, uint8_t)':
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/Wire/Wire.cpp:349:10: warning: variable 'tmp' set but not used [-Wunused-but-set-variable]
  uint8_t tmp, status, count=0;
          ^

/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/SD/utility/SdFile.cpp: In member function 'uint8_t SdFile::rmRfStar()':
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/SD/utility/SdFile.cpp:899:40: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (curPosition_ != (32*(index + 1))) {
                                        ^

/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/SD/utility/Sd2Card.cpp: In member function 'uint8_t Sd2Card::readData(uint32_t, uint16_t, uint16_t, uint8_t*)':
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/SD/utility/Sd2Card.cpp:478:12: warning: unused variable 'n' [-Wunused-variable]
   uint16_t n;
            ^
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/SD/utility/Sd2Card.cpp: At global scope:
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/SD/utility/Sd2Card.cpp:145:13: warning: 'void spiSend(const uint8_t*, size_t)' defined but not used [-Wunused-function]
 static void spiSend(const uint8_t* output, size_t len) {
             ^

In file included from /Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/IRremote/IRremote.cpp:20:0:
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/IRremote/IRremote.cpp: In member function 'void IRrecv::enableIRIn()':
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/IRremote/IRremoteInt.h:440:10: warning: unused variable 'tmp' [-Wunused-variable]
  uint8_t tmp = CMT_MSC;  \
          ^
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/IRremote/IRremote.cpp:284:3: note: in expansion of macro 'TIMER_RESET'
   TIMER_RESET;
   ^
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/IRremote/IRremote.cpp: In function 'void cmt_isr()':
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/IRremote/IRremoteInt.h:440:10: warning: unused variable 'tmp' [-Wunused-variable]
  uint8_t tmp = CMT_MSC;  \
          ^
/Applications/Arduino-1.6.0.app/Contents/Resources/Java/hardware/teensy/avr/libraries/IRremote/IRremote.cpp:313:3: note: in expansion of macro 'TIMER_RESET'
   TIMER_RESET;
   ^

@PaulStoffregen These look pretty easy to fix, lmk if they're on your list to fix, or if you want some help with this. I'm guessing the Wire and SD libraries are in an Arduino repo somewhere, IRremote is maintained by the author, and I'm not sure where DS1307RTC is.

Speaking of IRremote, any luck with making it compatible with 72MHz? If you can bring me up to speed maybe this is something I can take a look at.
 
Yup, more warnings are common when the toolchain updates. Even new version warns on stuff the prior one didn't.

If you feel like fixing those SD lib warnings, please submit pull requests here:

https://github.com/PaulStoffregen/SD

They're a low priority for me right now, which means I probably won't get to them until 1.22.


On IRremote, look in IRremoteInt.h, around lines 448-478:

https://github.com/PaulStoffregen/Arduino-IRremote/blob/master/IRremoteInt.h#L449

Unfortunately, editing only CMT_PPS_VAL isn't going to do it. The prescaler is CMT_PPS_VAL+1, so 3 for 24 MHz or 6 for 48 MHz. For 36 MHz, you'd need 4.5. So it's going to take adjustment to the values written to CMT_CGH1, CMT_CGL1, CMT_CMD2, etc.

Let me warn you now... that chapter on the CMT is probably the most confusing, most tersely worded part of the reference manual. I got to these values by a lot of reading followed by guess and measure, going back and forth until it worked well. Maybe the CMT chapter will be clearer to you? If so, I might ask you to explain it to me someday!

Anyway, it should be possible to pick some other prescaler and then just tweak those numbers. It just needs to be done with a lot of careful checking of the timing.
 
Currently, I'm working in hardware/teensy/avr/cores. At some point in the future, I might transition to installing into the sketchbook folder. But today, my installer isn't able to reliably detect the sketchbook folder location.
Why is that? The IDE has a location where it stores its preferences.txt config file and the config file has a value that indicates where the sketchbook is located.
If I change the location of my sketchbook storage, the location of the config file does not change.
Currently I have around 20 different versions of the IDE and they are all sharing the same sketchbook area where I store my
libraries, hardware cores, and personal sketches.
It has pluses and minuses but it does allow me to rapidly move between IDEs for testing.

In the case of something like teensy and its libraries, I think installing under the core-vendor-name/architecture/libraries directory makes sense
since it allows the libraries you install to only be used with your core which removes the possibility of breaking somebodies other library.

Whether it exists is also an unresolved issue. That's never a problem for installing into the copy of Arduino (or if it is, they can't get the "Next" button to enable because that copy of Arduino fails the validity checks).

I have no plans to ever divide all the files into 2 architecture locations, like hardware/teensy/avr/cores and hardware/teensy/arm/cores.

I am planning to make my installer put all the libraries it installs into hardware/teensy/avr/libraries. This is the one part of the 1.6's new scheme I really like. I've always worried about breaking libraries for normal Arduino boards.

Fighting the 1.5x/1.6 way of creating a vendor area with separate sub directories for each separate architecture is
already creating some funkiness.
It's intent was to create:
vendor-name/processor-achitecture-name area for placing files related to that combination.

In the current Teensy 1.6 structure. multiple processor architectures are placed under the same processor-architecture area.
This can be made to work, but it comes with some funkiness and potential issues in the future.

For example, the IDE passes down a define indicating the processor architecture.
For Teensy builds you end up with the define -DARDUINO_ARCH_AVR regardless of which actual processor type
is associated with selected board.

This may cause issues for libraries that support multiple processors in that they may get confused if using
that define to determine if an AVR processor is being used.

There also seems to be some diversion as to how some of the values in the boards.txt file for teensy
are used vs how they are used in the Team Arduino boards.txt files.

These types of things may break or confuse the IDE as the IDE gets "smarter" and starts to hide libraries that don't support the processor-architecture
of the selected board type for libraries that use the new 1.6 library format which can specify the supported architectures.


I also noticed that the build rules in the teensy boards.txt is not passing down the board name define
the way the default rules for the Team Arduino cores do.

The default Team Arduino 1.6 platform.txt rules pass down -DARDUINO_{build.board}
and the teensy build rules, which are in the boards file instead, currently don't do this.

--- bill
 
But today, my installer isn't able to reliably detect the sketchbook folder location.
Why is that?

Well Bill, the "why" part is related to the combination of the finite number of hours in each day, and my tendency to take on overly ambitious projects like OctoWS2811 and the audio library and porting and fixing the toughest bugs in nearly all Arduino libraries.

Properly detecting the sketchbook location is tricky. There are default locations, but technically it could be anywhere. The Arduino IDE gets it from the pref file. Arduino 1.0.x and 1.6.x use different prefs files. The actual prefs file location is different on all 3 platforms and it found by the IDE using platform specific techniques: the Windows registry on Windows, certain "dot files" in Linux, and some Mac specific technique I don't know yet. I can and I eventually will build all that (and much more) into the installer. I simply haven't yet.

You made many points about Arduino's intended multi-architecture scheme. Rather than respond point-by-point, I think it's best to take a step back and look at the larger picture over goals and motivations. Many of your comments seem to have a theme that minimizing development time and ongoing maintenance are of primary importance.

My main goal is to support Teensy as well as possible. Often there are opportunities to make small improvements in end-user experience. I usually pursue those, even when the cost is pretty substantial development work. That's why Teensyduino has a couple thousand lines of not-so-simple code to emulate the most commonly used AVR registers and functions. That's why I maintain a pretty substantial patch set and update it promptly for each Arduino release.

Many of these 1.6.0 platform details and my less-conventional approach have already been discussed in other threads, so I'm going to refrain from rehashing it all over again. Yes, I've made several unconventional choices, all of which are motivated by my overriding goal of providing first-class support for Teensy. Other goals aren't completely off my radar, but when it comes to the choices I make on how to support Teensy within the Arduino IDE, the trade-offs I choose mean more coding and maintainance on my end, but I'm often happy to make that choice if there's some benefit for end users.
 
Many of your comments seem to have a theme that minimizing development time and ongoing maintenance are of primary importance.
I wasn't meaning to minimize any sort of time or efforts. To the contrary. I'm sorry if it came off that way.
I completely understand how big of a project trying to make the Arduino IDE REALLY work is.
In so many ways it really sucks having to fix things that shouldn't have to be fixed.
Even just trying to get them to understand things to keep from shooting themselves in the foot is extremely painful
and often (at least in the past) they wouldn't make the changes.
In fact, I think in your case it has been and is much more work to have to work with and integrate into
their IDE vs just fork off and have your own.

I just wanted to point out some potential issues of sharing the architecture directory with multiple architectures and one bug.
The main issue at this point in time being getting an undesirable/confusing architecture define.
A potential easy option/work around here would be to avoid using the name "avr" for your processor architecture directory
and come up with a new name.
Whatever the directory name is, unless you go modify the IDE code, the define ARDUINO_ARCH_{architecture_directory_name_capitalized}
will get defined and passed into the compiler.
Using something other than "avr" might help avoid the potential confusion and keep people from trying to use it
to when trying to detect the AVR processor being used.


The bug being missing passing in the board define -DARDUINO_{build.board}
- which should be easy to add to the build definitions that are in the boards.txt file

--- bill
 
Actually, using "avr" is an intentional choice. Today, companies like Adafruit still design and test exclusively with Arduino Uno.

Teensy usually works great with their AVR-centric design, due to the avr emulation code and reimplementation of several non-standard avr-libc features.

In the future, when/if Adafruit and others change how they develop widely used libraries, I'll adapt.
 
I've not been following Arduino too long - How long has ARDUINO 1.0.6 been the officially supported non-beta release? {ARDUINO 1.0.6 - 2014.09.16} Looking at Arduino.cc the only other 'supported' version listed is "ARDUINO 1.5.8 BETA", any other beta versions are 'no longer supported by the development team'.

The "Arduino IDE 1.6 is released! Download it now cmaglie — February 9th, 2015 "
{ARDUINO 1.6.0rc3 - 2015.02.03}- not even 3 weeks ago indeed offered a great deal of change and additions looking forward to the future. In that time Paul has released a stable and Teensy compatible TeensyDuino beta (#6) based update to this new update - in a timeframe that happens to have coincided with a major new Teensy-LC hardware release on his part.

[SarcasticCommentary]:
Paul is indeed straddling the lines - working too hard making his SAM system unrealistically AVR compatible (and easy to use and well supported). But I think a better argument against Paul's effort to undermine world stability would be to challenge why he feels it appropriate to offer hardware with excessive power (2-4+ times standard 16mhz AVR chips) at prices so ridiculously low that the Chinese probably can't even undercut his offerings on E-Bay - and half the price of DUE ($49 at Sparkfun**, $20+ clones on EBay).
[/SarcasticCommentary]

I ordered my first (3) Teensy 3.1's from Sparkfun seeing them as having the power I needed. I was not sure it would have the support I see that it does. Not knowing the history of Arduino IDE updates I thought that ver 1.0.6 was ANCIENT. I ran into dead ends with limitation of lower power AVR systems and powered up my Teensy just in time to see the Beta 1.6 release and seeing the breadth and intensity of Paul's effort is impressive - not only with his own hardware but his dedication and support of the Arduino system as a whole.

**Sparkfun and DUE: I found it telling that most comments there were 'about 2 years ago' - with a few as recent as 'about 10 months ago' and they numbered 97. And the MEGA is only $5 less with not that much Sparkfun customer feedback.
 
Last edited:
Maybe I missed it, but with 1.6.0, I tried to enable higher CPU speeds for the Teensy 3.1, so I went and edited hardware/teensy/avr/boards.txt and un-commented the higher speeds, saved the changes, started up Arduino, choose Teensy 3.1, but the higher speeds are not showing up in menu? Tried both on Windows 7 as well as Ubuntu 14.04 (64 bit). Am I missing something?
 
Did you install the beta-6 TeensyDuino. With that on with 1.6 the default speed was there at 96 (with lower available)- what speeds are you seeing?
TeensyDuino
TeensyLoader1.21-beta6.png
 
Last edited:
Mine looks the same. However I was trying to enable 120, 148,... Which on earlier releases you uncommented some lines in boards.txt, which did not show up after I changed the file and restarted arduino
 
Looks like beta 7 still does not handle error messages from library files:
Arduino: 1.6.0 (Windows 7), TD: 1.21-beta7, Board: "Teensy LC, Serial, 48 MHz, US English"

Using library BioloidSerial in folder: C:\Users\Kurt\Documents\Arduino\libraries\BioloidSerial (1.0.x format)



C:\arduino-1.6.0/hardware/tools/arm/bin/arm-none-eabi-g++ -c -g -Os -Wall -ffunction-sections -fdata-sections -MMD -nostdlib -fno-exceptions -felide-constructors -std=gnu++0x -fno-rtti -mthumb -mcpu=cortex-m0plus -D__MKL26Z64__ -DTEENSYDUINO=121 -DARDUINO=10600 -DF_CPU=48000000 -DARDUINO_ARCH_AVR -DUSB_SERIAL -DLAYOUT_US_ENGLISH -IC:\arduino-1.6.0\hardware\teensy\avr\cores\teensy3 -IC:\Users\Kurt\Documents\Arduino\libraries\BioloidSerial C:\Users\Kurt\AppData\Local\Temp\build763902746275539478.tmp\Kurts_AX12_Test_Use_Serial.cpp -o C:\Users\Kurt\AppData\Local\Temp\build763902746275539478.tmp\Kurts_AX12_Test_Use_Serial.cpp.o

C:\arduino-1.6.0/hardware/tools/arm/bin/arm-none-eabi-g++ -c -g -Os -Wall -ffunction-sections -fdata-sections -MMD -nostdlib -fno-exceptions -felide-constructors -std=gnu++0x -fno-rtti -mthumb -mcpu=cortex-m0plus -D__MKL26Z64__ -DTEENSYDUINO=121 -DARDUINO=10600 -DF_CPU=48000000 -DARDUINO_ARCH_AVR -DUSB_SERIAL -DLAYOUT_US_ENGLISH -IC:\arduino-1.6.0\hardware\teensy\avr\cores\teensy3 -IC:\Users\Kurt\Documents\Arduino\libraries\BioloidSerial -IC:\Users\Kurt\Documents\Arduino\libraries\BioloidSerial\utility C:\Users\Kurt\Documents\Arduino\libraries\BioloidSerial\ax12Serial.cpp -o C:\Users\Kurt\AppData\Local\Temp\build763902746275539478.tmp\BioloidSerial\ax12Serial.cpp.o

C:\Users\Kurt\Documents\Arduino\libraries\BioloidSerial\ax12Serial.cpp: In function 'void setTXall()':

Error compiling.
Now making changes to that library for Teency LC
 
Arrrrgggg.... I thought I fixed that.

Please post the code and I'll give it a try here. Looks like "beta8" might be coming sooner rather than later!
 
FWIW congrats for moving forwards to 1.6. I've been waiting for this for a very long time.
Is the LC supported in this one?
 
Sweet, I can't wait to try the USB host mode on the LC, to see how it compares.
Yes, I just got it working fully today.
To give you an idea of speed, here is a teensy 3.1, no file system.
First without a hub
Read passed, Read 2048 sectors (1024K) in 1716ms
With a hub
Read passed, Read 2048 sectors (1024K) in 4248ms

and for FAT file system...
First without a hub
1MB write timing test 2048 writes, (0), (0), 4210 ms (4 sec)
1MB read timing test 2048 reads, (20), 1783 ms (2 sec)
With a hub
1MB write timing test 2048 writes, (0), (0), 6041 ms (6 sec)
1MB read timing test 2048 reads, (20), 4262 ms (4 sec)


The reason using a hub gives you a little less speed is because of how the transaction translators work.
The short of it is that if a hub is connected, you need to slow down.
*technically* the faster speeds do break the actual 2.0 USB spec, but I have yet to locate a device that won't just gladly eat it... save for hubs.
 
IDE 1.6, am I missing something, as EthernetUDP seems to not be shipped with the arduino library bundle?
 
Last edited:
Status
Not open for further replies.
Back
Top