AT 1284p with tone() frequency wrong above ~25kHz - why?
hi all,
i'm experimenting atmel mega 1284p. found simple "frequency generator":
the code runs on 1284p @ 8mhz (board definition from: https://github.com/jchristensen/mighty-1284p/tree/v1.6.3 , arduino ide 1.6.12)
i checked output oszi , @ low frequencys 5khz or 10khz , 20khz, except few hz or down, correct. @ 30khz 60khz 10% less expected (set 60khz gives me 54khz). strange behaviour because checked setup arduino nano , right (set 60khz gives me 60khz).
i tryed go tone() function , seems it's using different counters. maybee there wrong board definition?
is there way of getting work on 1284p?
thank much!
br
i'm experimenting atmel mega 1284p. found simple "frequency generator":
code: [select]
// frequenz-/rechteckgenerator
#define inlength 5 //maximale größe der zahl
#define interminator 'h' //'h' von 'hz'
char instring[inlength+2];
int incount;
#define minfreq 33
#define maxfreq 65535
#define ausgangspin 12 //muss kein pwm-pin sein hr: 26
unsigned int frequenz = 60000; //hz (maximum: 65535 hz)
void setup(){
osccal = 138;
serial1.begin(9600);
serial1.println("bitte angeben wieviel hz ausgegeben werden sollen (mit 'hz')!");
//serial1.print("oscal: ");
//int temp = osccal;
//serial1.println(temp);
delay(1000);
tone(ausgangspin, frequenz);
}
void loop(){
eingabe(); //eingabe-funktion, die eingabe-string entgegennimmt
//zeichenkette -> zahl
//alternative: http://www.arduino.cc/cgi-bin/yabb2/yabb.pl?num=1176289764
frequenz=atol(instring);
//bereich prüfen
frequenz=constrain(frequenz, minfreq, maxfreq);
serial1.print("es wird gesetzt: ");
serial1.print(frequenz,dec);
serial1.println("hz!");
delay(300);
tone(ausgangspin, frequenz);
}
void eingabe(){
incount=0; //ziffern-zähler rücksetzen
do
{
while (serial1.available()==0);
instring[incount] = serial.read();
if(instring[incount]==interminator) break;
if((instring[incount]<'0')||(instring[incount]>'9')){
//continue; //geht nicht
incount--; //-> workaround
}
}
while(++incount < (inlength+1));
serial1.flush();
}
the code runs on 1284p @ 8mhz (board definition from: https://github.com/jchristensen/mighty-1284p/tree/v1.6.3 , arduino ide 1.6.12)
i checked output oszi , @ low frequencys 5khz or 10khz , 20khz, except few hz or down, correct. @ 30khz 60khz 10% less expected (set 60khz gives me 54khz). strange behaviour because checked setup arduino nano , right (set 60khz gives me 60khz).
i tryed go tone() function , seems it's using different counters. maybee there wrong board definition?
is there way of getting work on 1284p?
thank much!
br
Arduino Forum > Using Arduino > Project Guidance > AT 1284p with tone() frequency wrong above ~25kHz - why?
arduino
Comments
Post a Comment