Task 4.3.3 Solution

Dependencies:   mbed

main.cpp

Committer:
noutram
Date:
2015-09-24
Revision:
0:5c5a623dc9e0

File content as of revision 0:5c5a623dc9e0:

#include "mbed.h"

//Function prototype
void doSample1Hz();
void printBinary12(unsigned short u16);

//Global objects
Serial pc(USBTX, USBRX);
AnalogIn POT_ADC_In(A0);
DigitalOut led(LED1);

//Shared variables
volatile static unsigned short sample16 = 0;

//The ticker, used to sample data at a fixed rate
Ticker t;

//Main function
int main()
{
    //Set baud rate to 115200
    pc.baud(115200);

    //Set up the ticker - 100Hz
    t.attach(doSample1Hz, 1.0);

    while(1) {

        //Sleep
        sleep();

        //Displauy the sample in HEX
        printBinary12(sample16);
 
    } //end while(1)
} //end main

//ISR for the ticker - simply there to perform sampling
void doSample1Hz()
{
    //Toggle on board led
    led = !led;

    //READ ADC as an unsigned integer.
    //Shift right 4 bits (this is a 12bit ADC) & store in static global variable
    sample16 = POT_ADC_In.read_u16() >> 4;
}

//Function to print a 12-bit number in the binary format
//(I've kept this simple to avoid confusion)
void printBinary12(unsigned short u16)
{
    unsigned int mask = 0x800; //Binary 1000000000000000
    for (unsigned int n=0; n<12; n++) {
        //Test to see if the bit is set
        if (u16 & mask) {
            pc.printf("1");
        } else {
            pc.printf("0");   
        }
        //Shift mask 1 bit right
        mask >>= 1;
    }
    pc.printf("\n"); 
}