There is a scenario in my application where a UART FIFO overrun can occur. The application can handle dropped packets, so this is not a concern. The issue is that when an overrun occurs, the UART stops interrupting when new bytes fill the HW FIFO. I...
I have a simple application with the goal to fill a ring buffer with bytes received on the uart, while always transmitting 'E' at the same time. The UART uses both the RX and TX FIFOs. The only code running in the main thread is :uint8_t data = 0x45;...
I built an elf executable for the STM32H743ZI. I did not create this executable from within STM32CubeIDE. Still, I would like to debug it from within STM32CubeIDE. How do I load the elf file in the STM32CubeIDE and debug the executable on a target (S...
I am using the arm pid library and I do not know how to use the arm_pid_q31 call. I need to give it an error as a q31_t, however, I am not entirely sure how to go from an int32_t to a q31_t. Do I need to normalize the in32_t to a value between -1 and...
To avoid issues with the debugger, I installed a binary and I can tell that the bytes are still not being received. I went back to debugging and noticed I am getting a ton of noise errors. If I send 100 bytes, I get about 85 noise errors. If I send 1...
I think I am following now. I just had one last question. How do the Kp or Ki get set? In the example you provided, would they have to follow the same scaling scheme? If I wanted Kp = 100It would be PID.Kp = 100*0.001*(1 << 31);
That is what is causing confusion for me. I want to control the speed of a motor that say can be driven from 0 to 15 RPM. Say my target is 10 RPM and I need to be at 14 RPM. I have an error of 4 RPM. The arm_pid_instance_q31 is based on q31. My input...