Timer Arduino由于计时器崩溃
我试图使用库到期计时器读取速度为10KHz的模拟输入(A0),但是,当我增加向量值时,它会崩溃,目标是在具有5000大小向量的FFT分析中使用向量。我曾尝试直接使用SAM3X83定时器,但我遇到了同样的问题。这个故事让我快疯了 请,我将感谢任何帮助。ThxTimer Arduino由于计时器崩溃,timer,arduino,counter,interruption,arduino-due,Timer,Arduino,Counter,Interruption,Arduino Due,我试图使用库到期计时器读取速度为10KHz的模拟输入(A0),但是,当我增加向量值时,它会崩溃,目标是在具有5000大小向量的FFT分析中使用向量。我曾尝试直接使用SAM3X83定时器,但我遇到了同样的问题。这个故事让我快疯了 请,我将感谢任何帮助。Thx #include <DueTimer.h> int v[5000]; void setup(){ Serial.begin(9600); Timer3.attachInterrupt(Read); Time
#include <DueTimer.h>
int v[5000];
void setup(){
Serial.begin(9600);
Timer3.attachInterrupt(Read);
Timer3.start(100);
analogReadResolution(12);
}
void loop(){}
void display(){
for(int j=0; j<5000; j++){
Serial.println(v[j]);
}
}
int i=0;
void Read(){
v[i]=analogRead(A0);
i++;
if (i>=5000){
i=0;
Timer3.stop();
}
}
#包括
INTV[5000];
无效设置(){
Serial.begin(9600);
定时器3.连接中断(读取);
定时器3.启动(100);
分辨率(12);
}
void loop(){}
void display(){
对于(int j=0;j=5000){
i=0;
Timer3.stop();
}
}
如果使用DutTimer,则必须使用易失性变量
volatile是一个被称为变量限定符的关键字,它通常在变量的数据类型之前使用,用于修改编译器和后续程序处理变量的方式
声明变量volatile是编译器的一个指令。编译器是将C/C++代码转换为机器代码的软件,机器代码是Arduino中Atmega芯片的真正指令 如果使用DutTimer,则必须使用可变变量 volatile是一个被称为变量限定符的关键字,它通常在变量的数据类型之前使用,用于修改编译器和后续程序处理变量的方式
声明变量volatile是编译器的一个指令。编译器是将C/C++代码转换为机器代码的软件,机器代码是Arduino中Atmega芯片的真正指令 这段代码中的“向量值”是什么?你的代码在哪里崩溃?嗨,收到你的答案后我无法入睡,所以我再次开始编码,我解决了它。虽然我忘记了将调用添加到display函数,但它不起作用,因为它在循环“loop”之外,这就是我所做的,并且工作得非常完美:int I=0;void Read(){v[i]=analogRead(A0);state=!state;digitalWrite(led,state);i++;if(i>5000){Timer3.stop();i=0;flag=1;}}}我必须从循环中调用显示函数,这是它工作的唯一方式,led引脚用于测量频率,并使用usb数据分析仪确保频率正确此代码中的“向量值”是什么?您的代码在哪里崩溃?嗨,收到您的答案后我无法入睡,所以我再次开始编码,我解决了问题。虽然我忘记了将调用添加到display函数,但它不起作用,因为它在循环“loop”之外,这就是我所做的,并且工作得非常完美:int I=0;void Read(){v[i]=analogRead(A0);state=!state;digitalWrite(led,state);i++;if(i>5000){Timer3.stop();i=0;flag=1;}}}我必须从循环中调用显示函数,这是它工作的唯一方式,led引脚用于测量频率,并使用usb数据分析仪确保频率正确