Teensyduino 1.53 Beta #2

Status
Not open for further replies.

Paul

Administrator
Staff member
Here is a second beta test for Teensyduino 1.53.

Please install this into a fresh copy of Arduino. Several old libraries have been removed. If you "install on top" of a previous version, your copy of Arduino will keep those old libs. While not harmful, best to test this version installed into a fresh copy of Arduino.


Linux 32 bit:
https://www.pjrc.com/teensy/td_153-beta2/TeensyduinoInstall.linux32

Linux 64 bit:
https://www.pjrc.com/teensy/td_153-beta2/TeensyduinoInstall.linux64

Linux ARM:
https://www.pjrc.com/teensy/td_153-beta2/TeensyduinoInstall.linuxarm

Linux ARM64:
https://www.pjrc.com/teensy/td_153-beta2/TeensyduinoInstall.linuxaarch64

MacOS 10.10 to 10.15:
https://www.pjrc.com/teensy/td_153-beta2/Teensyduino_MacOS_Catalina.zip

MacOS 10.8 to 10.14:
https://www.pjrc.com/teensy/td_153-beta2/TeensyduinoInstall.dmg

Windows:
https://www.pjrc.com/teensy/td_153-beta2/TeensyduinoInstall.exe


Changes since Teensyduino 1.53-beta1:

Improve C++ STL support
Fix compiler warnings in several library examples
Update libraries: FastLED, MIDI, RA8875, Adafruit_NeoPixel, FlexCAN, FlexCAN_T4, ILI9488_t3
Entropy library support for Teensy 4.x random number hardware
ILI9341_t3 proportional font rendering speedup (Larry Bank)
Audio: add rectifier effect and vocoder example by Bradley Sanders
Fix serialEventUSB1 & serialEventUSB2 on Teensy 4.x (KurtE)
Add MIDIUSB.h compatibility on Teensy 4.x
Check hardware serial FIFO in avalable and peek (KurtE)
Remove libraries: Adafruit_GFX, Adafruit_CC3000, Adafruit_RA8875, openGLCD, ST7565
 
Win 10 Fresh install of IDE 1.8.13 then TD 1.53b2 - No install issues

some Sketch Upload to T_4.0 then to T_4.1 worked as expected.

Also working @luni's standard lib sample from : pjrc.com/threads/61388-Teensyduino-1-53-Beta-1
Same good results:
Code:
Testing std::vector ------------
First string
Second string
Last string

Testing std::map--------------
0
42

Testing std::function----------
The string 'some string' has 11 characters
 
No problems here

Paul:
- running under Windows 10 Pro (version 1909, OS build 18363.900)
- downloaded TD 1.53b2
- uninstalled existing Arduino 1.8.13
- installed Arduino 1.8.13
- installed TD 1.53b2
- opened my TeensyMIDIPolySynth sketch & built for Teensy 4.1, Serial + MIDI, 600MHz, Fastest

Capabilities tested/verified:
- Audio Shield Rev D & libraries
- traditional hardware MIDI (thru DIN jacks)
- USB MIDI (advertises itself as a MIDI hardware device)
- USB host w/ USB MIDI keyboard plugged in

All works as expected.

Thanks !!

Mark J Culross
KD5RXT


P.S. Would you consider including the simple change identified <here> in the next beta ??
 
Building T_4.1 example :: T:\arduino-1.8.13\hardware\teensy\avr\libraries\ADC\examples\adc_dma

<<CORRECTION>> :: ADC in TD 1.53b2 does have the functions and does work when the edits are made to the example below is adc1 here are lines for adco:
Code:
    adc->adc0->setAveraging(8);
    adc->adc0->setResolution(12);


Not sure if this is expected - or perhaps fixed in current github code?
Code:
adc_dma: In function 'void setup()':
adc_dma:63: error: 'class ADC' has no member named 'setAveraging'
     adc->setAveraging(8); // set number of averages
          ^
 [B]...[/B]

Using library ADC at version 8.0 in folder: T:\arduino-1.8.13\hardware\teensy\avr\libraries\ADC 
'class ADC' has no member named 'setAveraging'

Doesn't look like it has - but 21 day old edit added :: __attribute__((error("Use adc->adcX->setAveraging instead"))) void setAveraging(uint8_t num, int8_t adc_num = -1);

Pulled the latest from github and it is working with this in the second set of settings:
Code:
//    adc->setAveraging(8, ADC_1); // set number of averages
//    adc->setResolution(12, ADC_1); // set bits of resolution
    adc->adc1->setAveraging(8);
    adc->adc1->setResolution(12);

Will post issue to correct the example { github.com/pedvide/ADC/issues/62 }- but maybe the new lib if ready could be pulled in?
 
Last edited:
i saw some syntax changes between TD 1.48 and 1.52 that may relate to 1.53 betas?

needed in 1.48
adc->setAveraging(1,ADC_0);

needed in 1.52
adc->adc0->setAveraging(1);

also - total crash when trying to compile adc for TLC - see post #46 in "Teensyduino 1.52 released"
in addition i posted it as a bug report but cannot find that one now - i did a very hockey edit in one
of the adc lib .cpp files to work around it.
 
I loaded 153B2 into Platformio and tested a program that requires multiple std::vector arrays. Previously, the program would function correctly with one vector defined, but would not compile with multiple vectors. I'm happy to report that my program now compiles and behaves correctly with multiple std:vector assignments.

Great work Paul and thanks for the STL mods.
 
Audio Tool import issue

The audio tool has a new issue when importing a project:
Some connections are not displayed and not established.
As example see attached screen shot taken from importing the Vocoder19Band example.
View attachment 20672
 
I'm testing the RA8875 and Adafruit_RA8875 libraries. I currently have only the Adafruit display on my desk. Somewhere I have a Buydisplay one... need to dig it out.

Looks like the Adafruit display requires "tft.GPIOX(true);" to actually turn on. Adafruit's examples have this, but it's missing in the RA8875 examples. Would adding this impact non-Adafruit RA8875 displays?

The good news is Adafruit seems to have fixed the old timing bugs where large text only worked with slow boards. So there no need to keep a modified copy of Adafruit_RA8875.
 
I'm testing the RA8875 and Adafruit_RA8875 libraries. I currently have only the Adafruit display on my desk. Somewhere I have a Buydisplay one... need to dig it out.

Looks like the Adafruit display requires "tft.GPIOX(true);" to actually turn on. Adafruit's examples have this, but it's missing in the RA8875 examples. Would adding this impact non-Adafruit RA8875 displays?

The good news is Adafruit seems to have fixed the old timing bugs where large text only worked with slow boards. So there no need to keep a modified copy of Adafruit_RA8875.

Don't think it will hurt. Looks like its used for turning on the display using PWM as opposed to just having the BL hooked up to a power pin. With BuyDisplay think the jumpers are set to use BL attached to a power pin
 
I found a 7 inch Buydisplay RS8875 and wired it up. Looks like "tft.GPIOX(true);" has no effect. It should probably be in all the examples with a comment that it's needed for Adafruit's RA8875.

ra8875.JPG
 
Looks like we may have timing issues. This mangGauges_800x480 example works with Teensy 4.0 when the CPU speed is set to 528 MHz or slower, but fails if 600 MHz or faster.
 
Last edited:
Looks like we may have timing issues. This mangGauges_800x480 example works with Teensy 4.0 is the CPU speed is set to 528 MHz or slower, but fails if 600 MHz or faster.

Don't have a 800x480 display, think Kurt has one, but i just ran it on a 480x272 display with 4 gauges (does clip the last one) but it looks like its working on a T4.0 without a problem. Can you try just 4 gauges to see if its still a problem?
 
I'm testing the RA8875 and Adafruit_RA8875 libraries. I currently have only the Adafruit display on my desk. Somewhere I have a Buydisplay one... need to dig it out.

Looks like the Adafruit display requires "tft.GPIOX(true);" to actually turn on. Adafruit's examples have this, but it's missing in the RA8875 examples. Would adding this impact non-Adafruit RA8875 displays?

The good news is Adafruit seems to have fixed the old timing bugs where large text only worked with slow boards. So there no need to keep a modified copy of Adafruit_RA8875.

I added this line to the end of "begin" function in the RA8875.cpp file:
Code:
	if(_displaySize == Adafruit_480x272 || _displaySize == Adafruit_800x480 ) GPIOX(true);

Should work.
 
I tried the "RoundGauges" example which draws 3 of them. It run for a few seconds at 600 MHz. Looks like it's still transmitting, but the display gets confused out out of sync somehow. It runs find with slower clock speeds.
 
I tried the "RoundGauges" example which draws 3 of them. It run for a few seconds at 600 MHz. Looks like it's still transmitting, but the display gets confused out out of sync somehow. It runs find with slower clock speeds.

Just tried round gauges on the 480x272 and its been running at 600Mhz for the last 6 minutes. Something strange going on. I just ordered a 800x480 7inch display from BuyDisplay should be here end of the week.

EDIT: You could try lowering the SPI Clock. Right now we are at 18Mhz by default.
Code:
	const static uint32_t MAXSPIREADSPEED  = 6000000UL;  //Read don't go higher than 22000000!;
	#if defined(__MK20DX128__) || defined(__MK20DX256__)  || defined(__MK64FX512__) || defined(__MK66FX1M0__) || defined(__IMXRT1062__)
		const static uint32_t MAXSPISPEED	= 18000000UL;  //don't go higher than 22000000!;

This if from usersettings.h file. You can change SPI in the begin statement:
Code:
	void 		begin(const enum RA8875sizes s,uint8_t colors=16, uint32_t SPIMaxSpeed = (uint32_t)-1, uint32_t SPIMaxReadSpeed = (uint32_t)-1 );
maybe try

Code:
tft.begin(RA8875_800x480, 16, 12000000, 22000000);
 
Last edited:
I don't think it's the SPI clock speed. I edited the code to increase to 22 MHz, and I used my scope to check it really was 21.8 MHz. At 528 MHz and 21,8 MHz SPI clock, it runs reliably. But with Teensy 4.0 at 600 MHz, even with slower SPI clock, it seems to go awry.

file.png
 
I don't think it's the SPI clock speed. I edited the code to increase to 22 MHz, and I used my scope to check it really was 21.8 MHz. At 528 MHz and 21,8 MHz SPI clock, it runs reliably. But with Teensy 4.0 at 600 MHz, even with slower SPI clock, it seems to go awry.

View attachment 20675
Reason I was saying about SPI Clock was because of the warning Sumotoy had in the file:
After som mail exchange with RAiO I solved the dilemma behind SPI speed limit:
The RA8875 has limitation of 12Mhz SPI but this has been set because not all internal macros
can run over that speed, the library automatically deal with this so I was able to go over 20Mhz!

At that speed you need to short cables as much you can, provide clean supply and good decoupling!
DO NOT Exceed 23Mhz for RA8875! It will result in garbage on screen or run very slow.
I am going to pull out scope and see what it looks like with my setup out of curiosity.
 
Sorry, been off doing other stuff.

I do have a few different ones:
I believe I have a BuyDisplay: 5" 800x... I may also have one of the 480x272 one here as well
Maybe 2 of the 4.3" 800x480 - I like these better, but again they mostly sit in box
Also Adafruit, I think mine is setup for the lower resolution.


One thing I have found, is there connections are very touchy... Usually need short wires... Also sometimes need to lower SPI speed.

Pulling out one now will try. Any particular setup? I am most likely setup for 4.3" 800x480 using my older jumpered board.... My newer board has the 8876 on it.
 
Hi @Paul - I just copied all of Core over to my Arduino 1.8.13
And it looks like I maybe missed removing a warning from digitalToggle()
unused variable (pinMode)...

Not sure why I missed it when building yesterday.


@mjs513 - The example sketch: ILI_Ada_FontTest4
For RA8875 is giving me some warning as well now:
Code:
ILI_Ada_FontTest4: In function 'uint32_t displayStuff1()':
C:\Users\kurte\Documents\Arduino\libraries\RA8875\Examples\_Teensy3\ILI_Ada_FontTest4\ILI_Ada_FontTest4.ino:208:65: warning: invalid conversion from 'int16_t* {aka short int*}' to 'uint16_t* {aka short unsigned int*}' [-fpermissive]
   tft.getTextBounds(rectText, rect_x, rect_y, &xT, &yT, &wT, &hT);
                                                                 ^
In file included from C:\Users\kurte\Documents\Arduino\libraries\RA8875\Examples\_Teensy3\ILI_Ada_FontTest4\ILI_Ada_FontTest4.ino:4:0:
C:\Users\kurte\Documents\Arduino\libraries\RA8875/RA8875.h:382:10: note:   initializing argument 6 of 'void RA8875::getTextBounds(const char*, int16_t, int16_t, int16_t*, int16_t*, uint16_t*, uint16_t*)'
     void getTextBounds(const char *string, int16_t x, int16_t y,
          ^
C:\Users\kurte\Documents\Arduino\libraries\RA8875\Examples\_Teensy3\ILI_Ada_FontTest4\ILI_Ada_FontTest4.ino:208:65: warning: invalid conversion from 'int16_t* {aka short int*}' to 'uint16_t* {aka short unsigned int*}' [-fpermissive]
   tft.getTextBounds(rectText, rect_x, rect_y, &xT, &yT, &wT, &hT);
                                                                 ^
In file included from C:\Users\kurte\Documents\Arduino\libraries\RA8875\Examples\_Teensy3\ILI_Ada_FontTest4\ILI_Ada_FontTest4.ino:4:0:
C:\Users\kurte\Documents\Arduino\libraries\RA8875/RA8875.h:382:10: note:   initializing argument 7 of 'void RA8875::getTextBounds(const char*, int16_t, int16_t, int16_t*, int16_t*, uint16_t*, uint16_t*)'
     void getTextBounds(const char *string, int16_t x, int16_t y,
          ^
Compiling libraries...
Compiling library "Adafruit_GFX_Library"
Probably because of different GFX library than the one we were shiping with Teensyduino

Also some of the pages are not drawing properly.


I also have running the many gauges example and it so far appears to be running.

Edit: Forgot to mention I will be probably busy outside for awhile.

Will check back in a bit
 
@KurtE
Which display are you using? The 480x272 seems to be working. I will check out the new GFX issue
 
I am using one of the 800x480 4.3" displays in my earlier screwed up adapter board... If needed I can try one of the others as well. But now back to garden
 
Status
Not open for further replies.
Back
Top