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: mbed
main.cpp
- Committer:
- lukeocarwright
- Date:
- 2020-05-22
- Revision:
- 20:fe235c124c67
- Parent:
- 19:08862f49cd9e
- Child:
- 21:60f01b17b0a6
File content as of revision 20:fe235c124c67:
/*
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
2019/20
Name: Luke Cartwright
Username: el18loc
Student ID Number: 201225242
Start Date: 06/02/2020
Last Edited: 19/05/2020
*/
/* TO DO:
Sort Squarewave Sound
Add Menu from front.cpp
Master Volume
MIDI
*/
// Includes
#include "mbed.h"
#include "Gamepad.h"
#include "N5110.h"
#include "Menu.h"
#include "startup.h"
#include "Front.h"
#ifdef DEBUG
# include "Debug.h"
#endif
// Objects
Gamepad pad;
N5110 lcd;
Menu menu;
startup start;
Ticker tick;
//DigitalOut rca(PTC4);
//Serial pc(USBTX, USBRX);
//Functions
//void squareWave();
//void sinspeak();
void noise_isr();
//Global Variables
volatile extern int g_isr_flag; //may need extern
int main()
{
printf("RUNNING CODE \n");
start.initialise(lcd,pad); //initialises board and displays start screen
#ifdef DEBUG
printf("DEBUG COMPILE RUNNING\n");
run_LUTs_debug();
#endif
#ifdef SLOW_TIME //ATTACH TICKERS FOR SOUND
printf("Running in SLOW_TIME\n");
tick.attach(&noise_isr, 1); //extended for debug (1Hz)
#endif
#ifdef CSV
printf("Running in SLOW_TIME\n");
tick.attach_us(&noise_isr, 5000); //extended for debug (1Hz)
#endif
#ifndef SLOW_TIME
#ifndef CSV
tick.attach_us(&noise_isr, 63); //normal mode SR=16kHz
#endif
#endif
menu.mainmenu(lcd,pad);
//UNUSED FUNCTIONS:-------------------------------------------------------------
//squareWave(); //generates pulse wave modulated by sin wave
//sinspeak();
}
void noise_isr() {
#ifdef SLOW_TIME
if (g_isr_flag==0) {
//printf("ISR INTTERUPT = 1\n");
}
#endif
g_isr_flag=1;
}
/*
void squareWave()
{
printf("Generating SIN PWM \n");
int i=0; //int based iterator
float ifl=0; //float based itterator
float f=50; //frequency of sin wave produced
period.attach_us(&up_isr,g_period_us); //ticker to write 1 to rca
down.attach_us(&down_isr,g_uptime_us); //ticker to write 0 to rca
printf("g_period_us: %d \n", g_period_us);
printf("sin Frequency: %f \n", f);
while (1) { //continual loop for pulse production
float dutyratio = wavtable[i]; //calcualtes duty ratio of pulse
g_uptime_us= dutyratio*g_period_us; //calculates duty ratio in usecs
if (g_uptime_us<1) {
g_uptime_us=g_period_us/100;
} //sets to be value for timebeing to eliminate 0 error
//float f=440*(pad.read_pot1()+1); //removed for simplification
if (g_upflag==0) {
ifl = ifl + (4096*f*g_period); //once rca=1 itterate sin function
if (ifl>4096) {
ifl= ifl-4096;
}
i=ifl;
g_upflag=1; //reset flag
//printf("iterate i: i= %d, ifl= %f \n", i, ifl);
}
//printf("DR: %f \n",dutyratio);
//printf("sleep \n");
sleep(); //sleeps till next isr
}
}
void sinspeak ()
{
float f1=440.0;
float i=0;
unsigned short v=0;
int inc=0;
pad.reset_buttons();
f1 = pad.read_pot1();
f1 = 440.0f+440.0f*f1;
//printf("f1= %f \n",f1); // Used for Debug
while (inc<3000) {
int inti = i;
v = o[inti];
printf("OUTPUT: %u \n", v);
//pad.write_u16(v);
wait_us(230); //fs= 4k Ts=250us
i = i + ((4096.0f*f1)/4000.0f); //i+((samples*f)*Ts)
if (i>=4096.0f) {
i=i-4096.0f;
}
else {
wait_us(3); // used to attempt note stabilisation to match other loop
}
inc++;
}
}
*/