Corrected the duration calculation on fixed DDS length.
This commit is contained in:
4
DDS.h
4
DDS.h
@@ -170,7 +170,7 @@ public:
|
|||||||
void on(unsigned short duration) {
|
void on(unsigned short duration) {
|
||||||
// Duration in ticks from milliseconds is:
|
// Duration in ticks from milliseconds is:
|
||||||
// t = (1/refclk)
|
// t = (1/refclk)
|
||||||
tickDuration = (duration * refclk) / 1000;
|
tickDuration = (unsigned long)((unsigned long)duration * (unsigned long)refclk) / 1000;
|
||||||
timeLimited = true;
|
timeLimited = true;
|
||||||
running = true;
|
running = true;
|
||||||
}
|
}
|
||||||
@@ -186,7 +186,7 @@ public:
|
|||||||
// Blocking version
|
// Blocking version
|
||||||
void playWait(unsigned short freq, unsigned short duration) {
|
void playWait(unsigned short freq, unsigned short duration) {
|
||||||
play(freq, duration);
|
play(freq, duration);
|
||||||
delay(duration * 1000);
|
delay(duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Our maximum clock isn't very high, so our highest
|
// Our maximum clock isn't very high, so our highest
|
||||||
|
|||||||
@@ -8,9 +8,8 @@ void setup() {
|
|||||||
pinMode(3, OUTPUT);
|
pinMode(3, OUTPUT);
|
||||||
pinMode(11, OUTPUT);
|
pinMode(11, OUTPUT);
|
||||||
dds.start();
|
dds.start();
|
||||||
dds.setFrequency(440);
|
dds.playWait(600, 3000);
|
||||||
dds.on();
|
dds.on();
|
||||||
delay(5000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
|||||||
Reference in New Issue
Block a user