RA8875 from Buydisplay

Status
Not open for further replies.
@mjs513 Oops I meant the don't have a writeRect...

And I did figure out that their drawPixels does not work in rotation mode (1 or 3...)

So I put the display back into rotation(0); And then had the display code detect that the image would not fit and then rotated the image while displaying...

Code:
void drawImage(uint16_t image_width, uint16_t image_height, uint16_t *image, uint16_t bgColor)  {
  // first lets fill in part of screen that our image does not cover
  if ((tft.width() >= image_width) && (tft.height() >= image_height)) {
    uint16_t start_x = (tft.width() - image_width) / 2;
    uint16_t start_y = (tft.height() - image_height) / 2;

    tft.fillRect(0, 0, tft.width(), start_y, bgColor);  // top;
    tft.fillRect(0, start_y, start_x, image_height, bgColor); // left
    tft.fillRect(start_x + image_width, start_y, tft.width() - (start_x + image_width), image_height, bgColor); // right
    tft.fillRect(0, start_y + image_height, tft.width(), tft.height() - (start_y + image_height), bgColor); // top;

    // now lets draw out each of the lines of the image...
    for (uint16_t y = start_y; y < (start_y + image_height); y++) {
      tft.setY(y);
      tft.drawPixels(image, image_width, start_x, y);
      image += image_width;
    }
  } else {
    // We need to rotate the image...
    uint16_t start_y = (tft.height() - image_width) / 2;
    uint16_t start_x = (tft.width() - image_height) / 2;
    //Serial.printf("Rotated: start(%d, %d)\n", start_x, start_y);
    tft.fillRect(0, 0, tft.width(), start_y, bgColor);  // top;
    tft.fillRect(0, start_y, start_x, image_width, bgColor); // left
    tft.fillRect(start_x + image_height, start_y, tft.width() - (start_x + image_height), image_width, bgColor); // right
    tft.fillRect(0, start_y + image_width, tft.width(), tft.height() - (start_y + image_width), bgColor); // top;

    // now lets draw out each of the lines of the image...
    static uint16_t rotated_row[800]; // max size.
    // BUGBUG: need to start at end of row and work back or image inverted
    image += (image_width - 1);
    for (uint16_t y = start_y; y < (start_y + image_width); y++) {
      uint16_t *pimage = image;
      for (uint16_t i = 0; i < image_height; i++) {
        rotated_row[i] = *pimage;
        pimage += image_width;
      }
      //Serial.printf("DP %x, %d, %d %d\n", rotated_row, image_height, start_x, y);
      tft.drawPixels(rotated_row, image_height, start_x, y);
      image--;
    }
  }
}
I then had the main loop, code use an elapsedMillis object and printed out how long each display took:
So on RA8875:
Code:
Display Front of card 176
Display Back of card 175
Display front of chip (DMAMEM?) 176
Display Front of card 176

Note: If I time the ILI9341_t3 version displaying the three same images:
Code:
Display Front of card 49
Display Back of card 49
Display front of chip (DMAMEM?) 49
Display Front of card 49
So almost 4 times faster. Yes lots more screen space, but the differences are I do 4 fill rects for the differences...
 
And I did figure out that their drawPixels does not work in rotation mode (1 or 3...)
sumotoy or adafruit or both? Sorry have company for Labor Day so in and out.

Based on displays timing doesn't look too bad.
 
@KurtE @mjs513 @pd0lew
I wanted to thank you guys for making this lib work on the T4.
Received my displays this morning. Hooked up the 4.3" and it is up and running.

Used this branch, https://github.com/KurtE/RA8875/tree/RA8875_t4_multi
Is this the one to follow for further developments?

The display is to be used in a synthesizer as feedback for encoder positions. So mainly graphical stuff, no images.
I'm curious how well it will play along with the audiolib.
 
@mjs513 - SumoToy - I don't see anything equivalent on Adafruit (at least the one with teensyduino)...

Here is the updated sketch, I also added 4th image (Tall Dog's card image in a larger size (400x272), which as expected takes longer to display
176 for the 320x240 image and 205 for the larger one. So almost 5 per second...
View attachment T4_RA8875_pictureEmbed-190902b.zip

I also ran it on the T3.6 on SPI1 with 800x480 display and the image look real small:
Code:
Display Front of card 163
Display Back of card 162
Display front of chip (DMAMEM?) 162
Display TallDog T4 Card 216

@neurofun and others - That is probably the most recent version we have now, but not sure if that is or should be the final resting place. Hoping that maybe @PaullStoffregen maybe forks SumoToy's library and maybe he keeps the current version that ships in Teensyduino or ???
 
@mjs513... Been playing around a little. Was wondering about how layers worked with these displays.

So far I am only trying on the the smaller displays (480x272) as if I say Somotoy's notes, you have enough memory for the two layers with 16 bit color.

With the 800x480 you only have enough memory to do this in 8 bit per color mode.

On my Adafruit board, it still is taking as long to update the dispolay, but is looks sort of cool as it now changes more instantly between images...

If anyone wants to try it.. Again so far only with smaller display...
The main sketch changes to:
Code:
//#define USE_SPI1


/*
  Teensy3.x and Arduino's
  You are using 4 wire SPI here, so:
  MOSI:  11//Teensy3.x
  MISO:  12//Teensy3.x
  SCK:   13//Teensy3.x
  the rest of pin below:
*/
#ifdef USE_SPI1

#define RA8875_INT 3//any pin
#define RA8875_CS  10//restriction for Teensy3 and CS
#define RA8875_RST -1//any pin
#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
#define RA8875_MOSI 0
#define RA8875_MISO 1
#define RA8875_SCLK 32
#elif defined(__IMXRT1062__)
#define RA8875_MOSI 26
#define RA8875_MISO 1
#define RA8875_SCLK 27
#endif
#else
#define RA8875_INT 3//any pin
#define RA8875_CS  10//restriction for Teensy3 and CS
#define RA8875_RST 9//any pin
#define RA8875_MOSI 11
#define RA8875_MISO 12
#define RA8875_SCLK 13
#endif

RA8875 tft = RA8875(RA8875_CS, RA8875_RST, RA8875_MOSI, RA8875_SCLK, RA8875_MISO);
bool enable_layers = false;

// Converted to code with:
// http://www.rinkydinkelectronics.com/t_imageconverter565.php
//
#include "teensy40_pinout1.h" //the picture
#include "teensy40_pinout2.h" //the picture
#include "teensy40_front.h"  // Try to load from DMAMEM?
#include "TD_T4_TopCard.h"   // Top Dog card...
/* GIMP (https://www.gimp.org/) can also be used to export the image using the following steps:

    1. File -> Export As
    2. In the Export Image dialog, use 'C source code (*.c)' as filetype.
    3. Press export to get the export options dialog.
    4. Type the desired variable name into the 'prefixed name' box.
    5. Uncheck 'GLIB types (guint8*)'
    6. Check 'Save as RGB565 (16-bit)'
    7. Press export to save your image.

  Assuming 'image_name' was typed in the 'prefixed name' box of step 4, you can have to include the c file as above,
  using the image can be done with:

    tft.writeRect(0, 0, image_name.width, image_name.height, (uint16_t*)(image_name.pixel_data));

  See also https://forum.pjrc.com/threads/35575-Export-for-ILI9341_t3-with-GIMP
*/



void setup() {
  while (!Serial && millis() < 5000) ;
  Serial.begin(115200);
  DumpMemoryInfo();
  Serial.printf("CS:%u RST:%u, MOSI:%u SCLK:%u MISO:%u\n", RA8875_CS, RA8875_RST, RA8875_MOSI, RA8875_SCLK, RA8875_MISO);
  //
  //tft.begin(RA8875_800x480);
  //tft.begin(RA8875_480x272);
  //  tft.begin(Adafruit_800x480);
  tft.begin(Adafruit_480x272);
  if ((tft.width()==480) && (tft.height() == 272)) enable_layers = true;  tft.setRotation(0);
  Serial.printf("Screen Width:%d Height: %d\n", tft.width(), tft.height());
  tft.fillWindow(RA8875_BLACK);
  delay(250);
  tft.fillWindow(RA8875_RED);
  delay(250);
  tft.fillWindow(RA8875_GREEN);
  delay(250);
  tft.fillWindow(RA8875_BLUE);
}

void drawImage(RA8875writes layer, uint16_t image_width, uint16_t image_height, uint16_t *image, uint16_t bgColor)  {
  // first lets fill in part of screen that our image does not cover
  if (enable_layers) tft.writeTo(layer);
  if ((tft.width() >= image_width) && (tft.height() >= image_height)) {
    uint16_t start_x = (tft.width() - image_width) / 2;
    uint16_t start_y = (tft.height() - image_height) / 2;

    tft.fillRect(0, 0, tft.width(), start_y, bgColor);  // top;
    tft.fillRect(0, start_y, start_x, image_height, bgColor); // left
    tft.fillRect(start_x + image_width, start_y, tft.width() - (start_x + image_width), image_height, bgColor); // right
    tft.fillRect(0, start_y + image_height, tft.width(), tft.height() - (start_y + image_height), bgColor); // top;

    // now lets draw out each of the lines of the image...
    for (uint16_t y = start_y; y < (start_y + image_height); y++) {
      tft.setY(y);
      tft.drawPixels(image, image_width, start_x, y);
      image += image_width;
    }
  } else {
    // We need to rotate the image...
    uint16_t start_y = (tft.height() - image_width) / 2;
    uint16_t start_x = (tft.width() - image_height) / 2;
    //Serial.printf("Rotated: start(%d, %d)\n", start_x, start_y);
    tft.fillRect(0, 0, tft.width(), start_y, bgColor);  // top;
    tft.fillRect(0, start_y, start_x, image_width, bgColor); // left
    tft.fillRect(start_x + image_height, start_y, tft.width() - (start_x + image_height), image_width, bgColor); // right
    tft.fillRect(0, start_y + image_width, tft.width(), tft.height() - (start_y + image_width), bgColor); // top;

    // now lets draw out each of the lines of the image...
    static uint16_t rotated_row[800]; // max size.
    // BUGBUG: need to start at end of row and work back or image inverted
    image += (image_width - 1);
    for (uint16_t y = start_y; y < (start_y + image_width); y++) {
      uint16_t *pimage = image;
      for (uint16_t i = 0; i < image_height; i++) {
        rotated_row[i] = *pimage;
        pimage += image_width;
      }
      //Serial.printf("DP %x, %d, %d %d\n", rotated_row, image_height, start_x, y);
      tft.drawPixels(rotated_row, image_height, start_x, y);
      image--;
    }
  }
  if (enable_layers)tft.layerEffect((layer==L1)? LAYER1 : LAYER2);
}

void loop(void) {
  Serial.print("Display Front of card ");
  elapsedMillis em = 0;
  drawImage(L1, 240, 320, (uint16_t*)teensy40_pinout1, RA8875_RED);
  Serial.println((uint32_t)em, DEC);
  delay(5000);
  Serial.print("Display Back of card ");
  em = 0;
  drawImage(L2, 240, 320, (uint16_t*)teensy40_pinout2, RA8875_GREEN);
  Serial.println((uint32_t)em, DEC);
  delay(5000);
  Serial.print("Display front of chip (DMAMEM?) ");
  em = 0;
  drawImage(L1, 240, 320, (uint16_t*)teensy40_front, RA8875_BLUE);
  Serial.println((uint32_t)em, DEC);
  delay(5000);
  Serial.print("Display TallDog T4 Card ");
  em = 0;
  drawImage(L2, 400, 272, (uint16_t*)td_t4_top, RA8875_BLACK);
  Serial.println((uint32_t)em, DEC);
  delay(5000);
}

void DumpMemoryInfo() {
#if defined(__IMXRT1062__)
  // from the linker
  //  extern unsigned long _stextload;
  extern unsigned long _stext;
  extern unsigned long _etext;
  //  extern unsigned long _sdataload;
  extern unsigned long _sdata;
  extern unsigned long _edata;
  extern unsigned long _sbss;
  extern unsigned long _ebss;
  //  extern unsigned long _flexram_bank_config;
  extern unsigned long _estack;
  uint32_t flexram_config = IOMUXC_GPR_GPR17;
  Serial.printf("IOMUXC_GPR_GPR17:%x IOMUXC_GPR_GPR16:%x IOMUXC_GPR_GPR14:%x\n",
                flexram_config, IOMUXC_GPR_GPR16, IOMUXC_GPR_GPR14);
  Serial.printf("Initial Stack pointer: %x\n", &_estack);
  uint32_t dtcm_size = 0;
  uint32_t itcm_size = 0;
  for (; flexram_config; flexram_config >>= 2) {
    if ((flexram_config & 0x3) == 0x2) dtcm_size += 32768;
    else if ((flexram_config & 0x3) == 0x3) itcm_size += 32768;
  }
  Serial.printf("ITCM allocated: %u  DTCM allocated: %u\n", itcm_size, dtcm_size);
  Serial.printf("ITCM init range: %x - %x Count: %u\n", &_stext, &_etext, (uint32_t)&_etext - (uint32_t)&_stext);
  Serial.printf("DTCM init range: %x - %x Count: %u\n", &_sdata, &_edata, (uint32_t)&_edata - (uint32_t)&_sdata);
  Serial.printf("DTCM cleared range: %x - %x Count: %u\n", &_sbss, &_ebss, (uint32_t)&_ebss - (uint32_t)&_sbss);
#endif
}
Still has the other 4 header files with the images...

Next up may see what it is like to work in 256 color mode, which if I saw correctly each byte is: RRRGGGBB
 
@KurtE

Going to get my other display this afternoon - will be a good test of it. As soon as I get I want to give it a try.

One of the things I saw in the RA8875 manual is that it will load Binary image files which probably speed things up. Don't know if Sumotoy or Adafruit implemented that have to check. Raio does have a image conversion app that does it for you, conversion that its. It also converts bmp to header files.
 
@KurtE

Going to get my other display this afternoon - will be a good test of it. As soon as I get I want to give it a try.

One of the things I saw in the RA8875 manual is that it will load Binary image files which probably speed things up. Don't know if Sumotoy or Adafruit implemented that have to check. Raio does have a image conversion app that does it for you, conversion that its. It also converts bmp to header files.

Good Morning,

I wonder if the binary file thing you are mentioning is the same thing on SumoToys WIKI:
I think the only fast way to get a picture fast on screen is use internal DMA and a optional SPI Flash memory pre-programmed and controlled directly by the chip but you need to program Flash chip in advance separately and then solder it, not very practical.

Which now makes sense, that when you purchase the display, you can order it with things like font chips and like and you can also order a flash memory chip, and it says all of them will come already soldered to the display except the flash memory....

Note: My newer one, which shipped using China post, arrived yesterday to San Francisco... So may have it later this week...
 
@KurtE

Yes and know. If I look at the RA8876 HDMI (1060x800, yes it works) driver code that I have I found 2 functions. You can read directly from a SD Card or load image into SDRAM. Then both methods let you draw to screen after that.
 
@mjs513 - Sounds good.

Note: the example apps again from Sumotoy version, for displaying bitmaps, do the read in one row at at time and use the drawPixels function.
And as I noticed when I tried it directly is that it only works in rotation(0) or 2... Not in 1 or 3...

Which sort of makes sense, in that teh functions that call setXY which breaks down to setX(x) setY(y);
If you look at these two functions, example:
Code:
void RA8875::setX(int16_t x) 
{
	if (x < 0) x = 0;
	if (_portrait){//fix 0.69b21
		if (x >= RA8875_HEIGHT) x = RA8875_HEIGHT-1;
		_writeRegister(RA8875_CURV0, x & 0xFF);
		_writeRegister(RA8875_CURV0+1, x >> 8);
	} else {
		if (x >= RA8875_WIDTH) x = RA8875_WIDTH-1;
		_writeRegister(RA8875_CURH0, x & 0xFF);
		_writeRegister(RA8875_CURH0+1, (x >> 8)); 
	}
}
Depending on Horizontal or Vertical orientation, it is actually which register does what... So the setPixels, probably just always go along the CURH direction...


Another interesting side wondering is when I tried, using 8 bit color mode, so maybe could use layers on larger board... I found colors totally screwed up...

So I thought I would see how the colors translated, so put in some quick and dirty code
Code:
  Serial.printf("RA8875_BLACK: %x %x\n", RA8875_BLACK, _color16To8bpp(RA8875_BLACK));
  Serial.printf("RA8875_WHITE: %x %x\n", RA8875_WHITE, _color16To8bpp(RA8875_WHITE));
  Serial.printf("RA8875_RED: %x %x\n", RA8875_RED, _color16To8bpp(RA8875_RED));
  Serial.printf("RA8875_GREEN: %x %x\n", RA8875_GREEN, _color16To8bpp(RA8875_GREEN));
  Serial.printf("RA8875_BLUE: %x %x\n", RA8875_BLUE, _color16To8bpp(RA8875_BLUE));
  Serial.printf("RA8875_CYAN: %x %x\n", RA8875_CYAN, _color16To8bpp(RA8875_CYAN));
  Serial.printf("RA8875_YELLOW: %x %x\n", RA8875_YELLOW, _color16To8bpp(RA8875_YELLOW));
  Serial.printf("RA8875_PINK: %x %x\n", RA8875_PINK, _color16To8bpp(RA8875_PINK));
  Serial.printf("RA8875_GRAYSCALE: %x %x\n", RA8875_GRAYSCALE, _color16To8bpp(RA8875_GRAYSCALE));
Then found that the _color16To8bpp was not exported, so I copied it into the sketch:

Code:
uint8_t _color16To8bpp(uint16_t color)
{
  return (map((color & 0xF800) >> 11, 0, 28, 0, 7) << 5 | map((color & 0x07E0) >> 5, 0, 56, 0, 7) << 2 | map(color & 0x001F, 0, 24, 0, 3));
}
And I know it is screwed up, Output:
Code:
RA8875_BLACK: 0 0
RA8875_WHITE: ffff 24
RA8875_RED: f800 0
RA8875_GREEN: 7e0 20
RA8875_BLUE: 1f 4
RA8875_CYAN: 7ff 24
RA8875_YELLOW: ffe0 20
RA8875_PINK: fcff 14
For example RED goes to 0:
Note: this should be mapping RRRRRGGG GGGBBBB -> RRRGGGBB

So if you Take RED (0xF800 & 0xF800) >> 11 it gives you 0xF8 (or 31), then you take map(31, 0, 28, 0, 7) and it overflows...
I could either simply change the map function to: map(31, 0, 31, 0, 7) or could probably mask off lower 2 bits, so wondering if instead it should simply be
Red part: (color & 0xE0)>>8 ... do same for G and B...

Think I will try it...
 
@mjs513 and others, just pushed up a change to my branch for the 16 bit to 8 bit color conversion, and now my app that displays 4 images (T4 cards and chip), looks a lot better.

To try it before and after, my change, you can simply change the begin method and pass in 8 instead of 16 (defaults to 16) like: tft.begin(Adafruit_480x272, 8);

Note: with the 8 bits, I can now run two layers on the 800x480 board...
 
@mjs513 and others, just pushed up a change to my branch for the 16 bit to 8 bit color conversion, and now my app that displays 4 images (T4 cards and chip), looks a lot better.

To try it before and after, my change, you can simply change the begin method and pass in 8 instead of 16 (defaults to 16) like: tft.begin(Adafruit_480x272, 8);

Note: with the 8 bits, I can now run two layers on the 800x480 board...
Cool change - still on track to get my display this afternoon sometime. Then the fun begins
 
@KurtE
Just got my 4.3inch display and ran the benchmark and nothing is displayed. Where is pin 1 on JP1.

With pins facing up it should be the lower right most pin for pin 1?
 
That sounds correct, but I always try to verify it, as it usually has square pad where all of the others are round...

I assume you choose the correct value for the begin, probably not with ADAfruit...

If all else fails, I would double check that they configured it properly, by looking at the jumpers (page 14 of pdf)

Would also check that it is configured for 5v? J8 should not be shorted. If you look at page 5, toward lower left of image, should have VR and a few caps...

Also I am not clear if you need to hook up the capactive display connections or not to make it work. I would suspect not.

Edit: Should mention at times unclear SDO/SDI which one is MISO which one is MOSI, so you might swap and see if that helps

Also in my version of library, I reduced max SPI to 12mhz instead of 22... not sure which you are trying.

Also thinking of mucking in an extra parameter on begin to set it....
 
@KurtE
Just got my 4.3inch display and ran the benchmark and nothing is displayed. Where is pin 1 on JP1.

With pins facing up it should be the lower right most pin for pin 1?

If you look at the component side, sd card to your right and JP1 to your left, pin1 is top left.

lcd pin5 -> t4 pin10, CS - CS
lcd pin6 -> t4 pin12, SDO - MISO
lcd pin7 -> t4 pin11, SDI - MOSI
lcd pin8 -> t4 pin13, SCLK - SCK
 
If you look at the component side, sd card to your right and JP1 to your left, pin1 is top left.

lcd pin5 -> t4 pin10, CS - CS
lcd pin6 -> t4 pin12, SDO - MISO
lcd pin7 -> t4 pin11, SDI - MOSI
lcd pin8 -> t4 pin13, SCLK - SCK

Yep figured that out after my post and looking a little closer.

@KurtE - in response to your suggestions.
I assume you choose the correct value for the begin, probably not with ADAfruit...
Using RA8875_480x272 not the adafruit version. Learned lesson from your headaches.

If all else fails, I would double check that they configured it properly, by looking at the jumpers (page 14 of pdf)

Would also check that it is configured for 5v? J8 should not be shorted. If you look at page 5, toward lower left of image, should have VR and a few caps...
Yes did that as well and everything looks like it should.

Also in my version of library, I reduced max SPI to 12mhz instead of 22... not sure which you are trying.

Also thinking of mucking in an extra parameter on begin to set it....
Used my version and ran at 12Mhz and 22Mhz no luck - also for the heck of it I swapped miso/mosi lines. Tried on 2 of my breakout boards with and with the tristate buffer on miso.

Looks like its running but no backlight - yes backlight is configured properly, doubled checked just in case.

Next I tried it on a T3.6 and it worked no problem with my version. Ok.

Next I downloaded your multi version and reloaded (no adafruit board) and it still didn't work.

Something strange is going on.
 
Something strange is going on.
Same here.
Got the 4.3" 800x480 working with KurtE's multi version without a hitch.
Today I tried the 7" 800x480 and it refused to work. Pinout is exactly the same so it should be a drop in replacement.
Started to think there might be something wrong with the display because pin13 led(SCK) behaved differently.
Hooked up the scope and the signals also look different. Switch back and forth between the 2 displays to compare.

And then oh mighty lord of silicon, I fry my brand new T4.

Will try that 7" on a T3.6 to see if it makes any difference.

Ok, that was it for the fail of the week.
 
Hi @mjs513 and @neurofun - As a test you might try changing SPI.cpp

To see if maybe the settings that I am experimenting with make a difference... About line 1284

// uint32_t fastio = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3);
uint32_t fastio = IOMUXC_PAD_DSE(6) | IOMUXC_PAD_SPEED(1);
 
Hi @mjs513 and @neurofun - As a test you might try changing SPI.cpp

To see if maybe the settings that I am experimenting with make a difference... About line 1284

// uint32_t fastio = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3);
uint32_t fastio = IOMUXC_PAD_DSE(6) | IOMUXC_PAD_SPEED(1);

That definitely helped. Once I made the change that backlight came on but nothing was displayed. I went in to play with the constructor and when I reloaded the sketch the displayed remained black again. After playing a bit I found if I powered off the display/teensy and repowered it I would get the backlight back on.

After a few more things I found it also has something to do with having no reset pin. The constructor has to be:
Code:
RA8875 tft = RA8875(10);

Changing the SPI clock made it worse so 12Mhz it is.

Finally got it working with those settings but had to power off and on to reset the display after each upload. Once it started work to do the benchmark sketch.
 
Wonder if it would help to hook up pin 11 of the display /RESET ?

Note with both T4's I am running some of these displays on (One has Adafruit, the other has a RA8875_480x272 display connected, they are both by breadboards...

I probably should try one off of my breakout boards, but currently they have STxxxx displays and the like connected with them. Maybe I need to get back and solder up a complete one... Was sort of waiting for Tall Dog... But I think I still have 2 of the T4s here in shiny packages.
 
Wonder if it would help to hook up pin 11 of the display /RESET ?

Note with both T4's I am running some of these displays on (One has Adafruit, the other has a RA8875_480x272 display connected, they are both by breadboards...

I probably should try one off of my breakout boards, but currently they have STxxxx displays and the like connected with them. Maybe I need to get back and solder up a complete one... Was sort of waiting for Tall Dog... But I think I still have 2 of the T4s here in shiny packages.

To answer your question about if pin 11 helps - the answer is a big YES. Loaded 3 sketches and changed SPI clock to 22Mhz and they all worked perfectly without any messing around with powering off and on to reset. Well guess I am solder a couple pins tomorrow.
 
To answer your question about if pin 11 helps - the answer is a big YES. Loaded 3 sketches and changed SPI clock to 22Mhz and they all worked perfectly without any messing around with powering off and on to reset. Well guess I am solder a couple pins tomorrow.

Glad it is working!
 
@KurtE
I've send you a pull request for a bug fix in the drawLineAngle() function. It would not work if "length" was lager than "start".
I also modified the drawLineAngle_example.ino to verify the fix is working.
I hope I did everything right since this is my first ever pull request.
 
@neurofun - Sounds good, I merged it in...

Thanks

Again not sure where the master version will or should reside yet.
 
@KurtE
For now can we keep you branch as the master and will delete my branch? Or would you prefer it the other way around?
 
Status
Not open for further replies.
Back
Top