Als «isr» getaggte Fragen


2
Sind Funktionszeigerzuweisungen in Arduino atomar?
Die folgenden Ausschnitte stammen aus dem Quellcode der TimerOne-Bibliothek : // TimerOne.h: void (*isrCallback)(); // TimerOne.cpp: ISR(TIMER1_OVF_vect) // interrupt service routine that wraps a user defined function supplied by attachInterrupt { Timer1.isrCallback(); } // TimerOne.cpp: void TimerOne::attachInterrupt(void (*isr)(), long microseconds) { if(microseconds > 0) setPeriod(microseconds); isrCallback = isr; // register …

1
Wird flüchtig benötigt, wenn auf Variablen von> 1 ISRs zugegriffen wird, diese jedoch nicht außerhalb von ISRs gemeinsam genutzt werden?
Es ist klar dokumentiert, dass beim Teilen globaler Daten mit einem ISR und dem Hauptprogramm die Daten deklariert werden volatilemüssen, um die Speichersichtbarkeit zu gewährleisten (und dies reicht nur für 1-Byte-Daten aus; alles, was größer ist, erfordert spezielle Vorkehrungen, um auch die Atomizität zu gewährleisten). . Hier haben wir gute …
9 interrupt  timers  isr 


2
Arduino-Unterbrechung (bei Pinwechsel)
Ich benutze die Interrupt-Funktion, um ein Array mit Werten zu füllen, die von empfangen wurden digitalRead(). void setup() { Serial.begin(115200); attachInterrupt(0, test_func, CHANGE); } void test_func(){ if(digitalRead(pin)==HIGH){ test_array[x]=1; } else if(digitalRead(pin)==LOW){ test_array[x]=0; } x=x+1; } Das Problem ist, dass es beim Drucken test_arrayWerte gibt wie: 111oder 000. Wenn ich die …
8 arduino-uno  c  isr 

2
Warum muss das flüchtige Schlüsselwort für globale Variablen verwendet werden, wenn Interrupts in Arduino behandelt werden?
Ich bin mit dem Schlüsselwort vertraut Volatile, das zum Deklarieren von Variablen verwendet wird, die von mehreren Threads in einer Softwareanwendung (im Grunde in einer Multithread-Anwendung) gemeinsam genutzt werden. Aber warum muss ich eine Variable deklarieren, Volatilewenn der Code auf einem Arduino-Interrupt ausgeführt wird? Wird der im Interrupt ausgeführte Code …
7 c++  interrupt  isr 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.