Teensy 4.0 First Beta Test

Status
Not open for further replies.
@KurtE

Just retest touchpaint on the ILI9341 still worked with your changes. Recompiled and ran the mscWavPlayer sketch and it worked as well. Looks like that may have got it :)
@mjs513 - I also tested on my ILI9488 setup, plus the program that showed different SPI speed was taken depending on where the SPISettings was defined including adding an empty SPISettings...

Thanks - Went ahead and combined the couple of commits into one (git rebase -i HEAD~2) pushed it back up... and issued PR:
https://github.com/PaulStoffregen/SPI/pull/48
 
@defragster @mjs513.

I had the same problem at first with the music skipping and clicking. What it turned out to be was the size of the buffer. Unfortunately If it's to big then it can't return the data fast enough from the USB drive. If it's to small like the default 512 bytes it does the same thing. I found as I stated when I first posted this wave player that it still depends on the USB drives read response time and I am sure that there is latency through MSC and FatFs. What I did to make it work was to tune the buffer size for each drive that I tested. It turned out that the best clean response was with buffer sizes between 1024 bytes and 16384 bytes. Most of the hard drives and thumb drives worked well with a 8192 byte buffer size. One Hitachi drive just would not work well.

There are two places that have to be changed. One in 'play_msc_wav.cpp', line 157 and one in 'play_msc_wav.h', line 54. these are hard coded values. They should say 8192 as that gave me the best performance with all my drives.

As far as the volume goes I was using earphones. I have the pot soldered in on my audio board so I un-comented lines 101-103 in 'mscWavPlayer.ino' . Without the pot I just increased the value in line 69.

I hope you guys can make it work on your side.

Back to work I go. Another double. BLEAHHH:)

@wwatson and @defragster

Just wanted to let you know that I found my problem with the sound etc. I forgot to comment out the code for the pot volume control. Once I did that with the speaker going to jack there was no problem with the current setting of 8192. I tested it on my SSD drive, a USB drive (Cruzer 4GB) and a SD Card adapter (admittedly a little scratchy but not much). I am using @KurtEs SPI updated lib as well.
 
@wwatson and @defragster

Just wanted to let you know that I found my problem with the sound etc. I forgot to comment out the code for the pot volume control. Once I did that with the speaker going to jack there was no problem with the current setting of 8192. I tested it on my SSD drive, a USB drive (Cruzer 4GB) and a SD Card adapter (admittedly a little scratchy but not much). I am using @KurtEs SPI updated lib as well.

@mjs513

I did not include the SPI SD driver in my code as it seemed redundant with having the original wavFilePlayer code in the Audio library even though uSDFS supports it. Was going to play with that later.
Is the SPI SD adapter the device that is still scratchy or is it a combination of both USB and SPI SD? You almost have to adjust the buffer sizes for each device to optimize performance, which hopefully will change. I just chose 8192 bytes as it worked well for most of the USB drives I available to me.
 
@Jean-Marc

I have been looking at different ways to cache reads and writes from USB Mass Storage drives. This is something that I have no experience with. With the T4 there is lots of memory options to use.
On one of my T3.6 boards I have a simple file manager that is a two pane display of files. Kinda like MC in Linux. The main problem I have is running out of memory caching large numbers of files in directories.
 
I've been thinking of diving back into the T4 arena. One of the things I have done with the Teensy in the past is run the Animated Eyes sketch on various Teensys:

Now this sketch uses the accelerated SPI dma support that is in (or at least was in) several of the functions in the ST7735 and SSD1351 libraries. Now, this program does its own dma (mostly cloned from Paul's library I think). I imagine the dma stuff is different between 3.x and 4.0 Teensys. Is there a place that goes over the differences between the two, or perhaps one of the _t3 libraries that now has both Teensy 3.x and 4.0 support?

Are there pins that should be used for fast dma spi processing (like 9, 10, 15, 20, and 21 in the Teensy 3.x series)?
 
I've been thinking of diving back into the T4 arena. One of the things I have done with the Teensy in the past is run the Animated Eyes sketch on various Teensys:

Now this sketch uses the accelerated SPI dma support that is in (or at least was in) several of the functions in the ST7735 and SSD1351 libraries. Now, this program does its own dma (mostly cloned from Paul's library I think). I imagine the dma stuff is different between 3.x and 4.0 Teensys. Is there a place that goes over the differences between the two, or perhaps one of the _t3 libraries that now has both Teensy 3.x and 4.0 support?

Are there pins that should be used for fast dma spi processing (like 9, 10, 15, 20, and 21 in the Teensy 3.x series)?

Michael you might want to check out what @KurtE is working on with the ST7735/89 adafruit libraries - https://forum.pjrc.com/threads/54711-Teensy-4-0-First-Beta-Test?p=208735&viewfull=1#post208735. Start there then what follows is interesting on the speed up in following posts. Uses normal SPI pins 11,12,13 - think we have been using 10 for CS.
 
Hi firehopper,

I just got my T4 Beta 2 hardware today and installed 1.47-beta4. Tried compiling my Fast LED sketch for an APA102 strip. Where is the patch you mentioned?
applied the patch to fastled

When I try to build it, it failed with a static assert:
Code:
/home/corbett/Arduino/libraries/FastLED/fastpin.h:206:2: error: static assertion failed: Invalid pin specified
  static_assert(validpin(), "Invalid pin specified");
Tried switching to software pins.
Code:
#define FASTLED_FORCE_SOFTWARE_PINS
Got type errors.
Code:
Arduino: 1.8.9 (Linux), TD: 1.47-beta4, Board: "Teensy 4-Beta2, Serial, Faster, US English"

/home/corbett/Downloads/arduino-1.8.9/arduino-builder -dump-prefs -logger=machine -hardware /home/corbett/Downloads/arduino-1.8.9/hardware -tools /home/corbett/Downloads/arduino-1.8.9/tools-builder -tools /home/corbett/Downloads/arduino-1.8.9/hardware/tools/avr -built-in-libraries /home/corbett/Downloads/arduino-1.8.9/libraries -libraries /home/corbett/Arduino/libraries -fqbn=teensy:avr:teensy4b2:usb=serial,opt=o2std,keys=en-us -ide-version=10809 -build-path /tmp/arduino_build_937267 -warnings=none -build-cache /tmp/arduino_cache_899972 -verbose /home/corbett/rgbaccent/rgbaccent.ino
/home/corbett/Downloads/arduino-1.8.9/arduino-builder -compile -logger=machine -hardware /home/corbett/Downloads/arduino-1.8.9/hardware -tools /home/corbett/Downloads/arduino-1.8.9/tools-builder -tools /home/corbett/Downloads/arduino-1.8.9/hardware/tools/avr -built-in-libraries /home/corbett/Downloads/arduino-1.8.9/libraries -libraries /home/corbett/Arduino/libraries -fqbn=teensy:avr:teensy4b2:usb=serial,opt=o2std,keys=en-us -ide-version=10809 -build-path /tmp/arduino_build_937267 -warnings=none -build-cache /tmp/arduino_cache_899972 -verbose /home/corbett/rgbaccent/rgbaccent.ino
Using board 'teensy4b2' from platform in folder: /home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr
Using core 'teensy4' from platform in folder: /home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr
Detecting libraries used...
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 /tmp/arduino_build_937267/sketch/rgbaccent.ino.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED /tmp/arduino_build_937267/sketch/rgbaccent.ino.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /tmp/arduino_build_937267/sketch/rgbaccent.ino.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /home/corbett/Arduino/libraries/FastLED/FastLED.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /home/corbett/Arduino/libraries/FastLED/bitswap.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /home/corbett/Arduino/libraries/FastLED/colorpalettes.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /home/corbett/Arduino/libraries/FastLED/colorutils.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /home/corbett/Arduino/libraries/FastLED/hsv2rgb.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /home/corbett/Arduino/libraries/FastLED/lib8tion.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /home/corbett/Arduino/libraries/FastLED/noise.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /home/corbett/Arduino/libraries/FastLED/power_mgt.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /home/corbett/Arduino/libraries/FastLED/wiring.cpp -o /dev/null
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /home/corbett/Arduino/libraries/Bounce2/Bounce2.cpp -o /dev/null
Generating function prototypes...
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /tmp/arduino_build_937267/sketch/rgbaccent.ino.cpp -o /tmp/arduino_build_937267/preproc/ctags_target_for_gcc_minus_e.cpp
/home/corbett/Downloads/arduino-1.8.9/tools-builder/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /tmp/arduino_build_937267/preproc/ctags_target_for_gcc_minus_e.cpp
Compiling sketch...
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/precompile_helper /home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 /tmp/arduino_build_937267 /home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -x c++-header -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -MMD -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 /tmp/arduino_build_937267/pch/Arduino.h -o /tmp/arduino_build_937267/pch/Arduino.h.gch
Using previously compiled file: /tmp/arduino_build_937267/pch/Arduino.h.gch
/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/../tools/arm/bin/arm-none-eabi-g++ -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -MMD -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=147 -DARDUINO=10809 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I/tmp/arduino_build_937267/pch -I/home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/cores/teensy4 -I/home/corbett/Arduino/libraries/FastLED -I/home/corbett/Arduino/libraries/Bounce2 /tmp/arduino_build_937267/sketch/rgbaccent.ino.cpp -o /tmp/arduino_build_937267/sketch/rgbaccent.ino.cpp.o
In file included from /home/corbett/Arduino/libraries/FastLED/platforms/avr/fastled_avr.h:4:0,
                 from /home/corbett/Arduino/libraries/FastLED/platforms.h:32,
                 from /home/corbett/Arduino/libraries/FastLED/FastLED.h:55,
                 from /home/corbett/rgbaccent/rgbaccent.ino:55:
/home/corbett/Arduino/libraries/FastLED/platforms/avr/fastpin_avr.h:7:2: warning: #warning "Software pin support forced, pin access will be sloightly slower." [-Wcpp]
 #warning "Software pin support forced, pin access will be sloightly slower."
  ^
In file included from /home/corbett/rgbaccent/rgbaccent.ino:55:0:
/home/corbett/Arduino/libraries/FastLED/FastLED.h:563:2: warning: #warning "No pin/port mappings found, pin access will be slightly slower. See fastpin.h for info." [-Wcpp]
 #warning "No pin/port mappings found, pin access will be slightly slower. See fastpin.h for info."
  ^
In file included from /home/corbett/rgbaccent/rgbaccent.ino:55:0:
/home/corbett/Arduino/libraries/FastLED/FastLED.h:17:21: note: #pragma message: FastLED version 3.001.006
 #    pragma message "FastLED version 3.001.006"
                     ^
In file included from /home/corbett/Arduino/libraries/FastLED/platforms/avr/fastled_avr.h:6:0,
                 from /home/corbett/Arduino/libraries/FastLED/platforms.h:32,
                 from /home/corbett/Arduino/libraries/FastLED/FastLED.h:55,
                 from /home/corbett/rgbaccent/rgbaccent.ino:55:
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h: In static member function 'static void ClocklessController<DATA_PIN, T1, T2, T3, RGB_ORDER, XTRA0, FLIP, WAIT_TIME>::showRGBInternal(PixelController<RGB_ORDER>&)':
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:397:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 7) LDSCL4(b1,O1)  D2(4) LO1 PRESCALEA2(d1) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:397:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 7) LDSCL4(b1,O1)  D2(4) LO1 PRESCALEA2(d1) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:397:67: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 7) LDSCL4(b1,O1)  D2(4) LO1 PRESCALEA2(d1) D3(2)
                                                                   ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:398:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 6) PRESCALEB4(d1) D2(4) LO1 SCALE12(b1,0) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:398:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 6) PRESCALEB4(d1) D2(4) LO1 SCALE12(b1,0) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:398:66: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 6) PRESCALEB4(d1) D2(4) LO1 SCALE12(b1,0) D3(2)
                                                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:399:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 5) RORSC14(b1,1)  D2(4) LO1 RORCLC2(b1)  D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:399:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 5) RORSC14(b1,1)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:399:65: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 5) RORSC14(b1,1)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                                                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:400:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 4) SCROR14(b1,2)  D2(4) LO1 SCALE12(b1,3) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:400:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 4) SCROR14(b1,2)  D2(4) LO1 SCALE12(b1,3) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:400:66: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 4) SCROR14(b1,2)  D2(4) LO1 SCALE12(b1,3) D3(2)
                                                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:401:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 3) RORSC14(b1,4)  D2(4) LO1 RORCLC2(b1)  D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:401:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 3) RORSC14(b1,4)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:401:65: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 3) RORSC14(b1,4)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                                                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:402:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 2) SCROR14(b1,5)  D2(4) LO1 SCALE12(b1,6) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:402:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 2) SCROR14(b1,5)  D2(4) LO1 SCALE12(b1,6) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:402:66: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 2) SCROR14(b1,5)  D2(4) LO1 SCALE12(b1,6) D3(2)
                                                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:403:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 1) RORSC14(b1,7)  D2(4) LO1 RORCLC2(b1)  D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:403:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 1) RORSC14(b1,7)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:403:65: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 1) RORSC14(b1,7)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                                                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:404:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 0)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:406:14: note: in expansion of macro 'D2'
      case 4: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:406:24: note: in expansion of macro 'D3'
      case 4: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:406:34: note: in expansion of macro 'D1'
      case 4: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:407:14: note: in expansion of macro 'D2'
      case 3: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:407:24: note: in expansion of macro 'D3'
      case 3: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:407:34: note: in expansion of macro 'D1'
      case 3: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:408:14: note: in expansion of macro 'D2'
      case 2: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:408:24: note: in expansion of macro 'D3'
      case 2: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:408:34: note: in expansion of macro 'D1'
      case 2: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:409:14: note: in expansion of macro 'D2'
      case 1: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:409:24: note: in expansion of macro 'D3'
      case 1: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:409:34: note: in expansion of macro 'D1'
      case 1: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:411:30: note: in expansion of macro 'D2'
     MOV_ADDDE14(b0,b1,d1,e1) D2(4) LO1 D3(0)
                              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:411:40: note: in expansion of macro 'D3'
     MOV_ADDDE14(b0,b1,d1,e1) D2(4) LO1 D3(0)
                                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:413:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 7) LDSCL4(b1,O2)  D2(4) LO1 PRESCALEA2(d2) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:413:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 7) LDSCL4(b1,O2)  D2(4) LO1 PRESCALEA2(d2) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:413:67: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 7) LDSCL4(b1,O2)  D2(4) LO1 PRESCALEA2(d2) D3(2)
                                                                   ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:414:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 6) PSBIDATA4(d2)  D2(4) LO1 SCALE22(b1,0) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:414:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 6) PSBIDATA4(d2)  D2(4) LO1 SCALE22(b1,0) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:414:66: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 6) PSBIDATA4(d2)  D2(4) LO1 SCALE22(b1,0) D3(2)
                                                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:415:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 5) RORSC24(b1,1)  D2(4) LO1 RORCLC2(b1)  D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:415:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 5) RORSC24(b1,1)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:415:65: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 5) RORSC24(b1,1)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                                                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:416:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 4) SCROR24(b1,2)  D2(4) LO1 SCALE22(b1,3) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:416:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 4) SCROR24(b1,2)  D2(4) LO1 SCALE22(b1,3) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:416:66: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 4) SCROR24(b1,2)  D2(4) LO1 SCALE22(b1,3) D3(2)
                                                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:417:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 3) RORSC24(b1,4)  D2(4) LO1 RORCLC2(b1)  D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:417:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 3) RORSC24(b1,4)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:417:65: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 3) RORSC24(b1,4)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                                                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:418:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 2) SCROR24(b1,5)  D2(4) LO1 SCALE22(b1,6) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:418:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 2) SCROR24(b1,5)  D2(4) LO1 SCALE22(b1,6) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:418:66: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 2) SCROR24(b1,5)  D2(4) LO1 SCALE22(b1,6) D3(2)
                                                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:419:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 1) RORSC24(b1,7)  D2(4) LO1 RORCLC2(b1)  D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:419:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 1) RORSC24(b1,7)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:419:65: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 1) RORSC24(b1,7)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                                                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:420:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 0)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:422:14: note: in expansion of macro 'D2'
      case 4: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:422:24: note: in expansion of macro 'D3'
      case 4: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:422:34: note: in expansion of macro 'D1'
      case 4: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:423:14: note: in expansion of macro 'D2'
      case 3: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:423:24: note: in expansion of macro 'D3'
      case 3: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:423:34: note: in expansion of macro 'D1'
      case 3: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:424:14: note: in expansion of macro 'D2'
      case 2: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:424:24: note: in expansion of macro 'D3'
      case 2: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:424:34: note: in expansion of macro 'D1'
      case 2: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:425:14: note: in expansion of macro 'D2'
      case 1: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:425:24: note: in expansion of macro 'D3'
      case 1: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:425:34: note: in expansion of macro 'D1'
      case 1: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
Multiple libraries were found for "FastLED.h"
 Used: /home/corbett/Arduino/libraries/FastLED
 Not used: /home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/libraries/FastLED
Multiple libraries were found for "Bounce2.h"
 Used: /home/corbett/Arduino/libraries/Bounce2
 Not used: /home/corbett/Downloads/arduino-1.8.9/hardware/teensy/avr/libraries/Bounce2
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:431:26: note: in expansion of macro 'D2'
     MOV_NEGD24(b0,b1,d2) D2(4) LO1 ADDDE1(d2,e2) D3(1)
                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:431:50: note: in expansion of macro 'D3'
     MOV_NEGD24(b0,b1,d2) D2(4) LO1 ADDDE1(d2,e2) D3(1)
                                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:432:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 7) LDSCL4(b1,O0)  D2(4) LO1 PRESCALEA2(d0) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:432:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 7) LDSCL4(b1,O0)  D2(4) LO1 PRESCALEA2(d0) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:432:67: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 7) LDSCL4(b1,O0)  D2(4) LO1 PRESCALEA2(d0) D3(2)
                                                                   ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:433:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 6) PRESCALEB4(d0) D2(4) LO1 SCALE02(b1,0) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:433:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 6) PRESCALEB4(d0) D2(4) LO1 SCALE02(b1,0) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:433:66: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 6) PRESCALEB4(d0) D2(4) LO1 SCALE02(b1,0) D3(2)
                                                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:434:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 5) RORSC04(b1,1)  D2(4) LO1 RORCLC2(b1)  D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:434:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 5) RORSC04(b1,1)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:434:65: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 5) RORSC04(b1,1)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                                                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:435:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 4) SCROR04(b1,2)  D2(4) LO1 SCALE02(b1,3) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:435:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 4) SCROR04(b1,2)  D2(4) LO1 SCALE02(b1,3) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:435:66: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 4) SCROR04(b1,2)  D2(4) LO1 SCALE02(b1,3) D3(2)
                                                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:436:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 3) RORSC04(b1,4)  D2(4) LO1 RORCLC2(b1)   D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:436:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 3) RORSC04(b1,4)  D2(4) LO1 RORCLC2(b1)   D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:436:66: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 3) RORSC04(b1,4)  D2(4) LO1 RORCLC2(b1)   D3(2)
                                                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:437:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 2) SCROR04(b1,5)  D2(4) LO1 SCALE02(b1,6) D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:437:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 2) SCROR04(b1,5)  D2(4) LO1 SCALE02(b1,6) D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:437:66: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 2) SCROR04(b1,5)  D2(4) LO1 SCALE02(b1,6) D3(2)
                                                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:438:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 1) RORSC04(b1,7)  D2(4) LO1 RORCLC2(b1)  D3(2)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:438:42: note: in expansion of macro 'D2'
     HI1 D1(1) QLO2(b0, 1) RORSC04(b1,7)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                          ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:438:65: note: in expansion of macro 'D3'
     HI1 D1(1) QLO2(b0, 1) RORSC04(b1,7)  D2(4) LO1 RORCLC2(b1)  D3(2)
                                                                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:439:9: note: in expansion of macro 'D1'
     HI1 D1(1) QLO2(b0, 0)
         ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:441:14: note: in expansion of macro 'D2'
      case 4: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:441:24: note: in expansion of macro 'D3'
      case 4: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:441:34: note: in expansion of macro 'D1'
      case 4: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:442:14: note: in expansion of macro 'D2'
      case 3: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:442:24: note: in expansion of macro 'D3'
      case 3: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:442:34: note: in expansion of macro 'D1'
      case 3: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:443:14: note: in expansion of macro 'D2'
      case 2: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:443:24: note: in expansion of macro 'D3'
      case 2: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:443:34: note: in expansion of macro 'D1'
      case 2: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:444:14: note: in expansion of macro 'D2'
      case 1: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:444:24: note: in expansion of macro 'D3'
      case 1: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                        ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:74:17: note: in expansion of macro 'DINT'
 #define D1(ADJ) DINT(T1,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:444:34: note: in expansion of macro 'D1'
      case 1: D2(0) LO1 D3(0) HI1 D1(1) QLO2(b0,0)
                                  ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:75:17: note: in expansion of macro 'DINT'
 #define D2(ADJ) DINT(T2,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:446:30: note: in expansion of macro 'D2'
     MOV_ADDDE04(b0,b1,d0,e0) D2(4) LO1 D3(5)
                              ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:73:47: warning: there are no arguments to 'AVR_PIN_CYCLES' that depend on a template parameter, so a declaration of 'AVR_PIN_CYCLES' must be available [-fpermissive]
 #define DINT(T,ADJ) if(AVR_PIN_CYCLES(DATA_PIN)==1) { DINTPIN(T,ADJ,1) } else { DINTPIN(T,ADJ,2); }
                                               ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:76:17: note: in expansion of macro 'DINT'
 #define D3(ADJ) DINT(T3,ADJ)
                 ^
/home/corbett/Arduino/libraries/FastLED/platforms/avr/clockless_trinket.h:446:40: note: in expansion of macro 'D3'
     MOV_ADDDE04(b0,b1,d0,e0) D2(4) LO1 D3(5)
                                        ^
In file included from /home/corbett/Arduino/libraries/FastLED/FastLED.h:68:0,
                 from /home/corbett/rgbaccent/rgbaccent.ino:55:
/home/corbett/Arduino/libraries/FastLED/fastspi.h: At global scope:
/home/corbett/Arduino/libraries/FastLED/fastspi.h:110:23: note: #pragma message: No hardware SPI pins defined.  All SPI access will default to bitbanged output
 #      pragma message "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
                       ^
In file included from /home/corbett/rgbaccent/rgbaccent.ino:55:0:
/home/corbett/Arduino/libraries/FastLED/FastLED.h: In static member function 'static CLEDController& CFastLED::addLeds(CRGB*, int, int)':
/home/corbett/Arduino/libraries/FastLED/FastLED.h:237:62: warning: large integer implicitly truncated to unsigned type [-Woverflow]
    case WS2801: { static WS2801Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
                                                              ^
/home/corbett/Arduino/libraries/FastLED/FastLED.h: In static member function 'static CLEDController& CFastLED::addLeds(CRGB*, int, int)':
/home/corbett/Arduino/libraries/FastLED/FastLED.h:250:73: warning: large integer implicitly truncated to unsigned type [-Woverflow]
    case WS2801: { static WS2801Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
                                                                         ^
In file included from /home/corbett/Arduino/libraries/FastLED/FastLED.h:51:0,
                 from /home/corbett/rgbaccent/rgbaccent.ino:55:
/home/corbett/Arduino/libraries/FastLED/fastpin.h: In instantiation of 'static void FastPin<PIN>::_init() [with unsigned char PIN = 26u]':
/home/corbett/Arduino/libraries/FastLED/fastpin.h:175:40:   required from 'static void FastPin<PIN>::setOutput() [with unsigned char PIN = 26u]'
/home/corbett/Arduino/libraries/FastLED/fastspi_bitbang.h:39:31:   required from 'void AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::init() [with unsigned char DATA_PIN = 26u; unsigned char CLOCK_PIN = 27u; unsigned char SPI_SPEED = 50u]'
/home/corbett/Arduino/libraries/FastLED/chipsets.h:226:3:   required from 'void SK9822Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED>::init() [with unsigned char DATA_PIN = 26u; unsigned char CLOCK_PIN = 27u; EOrder RGB_ORDER = (EOrder)136u; unsigned char SPI_SPEED = 50u]'
/home/corbett/rgbaccent/rgbaccent.ino:373:1:   required from here
/home/corbett/Arduino/libraries/FastLED/fastpin.h:167:9: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'RwReg* {aka volatile unsigned char*}' in assignment
   sPort = portOutputRegister(digitalPinToPort(PIN));
         ^
/home/corbett/Arduino/libraries/FastLED/fastpin.h:168:11: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'RoReg* {aka volatile unsigned char*}' in assignment
   sInPort = portInputRegister(digitalPinToPort(PIN));
           ^
/home/corbett/Arduino/libraries/FastLED/fastpin.h: In instantiation of 'static void FastPin<PIN>::_init() [with unsigned char PIN = 27u]':
/home/corbett/Arduino/libraries/FastLED/fastpin.h:175:40:   required from 'static void FastPin<PIN>::setOutput() [with unsigned char PIN = 27u]'
/home/corbett/Arduino/libraries/FastLED/fastspi_bitbang.h:40:32:   required from 'void AVRSoftwareSPIOutput<DATA_PIN, CLOCK_PIN, SPI_SPEED>::init() [with unsigned char DATA_PIN = 26u; unsigned char CLOCK_PIN = 27u; unsigned char SPI_SPEED = 50u]'
/home/corbett/Arduino/libraries/FastLED/chipsets.h:226:3:   required from 'void SK9822Controller<DATA_PIN, CLOCK_PIN, RGB_ORDER, SPI_SPEED>::init() [with unsigned char DATA_PIN = 26u; unsigned char CLOCK_PIN = 27u; EOrder RGB_ORDER = (EOrder)136u; unsigned char SPI_SPEED = 50u]'
/home/corbett/rgbaccent/rgbaccent.ino:373:1:   required from here
/home/corbett/Arduino/libraries/FastLED/fastpin.h:167:9: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'RwReg* {aka volatile unsigned char*}' in assignment
   sPort = portOutputRegister(digitalPinToPort(PIN));
         ^
/home/corbett/Arduino/libraries/FastLED/fastpin.h:168:11: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'RoReg* {aka volatile unsigned char*}' in assignment
   sInPort = portInputRegister(digitalPinToPort(PIN));
           ^
Using library FastLED at version 3.1.6 in folder: /home/corbett/Arduino/libraries/FastLED 
Using library Bounce2 at version 2.2 in folder: /home/corbett/Arduino/libraries/Bounce2 
Error compiling for board Teensy 4-Beta2.
Here's the sketch:
Code:
// -*-c++-*-
// Accent light USB-serial controller
//
// This firmware is part of a system to control and automate accent
// lighting in my home. The system is built using the FastLED library,
// APA102 RGB LEDs, Teensy 3.2 ARM Cortex-M4 development board, A5-V11
// WiFi router, OpenWrt, and Lua.
//
// The A5-V11 WiFi router is running OpenWrt in station mode. The
// A5-V11 is a client of our main WiFi router, just like a personal
// computer or tablet. The A5-V11 changes the lights according to the
// time of day. The A5-V11 also runs a webserver enabling anyone on
// our network to change the color and brightness of the lights. The
// A5-V11 has a USB-serial connection to the Teensy via an ordinary
// USB cable. The Teensy is connected to two momentary push buttons
// and an I/O buffer IC used to boost the 3.3V signals from the Teensy
// to 5V needed for the APA102 RGB LED strip.
//
// It is remarkable that the A5-V11 is available for less than $10
// including shipping. This device is about the size of a
// lighter. This is considerably less expensive, and more convenient
// than many of the so-called maker movement products with similar
// functionality from the big names like Arduino CC, Adafruit,
// SparkFun and the Raspberry Pi Foundation. The only drawback is that
// the A5-V11 is generic no-name electronics so sourcing models with
// the right ICs and firmware could be challenging. I haven't had
// trouble but others have.


// For the accent lighting control, the operations we want are:
//    set color
//    set animation
//    fade to color over interval
//    set pattern
//    rotate pattern over interval
//    define pattern
//    declare branch target
//    go to branch target
//    add a bump of a width and shape at a position
//    save the current configuration as a pattern


// since the LEDs are so well diffused, we we can use simple math for
// feathering the edges
//
// since there are so few LEDs relative to the processor speed and
// data rate, we can use whatever is most convenient to program


#include <cstddef>
#include <cctype>
#include <cstdint>


#define FASTLED_FORCE_SOFTWARE_PINS
// The marvelous FastLED library provides a high-level interface to
// many kinds of RGB LEDs and drives them efficiently. See
// http://fastled.io
#include <FastLED.h>


#include <Bounce2.h>


// We'll use BOARD to announce the board type over the serial
// connection on startup.


#if defined(TEENSYDUINO)
    #if defined(__MK20DX128__)
        #define BOARD "Teensy 3.0"
    #elif defined(__MK20DX256__)
        #define BOARD "Teensy 3.1" // and Teensy 3.2
    #elif defined(__MKL26Z64__)
        #define BOARD "Teensy LC"
    #elif defined(__MK64FX512__)
        #define BOARD "Teensy 3.5"
    #elif defined(__MK66FX1M0__)
        #define BOARD "Teensy 3.6"
    #elif defined(__IMXRT1062__)
        #define BOARD "Teensy 4.0"
    #else
       #error "Unknown board"
    #endif
#endif


// Parameters for our LEDs
#define LED_TYPE APA102
#define COLOR_ORDER BGR
const int DATA_PIN = 26;//11;
const int CLOCK_PIN = 27;//14;
const unsigned int NUM_LEDS = 96;
const unsigned int CLOCK_MHZ = 12;


// Wire color and pin number for two momentary-contact push buttons.
const int YELLOW4 = 4;
const int WHITE5 = 5;


Bounce leftButton = Bounce(WHITE5, 10);   // 10 ms debounce
Bounce rightButton = Bounce(YELLOW4, 10); // 10 ms debounce


// Storage for LED colors.
CRGB leds[NUM_LEDS];


// Blink the built-in LED n times.
void debugBlink(int blinkCount) {
   const int blink_ms = 100;
   for (int i = 0; i < blinkCount; ++i) {
      digitalWriteFast(LED_BUILTIN, 1);
      delay(blink_ms);
      digitalWriteFast(LED_BUILTIN, 0);
      delay(blink_ms);
   }
   // Pause so that immediately consecutive calls can be distinguished
   // from a single call with greater blinkCount.
   delay(3 * blink_ms);
}


// Command argument structure
struct cmdarg_t {
   const char* const name;
   CRGB color1;
   long duration_ms;
};


// A command is an argument structure and a function.
class cmd_t {
public:
   cmdarg_t a;
   void (*fn)(cmdarg_t a);
};


// Set all the LEDs to color1.
void solidColor(struct cmdarg_t a) {
   if (a.duration_ms) {


      // Fade from the current leds to the new solid color.


      CRGB overlay[NUM_LEDS];
      fill_solid(overlay, NUM_LEDS, a.color1);
      for (int i = 0; i < 256; ++i) {
         nblend(leds, overlay, NUM_LEDS, 4);
         FastLED.delay(a.duration_ms); // Includes FastLED.show().
      }
      Serial.println("Done!");
   }
   fill_solid(leds, NUM_LEDS, a.color1);
}


// Limit the power drawn by the LEDs. It is possible to crash the
// router or Teensy by commanding the LEDs to get too bright.
//
//    Power supply           2000mA
//
//    A5-V11                  170mA
//    Teensy 3.2               35mA
//    MM74HTC245N Bus Buffer   70mA
//
//    Availble for LEDs      1725mA
//
// The buffer worst case is based on 35mA drive strength of each
// output and we're only using two. Actual current needed is
// whatever it takes to switch two inputs from the first LED in the
// chain. Probably under 10mA.
//
// We're guessing that the FastLED has a good estimate for the
// current draw of the APA102 RGB LEDs.
//
// TODO: Find a better way than #define. Using this for now because
// C++ lambda expressions can't have captures when used in a struct
// initializer.
#define LEDS_ON_2A 1500


// Limit the power drawn by the LEDs while plugged into a PC's USB 2.0
// port.
#define LEDS_ON_USB2 400


const unsigned long fade_ms = 32;


const cmd_t cmds[] = {


   // Control-related commands
   {{"startup", 0, 0},
    [] (cmdarg_t a) {
       // Set the first three LEDS to red, green, and blue respective.
       fill_solid(leds, NUM_LEDS, CRGB::Black);
       leds[0] = CRGB::Red;
       leds[1] = CRGB::Green;
       leds[2] = CRGB::Blue;
    }},
   {{"maxma", 0, 0},
    [] (cmdarg_t a) {
       FastLED.setMaxPowerInVoltsAndMilliamps(5, LEDS_ON_2A);
    }},
   {{"usbma", 0, 0},
    [] (cmdarg_t a) {
       FastLED.setMaxPowerInVoltsAndMilliamps(5, LEDS_ON_USB2);
    }},


   {{"dim",    0, 0}, [] (cmdarg_t a) { FastLED.setBrightness(8); }},
   {{"medium", 0, 0}, [] (cmdarg_t a) { FastLED.setBrightness(24); }},
   {{"bright", 0, 0}, [] (cmdarg_t a) { FastLED.setBrightness(32); }},
   {{"full",   0, 0}, [] (cmdarg_t a) { FastLED.setBrightness(48); }},


   // Scenes
   {{"black",  CRGB::Black,     fade_ms}, solidColor},
   {{"white",  CRGB::White,     fade_ms}, solidColor},
   {{"red",    CRGB::Red,       fade_ms}, solidColor},
   {{"orange", CRGB::OrangeRed, fade_ms}, solidColor},
   {{"yellow", CRGB::Yellow,    fade_ms}, solidColor},
   {{"green",  CRGB::Green,     fade_ms}, solidColor},
   {{"aqua",   CRGB::Aqua,      fade_ms}, solidColor},
   {{"blue",   CRGB::Blue,      fade_ms}, solidColor},
   {{"purple", CRGB::Purple,    fade_ms}, solidColor},
   {{"pink",   CRGB::Pink,      fade_ms}, solidColor},
   {{"rainbow", 0, 0},
    [] (cmdarg_t a) {
       fill_rainbow(leds, NUM_LEDS, HUE_RED, 1);
    }},
   {{"alarm", 0, 0}, [] (cmdarg_t) {}}
};


const size_t cmd_count = sizeof cmds / sizeof *cmds;


// Size of null-terminated command buffer.
const size_t cmax = 256;


size_t getCommandNumber(const char* const name) {
   for (size_t i = 0; i < cmd_count; ++i) {
// TODO strnlen
      if (strncmp(cmds[i].a.name, name, strlen(cmds[i].a.name)) == 0) {
         return i;
      }
   }
   return -1;
}


void setup() {
   // On-board orange LED for debugging. Start in a 'fault'
   // condition. Clear it once the USB-serial connection is available.
   pinMode(LED_BUILTIN, OUTPUT);
   digitalWriteFast(LED_BUILTIN, 1);


   // Wait for the USB-serial connection.
   while (!Serial && millis() < 1000) ;


  // Turn out the light to show successful serial connection.
  digitalWriteFast(LED_BUILTIN, 0);


  // Give a little provenance in hopes of making it easier to pick up
  // this project after a long while.
  Serial.printf("Serial connection time (ms): %d\n", millis());
  Serial.printf("Teensy board type: %s\n", BOARD);
  Serial.printf("Main source file: %s\n", __FILE__);
  Serial.printf("Data pin: %d\n", DATA_PIN);
  Serial.printf("Clock pin: %d\n", CLOCK_PIN);
  Serial.printf("LED count: %d\n", NUM_LEDS);


  // And now the star of the show. Initialize the LEDs.
  FastLED.addLeds<LED_TYPE, DATA_PIN, CLOCK_PIN,
      COLOR_ORDER, DATA_RATE_MHZ(CLOCK_MHZ)>(leds, NUM_LEDS);


  // Limit the power to a fraction of USB 2.0 power while theathe
  FastLED.setMaxPowerInVoltsAndMilliamps(5, 400);


  // My strip seems to have a purple cast, at least at low brightness.
  FastLED.setCorrection(CRGB(0xFF, 0xFF, 0xCC));


  // Start with low brightness for safety sake.
  FastLED.setBrightness(8);


  // To keep the push button inputs from floating when the buttons
  // aren't pressed, enable a resistor connected to 3.3V to pull the
  // output up to a logic 1.
  pinMode(WHITE5, INPUT_PULLUP);  // White wire to Teensy pin 5
  pinMode(YELLOW4, INPUT_PULLUP); // Yellow wire to Teensy pin 4


  Serial.printf("Invoking command '%s'.\n", cmds[0].a.name);
  cmds[0].fn(cmds[0].a);
}


void loop() {


   // Handle USB-serial commands.


   static char cmdline[cmax];
   // TODO: need a better name/encapsulation of the index into the command string vs
   // index into the cmds array.
   static size_t cindex = 0;


   // Index into cmds array
   static size_t cmd = cmd_count;


   // Read a line into cmdline. Complain and truncate if longer than cmax - 1.
   while (Serial.available()) {
      unsigned int r = Serial.read();
      if (isprint(r)) {
         cmdline[cindex++] = r;
         cmdline[cindex] = 0;
         if (cindex == cmax - 1) {
            Serial.println("Command buffer overflow!");
            // The input isn't valid. Discard it.
            cindex = 0;
            cmdline[cindex] = 0;
            break;
         }
      }
   }
   if (cindex) {
      // TODO: better parser. match command based on first word (upto
      // whitespace or eol).  Remaining text is actual arguments.
      size_t candidate = getCommandNumber(cmdline);
      if (candidate != (size_t) -1) {
         cmd = candidate;
         Serial.printf("matched: %s\n", cmdline);
         cmds[cmd].fn(cmds[cmd].a);
      }
      cindex = 0;
   }


   // Handle button presses.
   if (leftButton.update() && leftButton.fallingEdge()) {
      // TODO: Single press toggles between off and the previous
      // brightness level. Holding the button cycles through
      // increasing brightness to off.
      Serial.println("left button WHITE5");
      if (FastLED.getBrightness()) {
         FastLED.setBrightness(0);
      } else {
         // TODO: The power limit doesn't appear to work. Otherwise we could put
         // 255 here and not have a problem, but we do.
         FastLED.setBrightness(32);
      }
      debugBlink(5);
   }


   if (rightButton.update() && rightButton.fallingEdge()) {
      // TODO Somehow pressing this button steps through the
      // colors/modes. Maybe adding the left button makes the cycling
      // faster or something. I'll have to find my documentation.
      Serial.println("right button YELLOW4");
      ++cmd;
      if (cmd_count <= cmd) cmd = getCommandNumber("white");
      Serial.printf("Setting color to %s (%d)\n", cmds[cmd].a.name, cmd);
      // Switch without the fade.
      fill_solid(leds, NUM_LEDS, cmds[cmd].a.color1);
      debugBlink(2);
   }




   // Handle work in progress.


   if (cmd == getCommandNumber("rainbow")) {
      // Slowly cycle a rainbow palette.
      static elapsedMillis rainbowDelay = 0;
      static uint8_t phase = 0;
      if (1000 < rainbowDelay) {
         ++phase;
         fill_rainbow(leds, NUM_LEDS, phase, 1);
         rainbowDelay = 0;
      }
   }


   if (cmd == getCommandNumber("alarm")) {
      // Quickly animate a block of red to the right.
      static elapsedMillis alarmDelay = 0;
      static uint8_t phase = 0;
      if (10 < alarmDelay) {
         ++phase;
         if (NUM_LEDS <= phase) phase = 0;
         fill_solid(leds, NUM_LEDS, CRGB::Black);
         for (size_t i = 0; i < 12; ++i) {
            leds[(phase + i) % NUM_LEDS] = CRGB::Red;
         }
         alarmDelay = 0;
      }
   }


   FastLED.show();
}
 
To those getting T4's

To those getting T4's - there is a post #4 on first page with links and details - a scan/search of Page One posts may be a good shortcut - for instance this one on FASTLED:

Code:
testing                 FastLED                   limited testing [URL="https://forum.pjrc.com/threads/54711-Teensy-4-0-First-Beta-Test?p=202885&viewfull=1#post202885"]post #2184[/URL]

among details there in post #2184 is a link to : github.com/manitou48/FastLED
 
24 Mhz Osc Control

I have scanned through the 1050 ref manual, but cannot see any "digital capacitors" to adjust/nudge ppm of the 24 MHz Osc frequency. Does anyone know different? The Osc diagram shows external capacitors loading the crystal.
 
There aren't any internal capacitors. Or at least not any which can be controlled from software, as we have on Teensy 3.x.

Teensy 4.0 has fixed capacitors soldered to the PCB. The 24 MHz crystal has 12 pF ones and the 32 kHz crystal has 20 pF.
 
Michael you might want to check out what @KurtE is working on with the ST7735/89 adafruit libraries - https://forum.pjrc.com/threads/54711-Teensy-4-0-First-Beta-Test?p=208735&viewfull=1#post208735. Start there then what follows is interesting on the speed up in following posts. Uses normal SPI pins 11,12,13 - think we have been using 10 for CS.
Yep still playing around with some of these displays. Note: not T4 specific, but A few more arrived yesterday...

One ST7789 again with no CS pin is not working at all for me. The Back light does not appear to work at either 3.3v or 5v ... I may punt on that one for now...

I received a 128x160 display ST7735 that appears to work fine (unless my current playing around has screwed it up).

And another 128x128, which is good as it has a different memory setup than the other ones I already have...

I pushed up my WIP version to my fork/branch: https://github.com/KurtE/ST7735_t3/tree/T4_beta

Still trying to work out the relationships between the memory windows we setup... That is for example for the INITR_144GREENTAB init, we setup the memory (CASET RASET like:)

Code:
  Rcmd2green144[] = {         // Init for 7735R, part 2 (green 1.44 tab)
    2,                        //  2 commands in list:
    ST7735_CASET  , 4      ,  //  1: Column addr set, 4 args, no delay:
      0x00, 0x00,             //     XSTART = 0
      0x00, 0x7F,             //     XEND = 127
    ST7735_RASET  , 4      ,  //  2: Row addr set, 4 args, no delay:
      0x00, 0x00,             //     XSTART = 0
      0x00, 0x7F },           //     XEND = 127
We then depending on rations, we update the X,Y positions passed in by _xstart and _ystart which the setRotation function sets up for example the 144GREENTAB 0 rotation to _xstart=0 _ystart=32

These values again update the X,Y s we pass in for all of the draw functions... But for this newer display the _xstart=2 and _ystart=3...
and currently I also updated the CASET/RASET values to add the 2 and 3 to the values...

Simple Test app I am using to try out rotations and position on screen is:
Code:
#include <Adafruit_GFX.h>    // Core graphics library
#include <ST7735_t3.h> // Hardware-specific library
#include <ST7789_t3.h> // Hardware-specific library
#include <SPI.h>

#if defined(__IMXRT1052__) || defined(__IMXRT1062__)  // Teensy 4.x
//#define USE_SPI2
//#define NON_SPI_PINS
#ifdef USE_SPI2
#define TFT_SCLK 37  // SCLK can also use pin 14
#define TFT_MOSI 35  // MOSI can also use pin 7
#elif defined(NON_SPI_PINS)
#define TFT_SCLK 7  // SCLK can also use pin 14
#define TFT_MOSI 8  // MOSI can also use pin 7
#else
#define TFT_SCLK 13  // SCLK can also use pin 14
#define TFT_MOSI 11  // MOSI can also use pin 7
#endif
#define TFT_CS   10  // CS & DC can use pins 2, 6, 9, 10, 15, 20, 21, 22, 23
#define TFT_DC    9  //  but certain pairs must NOT be used: 2+10, 6+9, 20+23, 21+22
#define TFT_RST   23  // RST can use any pin
#define SD_CS     4  // CS for SD card, can use any pin
#else
// T3.X
//#define USE_SPI1
//#define USE_SPI2
#ifdef USE_SPI1
#define TFT_SCLK 32  // T3.5/T3.6
#define TFT_MOSI 0   // 
#define TFT_CS   10  // random digital pin
#define TFT_DC   31   // Only Hardware CS pin on SPI1
#elif defined(USE_SPI2)
#define TFT_SCLK 46  // T3.5/T3.6
#define TFT_MOSI 44   // 
#define TFT_CS   54  // Hardware CS on SPI2
#define TFT_DC   55   // Hardware CS pin on SPI2
#else
#define TFT_SCLK 13  // SCLK can also use pin 14
#define TFT_MOSI 11  // MOSI can also use pin 7
//#define TFT_CS   10  // CS & DC can use pins 2, 6, 9, 10, 15, 20, 21, 22, 23
#define TFT_CS 0xff   // not using CS
#define TFT_DC    9  //  but certain pairs must NOT be used: 2+10, 6+9, 20+23, 21+22
#endif
#define TFT_RST   8  // RST can use any pin
#define SD_CS     4  // CS for SD card, can use any pin
#endif
//#define TFT_CS2   7
#define TFT_BLK 7
// Option 1: use any pins but a little slower
ST7735_t3 tft = ST7735_t3(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
//ST7789_t3 tft = ST7789_t3(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

// Option 2: must use the hardware SPI pins
// (for UNO thats sclk = 13 and sid = 11) and pin 10 must be
// an output. This is much faster - also required if you want
// to use the microSD card (see the image drawing example)
//ST7735_t3 tft = ST7735_t3(cs, dc, rst);
float p = 3.1415926;


void setup(void) {
#ifdef TFT_BLK
  pinMode(TFT_BLK, OUTPUT);
  digitalWrite(TFT_BLK, HIGH);
#endif
  pinMode(SD_CS, INPUT_PULLUP);  // don't touch the SD card
  pinMode(TFT_CS, INPUT_PULLUP);

  Serial.begin(9600);
  Serial.print("hello!");

  // Use this initializer if you're using a 1.8" TFT
  //tft.initR(INITR_BLACKTAB);
  // Use this initializer (uncomment) if you're using a 1.44" TFT
  //tft.initR(INITR_GREENTAB);
  //tft.initR(INITR_144GREENTAB);
  tft.initR(INITR_144GREENTAB_OFFSET);
  //tft.setRowColStart(0,0);
  //tft.init(240,240, SPI_MODE3) ;  // use for ILI9488

  Serial.printf("init CS:%d DC:%d MOSI:%d SCLK:%d RST:%d\n ", TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
  Serial.printf("Row Start:%d  Col Start: %d\n", tft.rowStart(), tft.colStart());
}

uint8_t rotation = 0;
void loop() {
  tft.setRotation(rotation);
  Serial.printf("Set Rotation: %d width: %d height: %d\n", rotation, tft.width(), tft.height());
  rotation = (rotation + 1) & 0x3;
  elapsedMillis timer;
  uint16_t time = millis();
  tft.fillScreen(ST7735_RED);
  tft.fillRect(tft.width() / 2 - 32, 20, 64, tft.height() - 40, ST7735_GREEN);
  tft.fillRect(0, 0, 8, 8, ST7735_BLACK);
  tft.fillRect(tft.width() - 8, tft.height() - 8, 8, 8, ST7735_WHITE);
  tft.drawPixel(0, 0, ST7735_YELLOW);
  tft.drawPixel(1, 1, ST7735_RED);
  tft.drawPixel(2, 2, ST7735_BLUE);
  tft.drawPixel(tft.width() - 1, tft.height() - 1, ST7735_YELLOW);
  tft.drawPixel(tft.width() - 2, tft.height() - 2, ST7735_RED);
  tft.drawPixel(tft.width() - 3, tft.height() - 3, ST7735_BLUE);
  // large block of text
  //delay(2500);
  Serial.println("Hit any key to continue");
  uint8_t loffset = 0;
  for (;;) {
    while (!Serial.available()) ;
    char ch = Serial.read();
    while (Serial.read() != -1) ;
    if (ch == '.') {
      tft.drawRect(loffset, loffset, tft.width() - 2 * loffset, tft.height() - 2 * loffset, ST7735_GREEN);
      loffset++;
    } else break;
  }
}
If you just hit enter in terminal emulator it will go to the next rotation to see if that looks correct... One thing I added today was a simple, if you type in a .<cr> it draws a rectangle at (0, 0, Width, Height). So you can see if all of the rectangle shows up. You can enter the .<cr> again and it draws the rectangle again brought in one pixel (1, 1, width-2, height-2). So if necessary you can do this a few times until you get an idea of where the real zero point should be...

Note: My Rotation 2 and 3 are probably off by 1 for the other displays. Still playing with the new one...
 
The CryptoAccel library does not appear to be working.

Tried manitou's code from Teensy 3.6 testing in post https://forum.pjrc.com/threads/43363-Crypto-acceleration-unit?p=140273&viewfull=1#post140273

Code:
a 510e527f 9b05688c 1f83d9ab 5be0cd19 00:45:47.960 -> sha256 10240 bytes 1078 us   KBs  9499.07
00:45:47.960 -> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
00:45:47.960 -> aes set key us 0
00:45:47.960 -> aes 16 bytes 0 us  KBs  inf
00:45:47.960 -> aes errs 10
00:45:47.960 -> aes cbc 64 bytes 3 us  KBs   21333.33
00:45:47.960 -> parity 0
00:45:47.960 -> DES errs 2
00:45:47.960 -> DES block encryption 1 us
00:45:47.960 -> 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10 
00:45:47.960 -> md5 10240 bytes 122 us  KBs 83934.43
00:45:47.960 -> ac b1 80 49 8e 24 7d f3 bd a9 17 0d 7c b8 af b0 
00:45:47.960 -> 6a09e667 bb67ae85 3c6ef372 a54ff53a 510e527f 9b05688c 1f83d9ab 5be0cd19 
00:45:47.960 -> sha256 10240 bytes 1078 us   KBs  9499.07
00:45:47.960 -> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
00:45:47.960 -> aes set key us 0
00:45:47.960 -> aes 16 bytes 0 us  KBs  inf
00:45:47.960 -> aes errs 10
00:45:47.960 -> aes cbc 64 bytes 3 us  KBs   21333.33
00:45:47.960 -> parity 0
00:45:47.960 -> DES errs 2
00:45:47.960 -> DES block encryption 0 us
00:45:47.960 -> 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10 
00:45:47.960 -> md5 10240 bytes 123 us  KBs 83252.03
00:45:47.960 -> ac b1 80 49 8e 24 7d f3 bd a9 17 0d 7c b8 af b0 
00:45:47.960 -> 6a09e667 bb67ae85 3c6ef372 a54ff53a 510e527f 9b05688c 1f83d9ab 5be0cd19 
00:45:47.960 -> sha256 10240 bytes 1078 us   KBs  9499.07
00:45:47.960 -> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
00:45:47.960 -> aes set key us 0
00:45:47.960 -> aes 16 bytes 1 us  KBs  16000.00
00:45:47.960 -> aes errs 10
00:45:47.960 -> aes cbc 64 bytes 3 us  KBs   21333.33
00:45:47.960 -> parity 0
00:45:47.960 -> DES errs 2
00:45:47.960 -> DES block encryption 1 us
00:45:47.960 -> 01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10
 
@pictographer … Post #78 page #4:
The T3.6 TRNG is nothing like the T4 TRNG, and to my knowledge the T3.6 TRNG was never incorporated into the Teensy core. We demonstrated that it worked, and you could add it to your sketches that need crypto-strength RNG.

We should develop a working example of T4 TRNG, based on NXP SDK. The reference manual says almost nothing, and the SDK example sets lots of parameters for statistical tests that the crypto engine must use in generating 512 random bits. The SDK integrates TRNG into mbedtls and wolfssl. The T4 TRNG is slow so should just be used as an entropy source for a seed to a PRNG.

Lot of params - and no public docs - what Paul saw was 55 pages of secret stuff … see posts there
 
Pulled out my PJRC Tutorial Audio board for another post ... decided to run some on T4. Discovered TeensyDuino was 147b4 - but somehow IDE had TD 1.47b1 ??? so I reinstalled 1.47b4.

Did I miss status on Audio Lib and Tutorial sketches? Using the breakout - is the wiring correct for the default sketch values? ... Am I missing forgotten updates to cores or libs - or maybe broken with a sketchbook\library?

Some stuff works - the MSC lib from USBHost drives play - but SD Card on Audio card not working here: Part 1-4: Blink LED while Playing Music

And nothing from the Microphone here :: Part 2-4: Using The Microphone
Code:
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>

// GUItool: begin automatically generated code
AudioInputI2S            i2s2;           //xy=304,287
AudioOutputI2S           i2s1;           //xy=554,288
AudioConnection          patchCord1(i2s2, 0, i2s1, 0);
AudioConnection          patchCord2(i2s2, 0, i2s1, 1);
AudioControlSGTL5000     sgtl5000_1;     //xy=351,466
// GUItool: end automatically generated code

I do get 'Beep' and Vol Pot {but don't have the rest wired } for :: Part 1-2: Test Hardware
 
The CryptoAccel library does not appear to be working.

The T4 crypto accel (DCP) is not the same as T3.5/T3.6 (MMCAU). Searching the first few posts of the this thread, post #4 i think, mentions crypto accel with some preliminary results at https://forum.pjrc.com/threads/54711-Teensy-4-0-First-Beta-Test?p=197722&viewfull=1#post197722
includes AES, SHA256, and fixed-poly CRC32. The mbed SDK has incorporated DCP and MMCAU into their TLS lib and wolfssl lib.

T4 random number generator (TRNG) discussed at https://forum.pjrc.com/threads/54711-Teensy-4-0-First-Beta-Test?p=195000&viewfull=1#post195000
 
Last edited:
T4 Faults with Eigen???

In the thread, Problems with eigen library on Teensy 3.6, the issue seemed to be running out of memory on the T3.6 using doubles. I decided to give it a try with the T4.

If I run the sketch:
Code:
#include <Eigen.h>     // Calls main Eigen matrix class library
#include <Eigen/LU>    // Calls inverse, determinant, LU decomp., etc.
using namespace Eigen; // Eigen related statement; simplifies syntax for declaration of matrices

Eigen::MatrixXd A;
Eigen::VectorXd b;
Eigen::VectorXd x;

elapsedMillis sincePrint;

#define SIZE 200

void setup() {
  while ( !Serial );

  Serial.print("B.resize ...\n");
  b.resize(SIZE);
  Serial.print("x.resize ...\n");
  x.resize(SIZE);
  Serial.print("A.resize ...\n");
  A.resize(SIZE, SIZE);
  Serial.print("Done .resize ...\n");

}

void loop() {
  // put your main code here, to run repeatedly:

  sincePrint = 0;

  A.setRandom();
  b.setRandom();

  x = A.lu().solve(b);


  Serial.print("Total time: ");
  Serial.print(sincePrint);
  Serial.print("\n");

  delay(1000);
}
with an array of 150x150 runs with no issue but when increased to 200x200 it will compile with no indication that I overshot memory:
Code:
Sketch uses 31808 bytes (1%) of program storage space. Maximum is 2031616 bytes.
Global variables use 37984 bytes (3%) of dynamic memory, leaving 1010592 bytes for local variables. Maximum is 1048576 bytes.
yet if I look at debug on Serial4:
Code:
Fault irq 3
 stacked_r0 ::  CC248770
 stacked_r1 ::  BFA243B8
 stacked_r2 ::  000027F8
 stacked_r3 ::  202034B8
 stacked_r12 ::  20001323
 stacked_lr ::  00004B3D
 stacked_pc ::  000027D8
 stacked_psr ::  21000000
 _CFSR ::  00000082
      (DACCVIOL) Data Access Violation
      (MMARVALID) MemMange Fault Address Valid
 _HFSR ::  40000000
      (FORCED) Forced Hard Fault
 _DFSR ::  00000000
 _AFSR ::  00000000
 _BFAR ::  CC248770
 _MMAR ::  CC248770
need to switch to alternate clock during reconfigure of ARM PLL
USB PLL is running, so we can use 120 MHz
Freq: 12 MHz * 75 / 3 / 1
ARM PLL=80002064
ARM PLL needs reconfigure
ARM PLL=8000204B
New Frequency: ARM=300000000, IPG=150000000
Decreasing voltage to 1150 mV
it looks like a memory fault. Have a feeling at compile its not picking up the array size exceeding memory when available because its in the setup so a Eigen lib issue?

Now for another fun fault. If I change the sketch to use floats and specify 300x300 I get a fault again but its different:
Code:
Fault irq 3
 stacked_r0 ::  20258CB8
 stacked_r1 ::  BF41ED27
 stacked_r2 ::  00002910
 stacked_r3 ::  202032B0
 stacked_r12 ::  20001323
 stacked_lr ::  00004BE1
 stacked_pc ::  000028FC
 stacked_psr ::  21000000
 _CFSR ::  00010000
      (UNDEFINSTR) Undefined instruction
 _HFSR ::  40000000
      (FORCED) Forced Hard Fault
 _DFSR ::  00000000
 _AFSR ::  00000000
 _BFAR ::  00000000
 _MMAR ::  00000000
need to switch to alternate clock during reconfigure of ARM PLL
USB PLL is running, so we can use 120 MHz
Freq: 12 MHz * 75 / 3 / 1
ARM PLL=80002064
ARM PLL needs reconfigure
ARM PLL=8000204B
New Frequency: ARM=300000000, IPG=150000000
Decreasing voltage to 1150 mV
Now its indicating a "undefined instruction" - memory issue?

Not sure this is a problem or if there is a work around to warn the user?
 
This is a follow-on to the previous post. Changed the format for specifying the array size so the sketch now reads:
Code:
#include <Eigen.h>     // Calls main Eigen matrix class library
#include <Eigen/LU>    // Calls inverse, determinant, LU decomp., etc.
using namespace Eigen; // Eigen related statement; simplifies syntax for declaration of matrices

//Eigen::MatrixXd A;
Eigen::MatrixXf A(200,200);
//Eigen::VectorXd b;
Eigen::VectorXf b(200,200);
//Eigen::VectorXf x;
Eigen::VectorXf x(200,200);

elapsedMillis sincePrint;

#define SIZE 300

void setup() {
  while ( !Serial );

  Serial.print("B.resize ...\n");
  //b.resize(SIZE);
  Serial.print("x.resize ...\n");
  //x.resize(SIZE);
  Serial.print("A.resize ...\n");
  //A.resize(SIZE, SIZE);
  Serial.print("Done .resize ...\n");

}

void loop() {
  // put your main code here, to run repeatedly:

  sincePrint = 0;

  A.setRandom();
  b.setRandom();

  x = A.lu().solve(b);


  Serial.print("Total time: ");
  Serial.print(sincePrint);
  Serial.print("\n");

  delay(1000);
}
At 100x100 sketch runs no issue. However, found new problem. If I increase it to 200x200 it does compile but on loading I hit the Teensy Bootloader Automatic mode disabled window and the Teensyduino loader window just shows the beta4 symbol and the T4 shows it it bootloader. I am attaching the log file:
View attachment log.txt

to duplicate you will need the bolderflight eigen library: https://github.com/bolderflight/Eigen

EDIT 7/7/19:
Re ran it as a check. The red stays on bright and it does get through the prints in the setup and sermon goes gray. On the T3.5 it shows similar behavior but with the simple difference it still prints from setup - sermon says active but nothing further and it does not enter bootloader.
 
Last edited:
@mjs513 for p#3493 - what does it say on IDE's sketch Mem used?

Cool! The Fault reg dump label code with _?FSR error decoration works - and the speed drop in case it was hot!

Hey - that's the Eigen setup code I posted there … I don't have a current copy of Eigen { I was rushing to bed before the sun came up } - so not sure what printed but as posted it looked like a dynamic mem alloc error. Was wondering if the "Eigen::VectorXd" will do a compile time alloc with a static init - because the Vector storage is dynamic. It doesn't seem to have a free check.

I need to get that debug_tt code usable so user can turn on Fault's to USB Serial without Serial4 debug hooked up - and that will go away post Beta like on T_3.x's where it also would have helped in this case.
 
@mjs513 for p#3493 - what does it say on IDE's sketch Mem used?

Cool! The Fault reg dump label code with _?FSR error decoration works - and the speed drop in case it was hot!

Hey - that's the Eigen setup code I posted there … I don't have a current copy of Eigen { I was rushing to bed before the sun came up } - so not sure what printed but as posted it looked like a dynamic mem alloc error. Was wondering if the "Eigen::VectorXd" will do a compile time alloc with a static init - because the Vector storage is dynamic. It doesn't seem to have a free check.

I need to get that debug_tt code usable so user can turn on Fault's to USB Serial without Serial4 debug hooked up - and that will go away post Beta like on T_3.x's where it also would have helped in this case.

@defragster - memory usage in the IDE is shown in post 3493 and doesn't change much. And yes it probably is a dynamic memory issue that not sure how you could check so it doesn't do bad things. What also concerns me is if I change the format slightly I start getting a bootloader issues again bad thing that I don't know how to correct or capture.

Would be nice to have the faults show up even after post Beta just gets dumped to Serial instead. Does help to troubleshoot.
 
@defragster - memory usage in the IDE is shown in post 3493 and doesn't change much. And yes it probably is a dynamic memory issue that not sure how you could check so it doesn't do bad things. What also concerns me is if I change the format slightly I start getting a bootloader issues again bad thing that I don't know how to correct or capture.

Would be nice to have the faults show up even after post Beta just gets dumped to Serial instead. Does help to troubleshoot.

Indeed hidden faults are painful - but rare - I expected there would be more trouble with them with so many new registers and stuff - at least with the folks on Beta they were not an issue often - when they didn't show and with early USB Serial my debug lib got pushed aside after being distracted that Serial# goes dead easily in fault because all _isr()'s stop {except USB IIRC} with a FAULT being a sub-Zero level interrupt, and without the need working out Serial# I/O didn't seem worth it for lack of general use.

Issue with Bootloader sounds interesting. It is probably faulting on restart and TLoader doesn't like such spasms? It seems T4 does code/memory manipulation on startup and those 'static' pre-defined alloc's in startup's _init_ may be triggering something during the code in:
>> ...\hardware\teensy\avr\cores\teensy4\startup.c
Maybe between these points?:
Code:
	// Initialize memory
	[U]memory_copy(&_stext, &_stextload, &_etext);[/U]
// …
	while (millis() < 300) ; // wait at least 300ms before calling user code
	//printf("before C++ constructors\n");
	[U]__libc_init_array();[/U]
	//printf("after C++ constructors\n");
 
I've been thinking of diving back into the T4 arena. One of the things I have done with the Teensy in the past is run the Animated Eyes sketch on various Teensys:

Now this sketch uses the accelerated SPI dma support that is in (or at least was in) several of the functions in the ST7735 and SSD1351 libraries. Now, this program does its own dma (mostly cloned from Paul's library I think). I imagine the dma stuff is different between 3.x and 4.0 Teensys. Is there a place that goes over the differences between the two, or perhaps one of the _t3 libraries that now has both Teensy 3.x and 4.0 support?

Are there pins that should be used for fast dma spi processing (like 9, 10, 15, 20, and 21 in the Teensy 3.x series)?


Ok Michael. You got me hooked on uncanny eyes - have to start now if I want to have anything ready for Halloween :)
 
I have some DMA stuff in ili9341_t3n library, also SPI library. Thought about adding it to my version of st77...t3 library
 
I have some DMA stuff in ili9341_t3n library, also SPI library. Thought about adding it to my version of st77...t3 library

@KurtE - probably would be a good idea as long as you can do it. Right now I have been going through UncannyEyes and the are using DMA with the T3.1 as well as the sendCommand which is in the spitft portion of AdaFruit_GFX, so may have to adapt that as well.
 
Ok Michael. You got me hooked on uncanny eyes - have to start now if I want to have anything ready for Halloween :)

Note, I've found the OLED displays are sensitive to the SPI bus speed, and different manufacturers seem to have different limits. My wavelan and newhaven displays can tolerate a 18,000,000 SPI, but the Adafruit displays I have need 12,000,000. The TFT displays aren't as problematical. It has been awhile, and I don't think I can do two OLED displays with the Teensy 3.2 but the 3.5/3.6 are fine.

Though of course the TFT displays aren't as bright and has a narrower angle of view compared to the OLED displays.

For the longest while, the software would not build under the Teensy unless you used the Adafruit versions of the ST7735 and GFX libraries, instead of the Teensy versions. I believe Paul has fixed this with the current release.

Adafruit has two convex lenses that can put over the display:

Here is an old thread about them:

I also have done neopixel rings, doing the neopixels in between screen updates. If you are using the prop shield as a level converter, you have to switch the SPI pins from being in SPI mode to normal mode to do the neopixel stuff, and then switch it back. With help from KurtE to do the switching.

Here is the inner portion of the library where I do the switching:
Code:
    {
#ifdef SPI_HAS_TRANSACTION
      bool pin_spi_p  = do_spi_reserve && is_spi0_pin (pin_neopixel);
      bool pin2_spi_p = do_spi_reserve && is_spi0_pin (pin_neopixel2);

      if (do_spi_reserve)
	{
	  // beginTransaction prevents SPI bus conflicts
	  // We need to reset 11 & 13 to being digital pins
	  // https://forum.pjrc.com/threads/46640-Neopixels-with-SPI-transactions-on-prop-shield-working-with-ST7735-SSD1351-displays
	  SPI.beginTransaction (SPISettings(24000000, MSBFIRST, SPI_MODE0));

	  if (pin_spi_p)
	    pinMode (pin_neopixel, OUTPUT);

	  if (pin2_spi_p)
	    pinMode (pin_neopixel2, OUTPUT);

	  // Doing uncanny eyes, we need a slight delay after doing the beingTransaction so that the first LED doesn't glitch
	  if (do_spi_delay)
	    delay (do_spi_delay);
	}
#endif

      if (pin_enable >= 0)
	digitalWrite (pin_enable, HIGH);

      lowlevel->show ();

      if (do_blink)
	blink ();

      if (pin_enable >= 0)
	digitalWrite (pin_enable, LOW);

#ifdef SPI_HAS_TRANSACTION
      if (do_spi_reserve)
	{
	  // allow other libs to use SPI again
	  SPI.endTransaction ();

#ifdef PROCESSOR_TEENSY_3_X
	  if (pin_spi_p)
	    {
	      volatile uint32_t *reg = portConfigRegister (pin_neopixel);
	      *reg = PORT_PCR_MUX (2);
	    }

	  if (pin2_spi_p)
	    {
	      volatile uint32_t *reg = portConfigRegister (pin_neopixel2);
	      *reg = PORT_PCR_MUX (2);
	    }
#endif

	}
#endif
    }
 
Last edited:
Status
Not open for further replies.
Back
Top