Plays WAV file

Dependencies:   mbed Gamepad2

Committer:
eencae
Date:
Fri Jan 24 10:50:28 2020 +0000
Revision:
3:8daf84a849e5
Parent:
2:7d65a185f9a4
Child:
4:a46b7a818e39
Updated for Gamepad2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:44597d36d45c 1 /*
eencae 0:44597d36d45c 2
eencae 0:44597d36d45c 3 2645_Ticker
eencae 0:44597d36d45c 4
eencae 2:7d65a185f9a4 5 Sample code from ELEC2645
eencae 0:44597d36d45c 6
eencae 0:44597d36d45c 7 Demonstrates how to use a ticker to generate a periodic timer interrupt
eencae 0:44597d36d45c 8
eencae 0:44597d36d45c 9 (c) Craig A. Evans, University of Leeds, Jan 2016
eencae 0:44597d36d45c 10
eencae 3:8daf84a849e5 11 updated January 2020 - uses Gamepad2 peripherals
eencae 3:8daf84a849e5 12
eencae 0:44597d36d45c 13 */
eencae 0:44597d36d45c 14
eencae 0:44597d36d45c 15 #include "mbed.h"
eencae 0:44597d36d45c 16
eencae 0:44597d36d45c 17 // Create objects for ticker and red LED
eencae 0:44597d36d45c 18 Ticker ticker;
eencae 3:8daf84a849e5 19 DigitalOut led1(PTA2);
eencae 0:44597d36d45c 20
eencae 0:44597d36d45c 21 // flag - must be volatile as changes within ISR
eencae 1:39d8765b574d 22 // g_ prefix makes it easier to distinguish it as global
eencae 1:39d8765b574d 23 volatile int g_timer_flag = 0;
eencae 0:44597d36d45c 24
eencae 0:44597d36d45c 25 // function prototypes
eencae 0:44597d36d45c 26 void timer_isr();
eencae 0:44597d36d45c 27
eencae 0:44597d36d45c 28 int main()
eencae 0:44597d36d45c 29 {
eencae 0:44597d36d45c 30 // set-up the ticker so that the ISR it is called every 0.5 seconds
eencae 0:44597d36d45c 31 ticker.attach(&timer_isr,0.5);
eencae 3:8daf84a849e5 32
eencae 3:8daf84a849e5 33 // the LED is common anode - writing a 1 to the pin will turn the LED OFF
eencae 3:8daf84a849e5 34 led1 = 1;
eencae 0:44597d36d45c 35
eencae 0:44597d36d45c 36 while (1) {
eencae 0:44597d36d45c 37
eencae 0:44597d36d45c 38 // check if flag is set i.e. interrupt has occured
eencae 1:39d8765b574d 39 if (g_timer_flag) {
eencae 1:39d8765b574d 40 g_timer_flag = 0; // if it has, clear the flag
eencae 0:44597d36d45c 41
eencae 2:7d65a185f9a4 42 // send message over serial port - can observe in CoolTerm etc.
eencae 2:7d65a185f9a4 43 printf("Tick \n");
eencae 0:44597d36d45c 44 // DO TASK HERE
eencae 3:8daf84a849e5 45
eencae 3:8daf84a849e5 46 led1 = ! led1;
eencae 0:44597d36d45c 47
eencae 0:44597d36d45c 48 }
eencae 0:44597d36d45c 49
eencae 0:44597d36d45c 50 // put the MCU to sleep until an interrupt wakes it up
eencae 0:44597d36d45c 51 sleep();
eencae 0:44597d36d45c 52
eencae 0:44597d36d45c 53 }
eencae 0:44597d36d45c 54 }
eencae 0:44597d36d45c 55
eencae 0:44597d36d45c 56 // time-triggered interrupt
eencae 0:44597d36d45c 57 void timer_isr()
eencae 0:44597d36d45c 58 {
eencae 1:39d8765b574d 59 g_timer_flag = 1; // set flag in ISR
eencae 0:44597d36d45c 60 }