Ik probeer een ISR te maken die 15 seconden werkt wanneer op een bepaalde knop wordt gedrukt. Ik probeer de AVR-functies op mijn Arduino Uno te gebruiken om te beginnen met tellen wanneer het de ISR binnengaat, en dan de lus te verlaten wanneer deze 15 seconden bereikt.
Ik heb problemen met het redeneren waar de teller daadwerkelijk is opgeslagen, die ik wil gebruiken voor mijn while-lus.
Hier is mijn code tot nu toe:
#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);
}
}