Sample prog to test timer aspects

Dependencies:   TextLCD mbed-src

Testing mbed Timer

main.cpp

Committer:
eduardoG26
Date:
2015-03-30
Revision:
2:a8c19b073684
Parent:
1:fa206fcadfad

File content as of revision 2:a8c19b073684:

/* Testing the overflow of Timer
LCD on I2C bus, PCF8574
 */
#include "mbed.h"
#include "TextLCD.h"

Timer t;

I2C i2c_lcd(I2C_SDA,I2C_SCL); // SDA, SCL

TextLCD_I2C lcd(&i2c_lcd, 0x40, TextLCD::LCD16x2); // I2C bus, PCF8574 Slaveaddress, LCD Type

// Trick to change baudrate of stdout, SFord
void baud(int baudrate)
{
    Serial s(USBTX, USBRX);
    s.baud(baudrate);
}

int main()
{
    uint32_t    Millis, LastMillis;
    baud(921600);   // see function above
    i2c_lcd.frequency(400000);  // 400KHz
    lcd.setCursor(lcd.CurOff_BlkOff); // Cursor off, Blink off
    lcd.cls();
    lcd.setBacklight(TextLCD::LightOn);
    lcd.locate(0,0);  // Goto beginning of line = second par.
    lcd.printf("Testing Timer...\n");
    lcd.locate(0,1);  // Goto beginning of line = second par.
    lcd.printf("...us overflow  \n");
    printf("\nTesting Timer us overflow..\n");

    t.reset();
    t.start();

#define TIMER_MASK (0x1000uL - 1)

    Millis = t.read_ms() & TIMER_MASK;
    lcd.locate(0,1);  // Goto beginning of line = second par.
    lcd.printf("Start M: %08d",Millis);

    do {
        LastMillis = Millis;
        Millis = t.read_ms() & TIMER_MASK;
    } while(LastMillis <= Millis);

    lcd.locate(0,0);  // Goto beginning of line = second par.
    lcd.printf("Last M: %08d",LastMillis);
    lcd.locate(0,1);
    lcd.printf("Act. M: %08d",Millis);

    printf("Last Millis: %08d\n",LastMillis);
    printf("Act. Millis: %08d\n",Millis);
}