Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
annodomini2
Date:
Wed Dec 09 21:32:36 2009 +0000
Commit message:

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Dec 09 21:32:36 2009 +0000
@@ -0,0 +1,248 @@
+/////////////////////////////////////////////////////////////////////////////
+//         Binary Clock                                                    //
+//                                                                         //
+//  Author            Created                                              //
+//  ------            -------                                              //
+//  Andrew Harpin     09 December 2009                                     //
+//                                                                         //
+//  Purpose                                                                //
+//  -------                                                                //
+//  Create a simple program to test the RTC and serial controls            //
+//  on the Mbed device                                                     //
+//                                                                         //
+//  License                                                                //
+//  -------                                                                //
+//  MIT Open Source                                                        //
+//                                                                         //
+//  Warranty                                                               //
+//  --------                                                               //
+//  None                                                                   //
+//                                                                         //
+/////////////////////////////////////////////////////////////////////////////
+
+#include "mbed.h"
+
+// Define your outputs
+DigitalOut Sec1(p5);
+DigitalOut Sec2(p7);
+DigitalOut Sec4(p9);
+DigitalOut Sec8(p11);
+DigitalOut Sec16(p13);
+DigitalOut Sec32(p15);
+
+DigitalOut Min1(p30);
+DigitalOut Min2(p28);
+DigitalOut Min4(p26);
+DigitalOut Min8(p24);
+DigitalOut Min16(p22);
+DigitalOut Min32(p21);
+
+DigitalOut Hour1(LED4);
+DigitalOut Hour2(LED3);
+DigitalOut Hour4(LED2);
+DigitalOut Hour8(LED1);
+DigitalOut Hour16(p20);
+
+void setnewtime();
+
+int main() 
+{
+    // Get the current time
+    time_t seconds = time(NULL);
+    
+    // Check clock is initialised
+    if((seconds < 500) || (seconds == 0xFFFFFFF))
+    {
+        setnewtime();
+    }
+
+    struct tm *tmr;
+    
+    // You're doing this forever, MWWWAAHAHAHAAA!!!!
+    while (1) 
+    {
+        // Get latest time
+        seconds = time(NULL);
+        
+        // Print to serial
+        char buffer[32];
+        strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds));
+        printf("%s", buffer);
+        
+        // Put time in accessible format
+        tmr = localtime(&seconds);
+    
+        // Seconds
+        Sec1     = (bool)(((uint8_t)tmr->tm_sec) & 0x01);
+        Sec2     = (bool)((((uint8_t)tmr->tm_sec) & 0x02) >> 1);
+        Sec4     = (bool)((((uint8_t)tmr->tm_sec) & 0x04) >> 2);
+        Sec8     = (bool)((((uint8_t)tmr->tm_sec) & 0x08) >> 3);
+        Sec16    = (bool)((((uint8_t)tmr->tm_sec) & 0x10) >> 4);
+        Sec32    = (bool)((((uint8_t)tmr->tm_sec) & 0x20) >> 5);
+        
+        // Minutes
+        Min1     = (bool)(((uint8_t)tmr->tm_min) & 0x01);
+        Min2     = (bool)((((uint8_t)tmr->tm_min) & 0x02) >> 1);
+        Min4     = (bool)((((uint8_t)tmr->tm_min) & 0x04) >> 2);
+        Min8     = (bool)((((uint8_t)tmr->tm_min) & 0x08) >> 3);
+        Min16    = (bool)((((uint8_t)tmr->tm_min) & 0x10) >> 4);
+        Min32    = (bool)((((uint8_t)tmr->tm_min) & 0x20) >> 5);
+        
+        // Hours
+        Hour1    = (bool)(((uint8_t)tmr->tm_hour) & 0x01);
+        Hour2    = (bool)((((uint8_t)tmr->tm_hour) & 0x02) >> 1);
+        Hour4    = (bool)((((uint8_t)tmr->tm_hour) & 0x04) >> 2);
+        Hour8    = (bool)((((uint8_t)tmr->tm_hour) & 0x08) >> 3);
+        Hour16   = (bool)((((uint8_t)tmr->tm_hour) & 0x10) >> 4);        
+
+        wait(1); // Not my favorite method, but its easy
+    }
+}
+
+void setnewtime()
+{
+    struct tm t;
+    uint8_t day_limit = 0;
+
+    printf("\n\n*******************************\n");
+    printf("Real Time Clock setting utility\n");
+    printf("*******************************\n\n");
+    
+    // Years
+    t.tm_year = -1; // Initialise
+    
+    do
+    {
+        // Print request and wait for user entry
+        printf("\nEnter Year 1900- : ");
+        scanf("%d",&t.tm_year);
+        
+        // Validate entry
+        if((t.tm_year < 1900))
+        {
+            t.tm_year = -1;
+            printf("\nInvalid Value!!! ");
+        }
+    } while(t.tm_year < 0);
+
+    // Months
+    t.tm_mon = -1; // Initialise
+    
+    do
+    {
+        // Print request and wait for user entry    
+        printf("\nEnter month 1-12 : ");
+        scanf("%d",&t.tm_mon);
+        
+        // Validate entry
+        if((t.tm_mon < 1) || (t.tm_mon > 12))
+        {
+            t.tm_mon = -1;
+            printf("\nInvalid Value!!! ");
+        }
+    } while(t.tm_mon < 0);
+    
+    // Determine maximum number of days in the assigned month
+    switch(t.tm_mon)
+    {
+        case 1:
+        case 3:
+        case 5:
+        case 7:
+        case 8:
+        case 10:
+        case 12:
+            day_limit = 31;
+        break;
+        
+        case 2:
+            day_limit = 28;
+        break;
+        
+        case 4:
+        case 6:
+        case 9:
+        case 11:
+            day_limit = 30;
+        break;
+    }
+
+    // Days
+    t.tm_mday = -1;    // Initialise
+    
+    do
+    {
+        // Print request and wait for user entry
+        printf("\nEnter day 1-%d : ",day_limit);
+        scanf("%d",&t.tm_mday);
+
+        // Validate entry        
+        if((t.tm_mday < 1) || (t.tm_mday > day_limit))
+        {
+            t.tm_mday = -1;
+            printf("\nInvalid Value!!! ");
+        }
+    } while(t.tm_mday < 0);
+
+
+    // Hours
+    t.tm_hour = -1;    // Initialise
+    
+    do
+    {
+        // Print request and wait for user entry
+        printf("\nEnter Hours 0-23 : ");
+        scanf("%d",&t.tm_hour);
+
+        // Validate entry        
+        if((t.tm_hour < 0) || (t.tm_hour > 23))
+        {
+            t.tm_hour = -1;
+            printf("\nInvalid Value!!! ");
+        }
+    } while(t.tm_hour < 0);
+
+    // Minutes
+    t.tm_min = -1;    // Initialise
+    
+    do
+    {
+        // Print request and wait for user entry
+        printf("\nEnter Minutes 0-59 : ");
+        scanf("%d",&t.tm_min);
+
+        // Validate entry        
+        if((t.tm_min < 0) || (t.tm_min > 59))
+        {
+            t.tm_min = -1;
+            printf("\nInvalid Value!!! ");
+        }
+    } while(t.tm_min < 0);
+    
+
+    // Seconds
+    t.tm_sec = -1;    // Initialise
+    
+    do
+    {
+        // Print request and wait for user entry
+        printf("\nEnter Seconds 0-59 : ");
+        scanf("%d",&t.tm_sec);
+
+        // Validate entry        
+        if((t.tm_sec < 0) || (t.tm_sec > 59))
+        {
+            t.tm_sec = -1;
+            printf("\nInvalid Value!!! ");
+        }
+    } while(t.tm_sec < 0);
+    
+    // adjust for tm structure required values
+    t.tm_year = t.tm_year - 1900;
+    t.tm_mon = t.tm_mon - 1;
+    
+    // set the time
+    set_time(mktime(&t));
+    
+    printf("\n\nAnd you're done!\n\nTime now : \n\n");
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Dec 09 21:32:36 2009 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/49a220cc26e0