I am not getting any compile time error. After some samples of data void loop()
stops executing. Please let know what the problem is. Below is my code.
Thanks and regards Thippeswamy
#include<SPI.h>
float amplitude=1.5;
int freq1=20; int freq2=12;
int k=20;float A= amplitude*k;
int Fs=10550; float sine[5000]; float Fs1=3000;
int i=0;int reg1=1; int reg2=0;
int sample1=Fs/freq1; float sample2=Fs1/freq2;
void setup() {
int SS=10;
pinMode(SS, OUTPUT);
SPI.begin();
}
void data(int reg, int data) {
digitalWrite(SS,LOW);
SPI.transfer(reg);
SPI.transfer(data);
digitalWrite(SS,HIGH);
}
void loop() {
for(int j=0;j<sample1||i<sample2||i>=sample2);j++) {
float s=A*sin((2*3.14*freq1*j)/Fs);
sine[j]=s+190;
data(reg1,sine[j]);
if(i<=sample2) {
float s=A*sin((2*3.14*freq2*i)/Fs1);
sine[i]=s+190;
data(reg2,sine[i]);
i++;
} else if(i>sample2) {
float s=A*sin((2*3.14*freq2*i)/Fs1);
sine[i]=s+190;
data(reg2,sine[i]);
i++;
}
}
}
for(int j=0;j<sample1||i<sample2||i>=sample2);j++)
has a bracket too many. – Nick Gammon♦ Jan 2 '18 at 7:31if
... It looks like it's likely to end up withj
being more than the size of yoursine[]
array since you have no absolute bounds checking... – Majenko♦ Jan 2 '18 at 13:56sine[]
array serves no useful purpose. Get rid of it and justdata(reg2, s + 190);
. – Edgar Bonet Jan 3 '18 at 22:46