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: Hexi_KW40Z Hexi_OLED_SSD1351
Revision 4:1ae9f76749b9, committed 2018-06-14
- Comitter:
- trhackett
- Date:
- Thu Jun 14 19:39:23 2018 +0000
- Parent:
- 3:f34bbdea0786
- Commit message:
- current time mbed post comp arch
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
| timeHelp.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Tue Jun 12 00:27:26 2018 +0000
+++ b/main.cpp Thu Jun 14 19:39:23 2018 +0000
@@ -20,7 +20,7 @@
const float interval = 0.1;
int numTicks = 0;
int prevNumTicks = 0;
-float timingError = 0.0;
+float intervalError = 0.0;
char prevTime[11] = "00:00:00.0";
char displayTime[11] = "00:00:00.0";
@@ -42,7 +42,6 @@
EventQueue receiveTimeQueue;
int main() {
-// pc.printf("main started!!\r\n");
kw40z_device.attach_alert(&AlertReceived);
@@ -140,12 +139,13 @@
// time and hopefully it will be more accurate.
void updateError() {
- float secsToAdd = interval * prevNumTicks + timingError;
+ //
+ float secsToAdd = prevNumTicks * (interval + intervalError);
float T1 = currTimeSecs(displayTime);
float T0 = currTimeSecs(prevTime);
- timingError += (T1 - (T0+secsToAdd)) / prevNumTicks;
+ intervalError = (T1 - (T0+secsToAdd)) / prevNumTicks;
}
int numPrints = 20;
@@ -156,7 +156,7 @@
void updateDisplayString() {
numTicks++;
- float offset = interval * numTicks + timingError;
+ float offset = numTicks * (interval + intervalError);
addSecondsToCurrentTime(prevTime, displayTime, offset);
--- a/timeHelp.h Tue Jun 12 00:27:26 2018 +0000
+++ b/timeHelp.h Thu Jun 14 19:39:23 2018 +0000
@@ -5,6 +5,7 @@
#include <string>
// return true is seconds is even, false if not
+// currTime is in the form HH:MM:SS.s
bool secondsAreEven(char currTime[]) {
char seconds[3];
seconds[0] = currTime[6];
@@ -16,9 +17,10 @@
return (secondsInt % 2) == 0;
}
-// given a starting time and a number of seconds, add the seconds to that time
-// and put the resulting string into resultTime ... both startTime and resultTime
-// must be character arrays of length 10
+// given a starting time (starttime) in the form HH:MM:SS.s
+// and a number of seconds (secsToAdd), add the seconds to that
+// time and put the resulting string into resultTime ... both
+// startTime and resultTime must be character arrays of length 10
void addSecondsToCurrentTime(char startTime[], char resultTime[], float secsToAdd) {
int decsToAdd=0,newSecsToAdd=0,minutesToAdd=0,hoursToAdd=0;
@@ -102,7 +104,8 @@
}
// given the current time in the form HH:MM:SS.S
-// give me back the number of seconds in that number
+// give me back the number of seconds from 00:00:00.0
+// at that time
float currTimeSecs(char currentTime[]) {
// hours
char hours[3];