AT 1284p with tone() frequency wrong above ~25kHz - why?


hi all,
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

Popular posts from this blog

DHT11 Time out error using v0.4.1library

Sketch upload fails with Java error (___REMOVE___/bin/avrdude)!

Arduino Uno + KTY81/210 temperature sensor