This is a part of the Kinetiszer project.
Dependencies: FastPWM SoundEngine board mbed-src
main.cpp@1:d6a4b42d6188, 2014-10-28 (annotated)
- Committer:
- Clemo
- Date:
- Tue Oct 28 12:34:52 2014 +0000
- Revision:
- 1:d6a4b42d6188
- Parent:
- 0:fdec2a8ac3b2
Corrected port of red LED.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Clemo | 0:fdec2a8ac3b2 | 1 | #include "mbed.h" |
Clemo | 0:fdec2a8ac3b2 | 2 | #include "FastPWM.h" |
Clemo | 0:fdec2a8ac3b2 | 3 | #include "atmegatron.h" |
Clemo | 0:fdec2a8ac3b2 | 4 | |
Clemo | 0:fdec2a8ac3b2 | 5 | |
Clemo | 0:fdec2a8ac3b2 | 6 | uint32_t sample_rate = 64000; |
Clemo | 0:fdec2a8ac3b2 | 7 | FastPWM audio1(PTD1,1); |
Clemo | 0:fdec2a8ac3b2 | 8 | FastPWM audio2(PTD3,1); |
Clemo | 0:fdec2a8ac3b2 | 9 | |
Clemo | 0:fdec2a8ac3b2 | 10 | Ticker tick; |
Clemo | 1:d6a4b42d6188 | 11 | |
Clemo | 0:fdec2a8ac3b2 | 12 | DigitalOut led_green(PTE24); |
Clemo | 1:d6a4b42d6188 | 13 | DigitalOut led_red(PTB20); |
Clemo | 0:fdec2a8ac3b2 | 14 | |
Clemo | 0:fdec2a8ac3b2 | 15 | DigitalIn encoder1_a(PTA0); // phase A |
Clemo | 0:fdec2a8ac3b2 | 16 | DigitalIn encoder1_b(PTE27); // phase B |
Clemo | 0:fdec2a8ac3b2 | 17 | DigitalIn encoder1_k(PTD2); // integrated pushbutton |
Clemo | 0:fdec2a8ac3b2 | 18 | |
Clemo | 0:fdec2a8ac3b2 | 19 | DigitalIn encoder2_a(PTC4); // phase A |
Clemo | 0:fdec2a8ac3b2 | 20 | DigitalIn encoder2_b(PTE25); // phase B |
Clemo | 0:fdec2a8ac3b2 | 21 | DigitalIn encoder2_k(PTD0); // integrated pushbutton |
Clemo | 0:fdec2a8ac3b2 | 22 | |
Clemo | 0:fdec2a8ac3b2 | 23 | AnalogIn pot2(A5); |
Clemo | 0:fdec2a8ac3b2 | 24 | AnalogIn pot3(A4); |
Clemo | 0:fdec2a8ac3b2 | 25 | AnalogIn pot4(A3); |
Clemo | 0:fdec2a8ac3b2 | 26 | AnalogIn pot5(A2); |
Clemo | 0:fdec2a8ac3b2 | 27 | AnalogIn pot6(A1); |
Clemo | 0:fdec2a8ac3b2 | 28 | AnalogIn pot7(A0); |
Clemo | 0:fdec2a8ac3b2 | 29 | |
Clemo | 0:fdec2a8ac3b2 | 30 | |
Clemo | 0:fdec2a8ac3b2 | 31 | int main(void) |
Clemo | 0:fdec2a8ac3b2 | 32 | { |
Clemo | 0:fdec2a8ac3b2 | 33 | // Systick at 1 kHz. |
Clemo | 0:fdec2a8ac3b2 | 34 | tick.attach_us(&SysTick_Handler,1000); |
Clemo | 0:fdec2a8ac3b2 | 35 | |
Clemo | 0:fdec2a8ac3b2 | 36 | // Setup PWM. |
Clemo | 0:fdec2a8ac3b2 | 37 | audio1.period_us(1000000.0/sample_rate); |
Clemo | 0:fdec2a8ac3b2 | 38 | audio1.pulsewidth_us(0.5*1000000.0/sample_rate); // 50% |
Clemo | 0:fdec2a8ac3b2 | 39 | audio2.period_us(1000000.0/sample_rate); |
Clemo | 0:fdec2a8ac3b2 | 40 | audio2.pulsewidth_us(0.5*1000000.0/sample_rate); // 50% |
Clemo | 0:fdec2a8ac3b2 | 41 | |
Clemo | 0:fdec2a8ac3b2 | 42 | // Setup rotary encoders. |
Clemo | 0:fdec2a8ac3b2 | 43 | encoder1_a.mode(PullUp); |
Clemo | 0:fdec2a8ac3b2 | 44 | encoder1_b.mode(PullUp); |
Clemo | 0:fdec2a8ac3b2 | 45 | encoder1_k.mode(PullUp); |
Clemo | 0:fdec2a8ac3b2 | 46 | encoder2_a.mode(PullUp); |
Clemo | 0:fdec2a8ac3b2 | 47 | encoder2_b.mode(PullUp); |
Clemo | 0:fdec2a8ac3b2 | 48 | encoder2_k.mode(PullUp); |
Clemo | 0:fdec2a8ac3b2 | 49 | |
Clemo | 0:fdec2a8ac3b2 | 50 | // Initialize random number generator. |
Clemo | 0:fdec2a8ac3b2 | 51 | randomSeed(0); // TODO: find a better seed. |
Clemo | 0:fdec2a8ac3b2 | 52 | |
Clemo | 0:fdec2a8ac3b2 | 53 | // Sound engin setup. |
Clemo | 0:fdec2a8ac3b2 | 54 | setup(); |
Clemo | 0:fdec2a8ac3b2 | 55 | |
Clemo | 0:fdec2a8ac3b2 | 56 | while (true) |
Clemo | 0:fdec2a8ac3b2 | 57 | { |
Clemo | 0:fdec2a8ac3b2 | 58 | loop_priority_low(); |
Clemo | 0:fdec2a8ac3b2 | 59 | // The idea is to call loop_priority_high from the systick ISR to |
Clemo | 0:fdec2a8ac3b2 | 60 | // fix the sample calculation rate at a known value (1 kHz). |
Clemo | 0:fdec2a8ac3b2 | 61 | //loop_priority_high(); |
Clemo | 0:fdec2a8ac3b2 | 62 | } |
Clemo | 0:fdec2a8ac3b2 | 63 | } |