- ProjectManager.TargetToolchain=STM32CubeIDE
+ ProjectManager.TargetToolchain=EWARM V8.32
I upgraded the ioc files using the script, not inside the IDE, that could be the culprit.ProjectManager.TargetToolchain=STM32CubeIDE
ProjectManager.UnderRoot=true
To:ProjectManager.TargetToolchain=EWARM V8.32
ProjectManager.UnderRoot=false
Hi,
I recently bought a Queeco T12-959, just checked inside and found an XM1008K6T6 instead of an STC, still not supported due to flash memory constraints.
Any ideas to replace that with a regular STM32F103C8T6? May be worth to design a new PCB? What are the benefits of the custom firmware?
Any ideas to replace that with a regular STM32F103C8T6?
Hi,
I recently bought a Queeco T12-959, just checked inside and found an XM1008K6T6 instead of an STC, still not supported due to flash memory constraints.
Any ideas to replace that with a regular STM32F103C8T6? May be worth to design a new PCB? What are the benefits of the custom firmware?Regarding DavidAlfa's firmware: is it possible to configure it to turn heat off with a press of a button or some other action (other than timeout)?
For some actions you might be instructed to issue a Drag rotation.
This means clicking the button (Helding down) and rotating at the same time.
The time between pressing and rotating must be short, i.e. don't keep the button down for two seconds before rotating, doesn't need to be blazing fast either, just done in a natural way.
After a drag-rotation was detected, release the button and use the encoder normally (Don't keep pressing to move, etc).
**Sleep/Standby modes**
You can manually enter lower power modes by making a counter-clockwise drag-rotation.
**Tip selection**
Issue a clockwise drag-rotation to show the tip selection. The tip name label will be highlighted.
I agree, it's not entirely clear...
How about this? Will update the Readme soon.QuoteFor some actions you might be instructed to issue a Drag rotation.
This means clicking the button (Helding down) and rotating at the same time.
The time between pressing and rotating must be short, i.e. don't keep the button down for two seconds before rotating, doesn't need to be blazing fast either, just done in a natural way.
After a drag-rotation was detected, release the button and use the encoder normally (Don't keep pressing to move, etc).
**Sleep/Standby modes**
You can manually enter lower power modes by making a counter-clockwise drag-rotation.
**Tip selection**
Issue a clockwise drag-rotation to show the tip selection. The tip name label will be highlighted.
// Ensure flash was erased
for (uint32_t i = 0u; i < (numPages * FLASH_PAGE_SIZE / sizeof(int32_t)); i++) {
if( *((uint32_t*)(pageAddress + i)) != 0xFFFFFFFF){
Flash_error();
}
}
// Ensure flash was erased
for (uint32_t i = 0u; i < (numPages * FLASH_PAGE_SIZE / sizeof(int32_t)); i++) {
if( *((uint32_t*)pageAddress + i) != 0xFFFFFFFF){
Flash_error();
}
}
((uint32_t*)(pageAddress + i))
Casts a uint32_t pointer to (pageAddress+i). When i=1...3, it will cause misaligned access.((uint32_t*)pageAddress + i)
Casts a uint32_t pointer to pageAddress, then increase increase the pointer by "i" times 32-bit, so each "i" increases the pointer by 4bytes.void SSD1306_init(void){
SSD1306_start_write();
i2c_Send_Byte(0); // Write Cmd
i2c_Send_Byte(0xae); // Display off
i2c_Send_Byte(0); // c_col_H
i2c_Send_Byte(0x10); // c_col_H
i2c_Send_Byte(0x40); // c_start_line
i2c_Send_Byte(0xb0); // c_page
i2c_Send_Byte(0x81); // c_contrast
i2c_Send_Byte(0xff); // max contrast value
i2c_Send_Byte(0xa1); // c_remap_on
i2c_Send_Byte(0xa6); // c_inv_off
i2c_Send_Byte(0xa8); // c_mux_ratio
i2c_Send_Byte(0x3f); // mux ratio = 0x3F
i2c_Send_Byte(0xad); // c_pump_1106_set
i2c_Send_Byte(0x8b); // Enable pump
i2c_Send_Byte(0x33); // c_pump_1106_adj, 9V
i2c_Send_Byte(0xc8); // c_com_rev
i2c_Send_Byte(0xd3); // c_offset
i2c_Send_Byte(0); // offset =0
i2c_Send_Byte(0xd5); // c_clock_set
i2c_Send_Byte(0x80); // clock = 0x80
i2c_Send_Byte(0xd9); // c_precharge
i2c_Send_Byte(0x1f); // precharge = 0x1f
i2c_Send_Byte(0xda); // c_com_cfg
i2c_Send_Byte(0x12); // com_cfg = 0x12
i2c_Send_Byte(0xdb); // c_vcomh_lvl
i2c_Send_Byte(0x40); // level = 1 * Vref
i2c_Send_Byte(0xaf); // display on
i2c_stop();
SSD1306_fill_screen(0);
SSD1306_set_cursor_position(0,0);
}