I'm looking for a way to control registers and pins on a microcontroller (such as an Arduino) using Python or C++ without relying entirely on the Arduino itself. My goal is to be able to write more complex code without being limited by the capacity or limitations of the Arduino.
Does anyone know or have experience on how to do this? For example, is there a way to communicate directly with the microcontroller using a low programming protocol (such as JTAG, SWD, or ISP) via a computer, and control the registers and GPIO pins without having to manually upload firmware to the Arduino each time?
I want to avoid the memory or capacity limitations of the Arduino and focus more on developing more flexible and complex code. I really appreciate if anyone can provide guidance or references related to this.
Yes, that's right, so if there is a big change in the system there is no need to update the Arduino Frimware many times, just change the application version, I hope you understand what I mean.
Several arduinos have chips that implement debug protocols that would theoretically permit writing “registers” from a pc based debug environment. Swd and updi, for instance.
Firmatta is at a somewhat higher level, permitting the pc to essentially execute “arduino code” (like digitalRead()) and return results, using code on the arduino to help.
Either is going to be much slower than native code on the arduino.
Some will let you run an interactive python interpreter on the arduino and send python code…
Seems an odd way to go abou things. The point of a arduino is to run code independently of the pc, and the limitations are just something you have to deal with.
You should write a very detailed description what you want to do and what the most final purpose of such a control is.
Where is the substantial difference between a pretty special program using JTAG to change register-values inside the microcontroller and compile and flashing a new firmware?
Some more questions:
Do you plan to only switch on off IO-pins at a maximum fequency of 10 Hz.?
or
Do you plan to use hardware based pwm which makes a big difference to simple IO-pin switching.
At the moment with that less info to me even using a remote-computer to access some other computer remotely to compile / flash new code seems to be easier to realise than developping a firmware that is able to enable / disable all the special things like hardware-timers, hardware-counters, interrupts etc.