C ++ ein Element eines Einzel-Byte-Arrays (flüchtig) ist nicht atomar! WARUM? (Außerdem: Wie erzwinge ich Atomizität in
Posted: 19 Aug 2025, 20:42
Ich habe gerade Tage, buchstäblich, ~ 25 Stunden Arbeit verloren, weil ich versuchte, meinen Code über etwas Einfaches zu debuggen, das ich beim Herstellen eines Feuerscheibe Hexacopter BattleBot nicht kannte (siehe hier und auf meiner persönlichen Website hier). Kein atomarer Betrieb und erfordert atomare Zugangswächter (nämlich Unterbrechungen ausschalten). Warum ist das ??? Welche C -Techniken sind auch alle C -Techniken, um den Atomzugriff auf Variablen auf einem Atmel AVR -Mikrocontroller zu gewährleisten?// Global variables:
const uint8_t NUM_INPUT_PORTS = 3;
volatile uint8_t numElementsInBuf[NUM_INPUT_PORTS];
ISR(PCINT0_vect) // External pin change interrupt service routine on input port 0
{
// Do stuff here
for (uint8_t i=0; i
const uint8_t NUM_INPUT_PORTS = 3;
volatile uint8_t numElementsInBuf[NUM_INPUT_PORTS];
ISR(PCINT0_vect) // External pin change interrupt service routine on input port 0
{
// Do stuff here
for (uint8_t i=0; i