thank you for the work, is this the final version? do you have anything not working? Do we need to do any hardware changes?
In this setup TMC communication fails on x axis and when homing we get a timing to close exception. Generally there is something fishy with TMC. One guy suggested to me, the soldered Hardware addresses are not correct. I did not check it yet, as i am not at home. But most probably it should be an ready verification for SteveGotthardt as my board is still mounted in the case.
I have a kobra max board v1.0.4 sitting in my lap with r44/r43 burnt out (USB doesnât work)
Is there anything I can do to help? I really want to get klipper running on my max!
I saw the cryptic leetspeak reddit comment about the hardware addresses but the OP writes so poorly it was hard to understand what he did, he seemed to go back and edit his comment and made things even more confusing.
Am I just moving the 0 ohm resistor from 65 to 66?
I have updated the hc32f460_work branch with code that compiles and connects via serial - I donât have the printer, just the mainboard, so I canât test more - anyone want to give it a go? I see some have said that the uart addresses collide on the tmc.
I used the latest version of the code, modified the Kconfig file in the hc32f460 directory, and only modified the code here
config FLASH_START
hex
default 0x8000 if VOXELAB_AQUILA_X1
default 0xC000 if VOXELAB_AQUILA
default 0x0000 if ANYCUBIC_KOBRA
Configured to boot firmware from address 0 without bootloader.
This issue occurs.
OverflowError: canât convert negative number to unsigned
The log is as follows:
klippy.log (16.3 KB)
Well could you check the pins for the TMC address? If i interpret the images online correctly this package should be the correct 2209:
https://www.trinamic.com/fileadmin/assets/Products/ICs_Pinouts/TMC2209_Pinout.JPG
We would need values for MS1 and MS2 for each of the steppers, they should be hardwired. If you can confirm the Adresses for x,y and z i can look into the communication protocoll
Edit: Actually add a link to the pinout
How are you loading firmware into the board? If you use the SD card then the bootloader will put it at 0x8000 and run from there. I use SD card method with firmware.bin as only file on root and it works for me.
See here for someone that has it working now : Voxelab Aquila HC32 Klipper ¡ GitHub
- it does look like TMC addresses need to be changed. Anycubic seems to load values to OTP (or at least startup) and then does not read after that. Klipper reads the chips so distinct addresses are needed. So, we need to modify boards or figure how to make klipper just program only without reading - that means E0 and X (i think) will get same settings.
Interesting, i already investigated the changes they made to the TMC library in marlin release, but those are negligible. So any marlin knowledge here? Does marlin read states at all? M122 X Y Z E does not give me any errors.
re TMC
Here is what I have figured out by popping the heatsinks off and unsoldering R65.
From the flash 0x00 address, I am using jlink directly under the bin file. Not using sd card, directly erase bootloader data.
If I use bootloader+firmware, I can connect normally
The firmware relies on the bootloader to set up clock and dividers for clock, ram, etc. For the firmware to stand alone it needs the missing start-up code.
Hi @SteveGotthardt, today I finally got time to test the FW.
It flashed and connected perfectly on my Kobra, but, first time I tried the âSTEPPER_BUZZ STEPPER=stepper_xâ it failed with âUnable to read tmc uart âstepper_xâ register IFCNTâ.
Then I changed the UART on X from â3â to â0â and I removed the UART from the extruder. Now it is the weird part. The command âSTEPPER_BUZZ STEPPER=stepper_xâ works perfectly (gantry moves left and right), but, when I try to âG28 xâ it gives me this weird error: âUnable to read tmc uart âstepper_xâ register MSCNTâ.
Any idea???
I stopped there since I cannot homeâŚ
What those UART errors mean:
DUMP_TMC STEPPER=stepper_x
Unable to read tmc uart 'stepper_x' register OTP_READ
DUMP_TMC STEPPER=extruder
Unable to read tmc uart 'extruder' register GCONF
For me feels like both X and the E0 are different drivers (X is an 2209 and E0 is a 2208) but both are on the uart_address â0â, so, no idea how to configure that
Shared TMC uarts need unique address or select_pins polarity
no idea how to fix that
I think Marlin code only writes to the TMC (2208/2209) and doesnât care about the addressing because Marlin does not read back the values. Klipper does read back so it needs to address each stepper chip individually. To do that you need to un-solder and move a resistor to change the address; see here: Working on getting Klipper up and running on Trigorilla_Pro_A_V1.0.4 ¡ GitHub
Ow, that sux :(⌠so, I think I will just change the board on my Kobra then. Donât want to mod the boardâŚ
Hi, I have a Creality 2.4.s4 with the HC32F460 that I can use for testing. Iâm not in the field of computer science. I may need someone to instruct me how to go about this.
Edit: BTW this board doesnât have the TMC2208. But something that is comparable to a TMC.
Testing on going has me a bit scaredâŚ
Iâm a highschool drop out who likes cad and 3d printing, not a computer hardware engineer but I could move the r65 to r66
That said, the rest of that GitHub might as well be Chinese besides âtesting on goingâ
Can anyone give me the laymanâs of where we are?
@SteveGotthardt donât you think your code is stable enough to try to get it merged to the main Klipper code base already?
I think the code is fine. Itâs the Kconfig and configs that could be refined.
Iâll try a PR and see how it goes - it would be nice to get it integrated and then keep up to date with the main.
thanks for your input