Hallo Leute
Bin neu hier im Forum, beschäftige mich aber seit ca. einem
Monat mit meinen 18F4550
Jetzt habe ich folgendes Problem:
Ich habe ein Programm geschrieben mit dem ich über eine
PS/2 Tastatur eine Frequenz eingeben kann und diese auf einer LCD Anzeige
und einem Lautsprecher ausgebe.
Das einlesen der Tastatur funzt wunderbar
ebenso das Ausgeben auf der LCD anzeige
Aber der Lautsprecher...
Naja der macht was er will...
Ich gebe 100Hz ein und er summt mit ca 10kHz vor sich hin...
Dann gebe ich 1kHz ein und aufeinmal brummt er mit ca 300Hz...
Ich vermute das das Problem bei den Werten liegt
Die liegen ja zwischen 20.000 und 1*10^-6...
Ich habe versucht das Problem wie folgt zu lösen
(ist natürlich nur ein kleines Codesegment ):
Code:
float freq=0.0f;
long delay=0;
int diff=1;
...
freq=freq+(1/diff); //so addiere ich die Zahlen die ich eingebe
diff=diff*10; //beim nächsten Schritt wäre diff 10 -> freq ware 1.1f danach 1.11f usw..
//und so gebe ich dann den Sound aus:
delay=freq*(diff/10);
freq=1/delay;
delay_ms(200);
lcd_gotoxy(1,4);
printf(lcd_putc,"%u Hz",freq);
// Hier wird der Frequenzgenerator gestartet
sound:
output_high(pin_c0);
delay_us(delay);
output_low(pin_c0);
delay_us(delay);
if(!input(pin_e1)==0){goto sound;}
So das ist mein Code...
Nochmal mein Problem:
Der Lautsprecher gibt nicht die Frequenz aus, die ich mit der Tastatur eingebe..
Ich vermute es liegt daran, das der PIC die Werte nicht handlen kann (Division durch 1.xxxxx oder Multiplikation mit 10000..)
Also wenn jemand weiter weis:
BITTE POSTEN
Ich bin über jede Hilfe dankbar!
MFG BigBearRN
Lesezeichen