Melzi v2 and ?zonestar? on Tronxy X3
Setup
0.92.9 firmware
Arduino IDE 1.8
Tronxy X3 printer with
Melzi v2 (v5 according to seller)
20x4 LCD with 5 ADC buttons
Everything seems to work fine, but the display has some artifacts that don't affect operation. On all screens individual characters will "twich" to an alternate letter. For example on the main screen the E: will on occation be Buf: will be Btu: the 0 (zero) will be a space.
Unfortunately the display is soldered to the keypad and there are no identifying markings visible so I may have the wrong display type in the new firmware.
This happens with the newly compiled .92 firmware, it does not happen with the factory .91 firmware compliled with Arduino IDE 1.06.
It is repeatable flash .91 no issues, flash .92 and the issue returns.
0.92.9 firmware
Arduino IDE 1.8
Tronxy X3 printer with
Melzi v2 (v5 according to seller)
20x4 LCD with 5 ADC buttons
Everything seems to work fine, but the display has some artifacts that don't affect operation. On all screens individual characters will "twich" to an alternate letter. For example on the main screen the E: will on occation be Buf: will be Btu: the 0 (zero) will be a space.
Unfortunately the display is soldered to the keypad and there are no identifying markings visible so I may have the wrong display type in the new firmware.
This happens with the newly compiled .92 firmware, it does not happen with the factory .91 firmware compliled with Arduino IDE 1.06.
It is repeatable flash .91 no issues, flash .92 and the issue returns.
Comments
Here is a link to a video of the issue...
https://1drv.ms/v/s!Ao5MY57jQx33iPcdORaLZwBShKBTng
Staring at it while printing the phenomenon is much worse - seems to be more frequent and the characters shift more positions
https://1drv.ms/v/s!Ao5MY57jQx33iPcg3LO2tp4DPPYuZg
Everything else seems to work fine.
I tried changing the first HAL::delayMicroseconds to 2, 10, 500 - no noticeable change
I tried changing the second HAL::delayMicroseconds to 2, 10, 50, 320, 500 - no noticeable change
I tried changing the DELAY1MICROSECOND to DELAY2MICROSECOND and since there is not 3 defined I added repeats up to 10. - no significant change
I tried multiple combinations with no significant change.
Thanks for the help so far, any other suggestions?
In the lcdWriteByte function in ui.h what is the interpretation of the first if statement in particular the "false" -
#if false && UI_DISPLAY_RW_PIN >= 0 // not really needed
The reason I ask is because in the original firmware has the following instead of the single if statement.
#if UI_DISPLAY_RW_PIN<0
HAL::delayMicroseconds(UI_DELAYPERCHAR);
#else
The remaining code in the function appears identical if I assume that
#if CPU_ARCH == ARCH_AVR
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
#else
HAL::delayMicroseconds(1);
#endif
is functionally equal to
DELAY1MICROSECOND;
This did give me lots of time to observe the phenomenon. The characters always toggle to the character where the least significant bit of a nibble is a 0 and not a 1, never the other way. For example a "u" 01110101 will become an "e" 01100101 or sometimes a "t" 01110100 but the bit will never flip the other way so the "u" will never become a "v" 01110110 and a "B" 01000010 never seems to be affected. Also the u is more likely to become an e over the t. I did increase the delay between the nibbles in the byte function without any imporvement, things seemed worse in fact. Don't know if this sheds any light on it.
For now I am content with a slightly wonky display since it seems to be purely and esthetic problem that is not affecting a lot of users - a least searching the forum and the google doesn't turn up anyone else with this issue. If you have any other suggestions to try let me know.
All this talk of nibbles and bytes is making me hungry....after I solve that issue it is onto getting a BLtouch working.
For the .92 firmware the configuration tool works well. Use the Zonestar option for the display and pin1 for the ADC. If look at your eeprom values should be able to find all the values you need to complete the configuration tool. I won't be near my printer until Sunday or Monday, if you don't get things working let me know and I'll be able to share my configuration file.
You will need to be able to run Arduino 1.0.x to compile the .91 and the latest arduino version for .92. The solution that I have that works on Windows is to install the 1.0 Arduino and use the "portable" option for the 1.8 (https://www.arduino.cc/en/Guide/PortableIDE). If you have not already done so you will need the sanguino hardware files from https://github.com/Lauszus/Sanguino. BTW, I had to re-flash my bootloader to get things working initially so if you don't get complile errors and avrdude errors out a the start of the upload you may be in the same boat.
When you get .92 installed on yours I would be really interested to know if you have the same glitch on the LCD.
Is there anybody who can post an actual firmware for the x3s?
I crashed my board and I really have no experiences.
Boughman