ucglib icon indicating copy to clipboard operation
ucglib copied to clipboard

does not compile on teensy 3.X

Open apleschu opened this issue 8 years ago • 12 comments

Trying to compile the library on a teensy 3.2 for a ILI9341 320x240 display produces the following errors:

/Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp: In function 'void ucg_com_arduino_init_8bit(ucg_t_)': /Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp:786:20: error: cannot convert 'volatile uint8_t_ {aka volatile unsigned char_}' to 'volatile uint32_t_ {aka volatile long unsigned int_}' in assignment u8g_data_port[0] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D0])); ^ /Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp:789:20: error: cannot convert 'volatile uint8_t_ {aka volatile unsigned char_}' to 'volatile uint32_t_ {aka volatile long unsigned int_}' in assignment u8g_data_port[1] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D1])); ^ /Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp:792:20: error: cannot convert 'volatile uint8_t_ {aka volatile unsigned char_}' to 'volatile uint32_t_ {aka volatile long unsigned int_}' in assignment u8g_data_port[2] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D2])); ^ /Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp:795:20: error: cannot convert 'volatile uint8_t_ {aka volatile unsigned char_}' to 'volatile uint32_t_ {aka volatile long unsigned int_}' in assignment u8g_data_port[3] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D3])); ^ /Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp:798:20: error: cannot convert 'volatile uint8_t_ {aka volatile unsigned char_}' to 'volatile uint32_t_ {aka volatile long unsigned int_}' in assignment u8g_data_port[4] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D4])); ^ /Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp:801:20: error: cannot convert 'volatile uint8_t_ {aka volatile unsigned char_}' to 'volatile uint32_t_ {aka volatile long unsigned int_}' in assignment u8g_data_port[5] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D5])); ^ /Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp:806:22: error: cannot convert 'volatile uint8_t_ {aka volatile unsigned char_}' to 'volatile uint32_t_ {aka volatile long unsigned int_}' in assignment u8g_data_port[6] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D6])); ^ /Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp:812:22: error: cannot convert 'volatile uint8_t_ {aka volatile unsigned char_}' to 'volatile uint32_t_ {aka volatile long unsigned int_}' in assignment u8g_data_port[7] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D7])); ^ /Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp:816:20: error: cannot convert 'volatile uint8_t_ {aka volatile unsigned char_}' to 'volatile uint32_t_ {aka volatile long unsigned int_}' in assignment u8g_data_port[8] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_WR])); ^ /Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp: In function 'void ucg_com_arduino_send_8bit(ucg_t_, uint8_t)': /Users/andy/src/Arduino/libraries/Ucglib/src/Ucglib.cpp:825:3: error: '__NOP' was not declared in this scope __NOP; ^ exit status 1 Error compiling.

apleschu avatar Mar 09 '16 20:03 apleschu

Same issue here. Using 1.29 Teensy + last release.

jgilbert20 avatar Aug 01 '16 17:08 jgilbert20

Same issue with Teensyduino1.29 and Arduino 1.6.9

emilien-g avatar Aug 26 '16 01:08 emilien-g

I need more information here. __NOP is only used if arm is defined. But then, __NOP should be available.

olikraus avatar Jan 07 '17 14:01 olikraus

I had the same issues on my Teensy 3.1 setup. Did some small changes to support the Teensy 3.1/3.2 https://github.com/olikraus/Ucglib_Arduino/pull/7

Jorgen-VikingGod avatar Apr 24 '17 16:04 Jorgen-VikingGod

Hi

same here for the Teensy 3.5. @Jorgen-VikingGod your fix works for me, if I change MK20DX256 to MK64FX512, which is the Teensy 3.5 CPU.

Is this going to be fixed at some point?

Thanks!

mamama1 avatar Jul 15 '18 13:07 mamama1

Same issue for me too. My hack remedy was this:

Ucglib.cpp, line 786 - change the ...defined(__arm__)... to ...defined(__NOT_arm__)... Ucglib.cpp, line 833, add the following:

#ifndef __NOP
#define __NOP __asm__ __volatile__("NOP");
#endif

Now compiles :-)

MattMatic avatar Sep 14 '18 12:09 MattMatic

Well, it seems I'm not the only person having the problem so that's good I guess but not good that it's been happening since 2016. Arduino IDE version 1.8.5 and Ucglib version 1.5.2.

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp: In function 'void ucg_com_arduino_init_8bit(ucg_t*)':

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp:795:20: error: cannot convert 'volatile uint8_t* {aka volatile unsigned char*}' to 'volatile uint32_t* {aka volatile long unsigned int*}' in assignment

u8g_data_port[0] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D0]));

                ^

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp:798:20: error: cannot convert 'volatile uint8_t* {aka volatile unsigned char*}' to 'volatile uint32_t* {aka volatile long unsigned int*}' in assignment

u8g_data_port[1] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D1]));

                ^

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp:801:20: error: cannot convert 'volatile uint8_t* {aka volatile unsigned char*}' to 'volatile uint32_t* {aka volatile long unsigned int*}' in assignment

u8g_data_port[2] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D2]));

                ^

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp:804:20: error: cannot convert 'volatile uint8_t* {aka volatile unsigned char*}' to 'volatile uint32_t* {aka volatile long unsigned int*}' in assignment

u8g_data_port[3] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D3]));

                ^

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp:807:20: error: cannot convert 'volatile uint8_t* {aka volatile unsigned char*}' to 'volatile uint32_t* {aka volatile long unsigned int*}' in assignment

u8g_data_port[4] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D4]));

                ^

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp:810:20: error: cannot convert 'volatile uint8_t* {aka volatile unsigned char*}' to 'volatile uint32_t* {aka volatile long unsigned int*}' in assignment

u8g_data_port[5] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D5]));

                ^

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp:815:22: error: cannot convert 'volatile uint8_t* {aka volatile unsigned char*}' to 'volatile uint32_t* {aka volatile long unsigned int*}' in assignment

 u8g_data_port[6] =  portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D6]));

                  ^

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp:821:22: error: cannot convert 'volatile uint8_t* {aka volatile unsigned char*}' to 'volatile uint32_t* {aka volatile long unsigned int*}' in assignment

 u8g_data_port[7] =  portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_D7]));

                  ^

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp:825:20: error: cannot convert 'volatile uint8_t* {aka volatile unsigned char*}' to 'volatile uint32_t* {aka volatile long unsigned int*}' in assignment

u8g_data_port[8] = portOutputRegister(digitalPinToPort(ucg->pin_list[UCG_PIN_WR]));

                ^

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp: In function 'void ucg_com_arduino_send_8bit(ucg_t*, uint8_t)':

C:\Users\dentaku\Documents\Arduino\libraries\Ucglib\src\Ucglib.cpp:834:3: error: '__NOP' was not declared in this scope

__NOP;

^

Using library SPI at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\SPI Using library Ucglib at version 1.5.2 in folder: C:\Users\dentaku\Documents\Arduino\libraries\Ucglib Error compiling for board Teensy 3.2 / 3.1.

dentaku-web avatar Sep 21 '18 16:09 dentaku-web

Some sign from @olikraus would be nice to get some idea whether this is by design and we are using it wrong in some way or if this will get fixed at some time...

mamama1 avatar Sep 21 '18 16:09 mamama1

Actually, having got ucglib working I checked out all the ILI9341_t3 variants again. In the end I went for blackketter's version - https://github.com/blackketter/ILI9341_t3 - it's blazingly fast and has a reasonable amount of font handling to support right justified text etc.

It wasn't that hard to switch over in the end.

Sorry Oli.

MattMatic avatar Sep 21 '18 18:09 MattMatic

It wasn't that hard to switch over in the end. Sorry Oli.

No issue. It is hard to stay up to date with the changes on these new Arduino boards. The problem was, I made too many assumptions on the controller. This improves speed, but breaks newer board.

I started to concentrate on U8g2, no time left for ucglib since a long time. Sorry for this.

olikraus avatar Sep 21 '18 19:09 olikraus

Good to hear you're still around Oli! The U8g2 library is excellent - keep up the good work on that ;)

MattMatic avatar Sep 24 '18 07:09 MattMatic

Thanks...

olikraus avatar Sep 24 '18 18:09 olikraus