C ++ ein Element eines Einzel-Byte-Arrays (flüchtig) ist nicht atomar! WARUM? (Außerdem: Wie erzwinge ich Atomizität in C++

Programme in C++. Entwicklerforum
Anonymous
 C ++ ein Element eines Einzel-Byte-Arrays (flüchtig) ist nicht atomar! WARUM? (Außerdem: Wie erzwinge ich Atomizität in

Post by Anonymous »

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post