Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FastPWM SoundEngine board mbed-src
Diff: main.cpp
- Revision:
- 0:fdec2a8ac3b2
- Child:
- 1:d6a4b42d6188
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Tue Oct 28 12:20:54 2014 +0000
@@ -0,0 +1,62 @@
+#include "mbed.h"
+#include "FastPWM.h"
+#include "atmegatron.h"
+
+
+uint32_t sample_rate = 64000;
+FastPWM audio1(PTD1,1);
+FastPWM audio2(PTD3,1);
+
+Ticker tick;
+DigitalOut led_green(PTE24);
+DigitalOut led_red(PTB19);
+
+DigitalIn encoder1_a(PTA0); // phase A
+DigitalIn encoder1_b(PTE27); // phase B
+DigitalIn encoder1_k(PTD2); // integrated pushbutton
+
+DigitalIn encoder2_a(PTC4); // phase A
+DigitalIn encoder2_b(PTE25); // phase B
+DigitalIn encoder2_k(PTD0); // integrated pushbutton
+
+AnalogIn pot2(A5);
+AnalogIn pot3(A4);
+AnalogIn pot4(A3);
+AnalogIn pot5(A2);
+AnalogIn pot6(A1);
+AnalogIn pot7(A0);
+
+
+int main(void)
+{
+ // Systick at 1 kHz.
+ tick.attach_us(&SysTick_Handler,1000);
+
+ // Setup PWM.
+ audio1.period_us(1000000.0/sample_rate);
+ audio1.pulsewidth_us(0.5*1000000.0/sample_rate); // 50%
+ audio2.period_us(1000000.0/sample_rate);
+ audio2.pulsewidth_us(0.5*1000000.0/sample_rate); // 50%
+
+ // Setup rotary encoders.
+ encoder1_a.mode(PullUp);
+ encoder1_b.mode(PullUp);
+ encoder1_k.mode(PullUp);
+ encoder2_a.mode(PullUp);
+ encoder2_b.mode(PullUp);
+ encoder2_k.mode(PullUp);
+
+ // Initialize random number generator.
+ randomSeed(0); // TODO: find a better seed.
+
+ // Sound engin setup.
+ setup();
+
+ while (true)
+ {
+ loop_priority_low();
+ // The idea is to call loop_priority_high from the systick ISR to
+ // fix the sample calculation rate at a known value (1 kHz).
+ //loop_priority_high();
+ }
+}