Я намагаюся створити ISR, який працює протягом 15 секунд після натискання певної кнопки. Я намагаюся використовувати функції AVR на моєму Arduino Uno, щоб почати підрахунок, коли він входить в ISR, а потім вийти з циклу, коли він досягне 15 секунд.
У мене виникають труднощі, мотивуючи, де лічильник фактично зберігається, що я хочу використовувати для моєї петлі.
Наразі мій код:
#define button_pin 2
#define duration 15
#define osc_in 0
#include
#include
const float convert = 5.0/1023.0;
void setup() {
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
attachInterrupt(digitalPinToInterrupt(button_pin), button_interrupt, CHANGE);
sei();
pinMode(button_pin, INPUT);
Serial.begin(9600);
}
void loop() {
//int channel1 = analogRead(osc_in);
//while (millis() < 10000)
//Serial.println(millis());
//Serial.println(channel1 * convert);
//channel2 = channel1;
}
void button_interrupt(){
//(# timer counts + 1) = (target time)/(timer resolution)
//int timer_counts = duration/(pow(6.4, -5));
//int dur = 234374;
OCR1A = 234374;
TCCR1B |= (1 << CS10);
while (????????){
int channel1 = analogRead(osc_in);
Serial.println(channel1 * convert);
}
}