Sebastian132
05.06.2006, 01:05
Hallo! Ich baue gerade eine Countdown-Uhr und bin ein bisschen am ausprobieren mit einem Piezo-Piepser. Nun folgende Frage:
Mit welchen Bits kann ich die Tonhöhe stufenlos variieren (will eine Art amerikanische Polizeisirene realisieren)?
Gut, ich kann mit der relativ groben Vorteiler-Einstellung meines Timers den Rahmen vorgeben. Dann kann ich noch mit dem OCR1A das Puls-Pause-Verhältnis ändern, was jedoch nichts an der eigentlichen Tonhöhe ändert.
Nun habe ich noch gelesen, dass TCNT1L / TCNT1H die Überlaufgrenzen festlegt. Doch auch hier höre ich keinen Unterschied... hier mal mein Test-Code
#include <avr/io.h>
#include <avr/delay.h>
int main ()
{
DDRD=0xFF;
TCCR1A |= (1<<COM1A1)|(1<<PWM10)|(1<<PWM11); //nicht invertierte 10Bit-PWM
TCCR1B |= (1<<CS11); //clk/8 Timerfrequenz
uint16_t i;
OCR1A=128; //Puls-Puase-Verhaeltnis 1:1 (Output Comp. Reg.)
TCNT1L=1;
for(;;){
for(i=0;i<=1023;i++){
TCNT1H=i; //da ändert sich nichts hörbares?
_delay_ms(20);
}
}
}
Gruß,
Sebastian
Mit welchen Bits kann ich die Tonhöhe stufenlos variieren (will eine Art amerikanische Polizeisirene realisieren)?
Gut, ich kann mit der relativ groben Vorteiler-Einstellung meines Timers den Rahmen vorgeben. Dann kann ich noch mit dem OCR1A das Puls-Pause-Verhältnis ändern, was jedoch nichts an der eigentlichen Tonhöhe ändert.
Nun habe ich noch gelesen, dass TCNT1L / TCNT1H die Überlaufgrenzen festlegt. Doch auch hier höre ich keinen Unterschied... hier mal mein Test-Code
#include <avr/io.h>
#include <avr/delay.h>
int main ()
{
DDRD=0xFF;
TCCR1A |= (1<<COM1A1)|(1<<PWM10)|(1<<PWM11); //nicht invertierte 10Bit-PWM
TCCR1B |= (1<<CS11); //clk/8 Timerfrequenz
uint16_t i;
OCR1A=128; //Puls-Puase-Verhaeltnis 1:1 (Output Comp. Reg.)
TCNT1L=1;
for(;;){
for(i=0;i<=1023;i++){
TCNT1H=i; //da ändert sich nichts hörbares?
_delay_ms(20);
}
}
}
Gruß,
Sebastian