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.
Dependents: oldheating gps motorhome heating
Revision 74:9d336a47ab84, committed 2020-04-08
- Comitter:
- andrewboyson
- Date:
- Wed Apr 08 18:24:23 2020 +0000
- Parent:
- 73:286a739f7c05
- Child:
- 75:09d473b1a67f
- Commit message:
- Added 'CLK' in front of log messages. Gave some internal functions better names.
Changed in this revision
| clk/clkgov.c | Show annotated file Show diff for this revision Revisions of this file |
--- a/clk/clkgov.c Thu Feb 27 13:02:18 2020 +0000
+++ b/clk/clkgov.c Wed Apr 08 18:24:23 2020 +0000
@@ -25,15 +25,15 @@
}
//Clock limits
-int ClkGovFreqDivisor = 10;
-int ClkGovFreqChangeMaxPpb = 1000;
-int ClkGovFreqSyncedLimPpb = 1000;
-int ClkGovFreqSyncedHysPpb = 100;
-int ClkGovSlewDivisor = 10;
-int ClkGovSlewChangeMaxMs = 10;
-int ClkGovSlewSyncedLimNs = 10000000;
-int ClkGovSlewSyncedHysNs = 1000000;
-int ClkGovSlewOffsetMaxSecs = 3;
+int ClkGovFreqDivisor = 10;
+int ClkGovFreqChangeMaxPpb = 1000;
+int ClkGovFreqSyncedLimPpb = 1000;
+int ClkGovFreqSyncedHysPpb = 100;
+int ClkGovSlewDivisor = 10;
+int ClkGovSlewChangeMaxMs = 10;
+int ClkGovSlewSyncedLimNs = 10000000;
+int ClkGovSlewSyncedHysNs = 1000000;
+int ClkGovSlewOffsetMaxSecs = 3;
bool ClkGovTrace = false;
@@ -42,7 +42,7 @@
bool ClkGovRateIsSynced = false;
bool ClkGovIsSynced() { return ClkGovRateIsSynced && ClkGovTimeIsSynced; }
-static void setSyncedTime(clktime diff)
+static void setTimeIsSyncedFlag(clktime diff)
{
clktime absDiff = llabs(diff);
clktime limit = ClkGovSlewSyncedLimNs;
@@ -50,16 +50,16 @@
if (absDiff < limit - hysterisis)
{
- if (!ClkGovTimeIsSynced) LogTimeF("Time sync acquired\r\n");
+ if (!ClkGovTimeIsSynced) LogTimeF("CLK Time sync acquired\r\n");
ClkGovTimeIsSynced = true;
}
if (absDiff > limit + hysterisis)
{
- if (ClkGovTimeIsSynced) LogTimeF("Time sync lost (difference = %+lld)\r\n", diff);
+ if (ClkGovTimeIsSynced) LogTimeF("CLK Time sync lost (difference = %+lld)\r\n", diff);
ClkGovTimeIsSynced = false;
}
}
-static void setSyncedRate(clktime diff)
+static void setRateIsSyncedFlag(clktime diff)
{
clktime absDiff = llabs(diff);
@@ -68,12 +68,12 @@
if (absDiff < limit - hysteresis)
{
- if (!ClkGovRateIsSynced) LogTimeF("Rate sync acquired\r\n");
+ if (!ClkGovRateIsSynced) LogTimeF("CLK Rate sync acquired\r\n");
ClkGovRateIsSynced = true;
}
if (absDiff > limit + hysteresis)
{
- if ( ClkGovRateIsSynced) LogTimeF("Rate sync lost\r\n");
+ if ( ClkGovRateIsSynced) LogTimeF("CLK Rate sync lost\r\n");
ClkGovRateIsSynced = false;
}
}
@@ -88,7 +88,7 @@
slew = toAdd;
- if (ClkGovTrace) LogTimeF("Sync setSlew diff %lld gives slew %lld gives TickSlew %ld\r\n", diff, toAdd, slew);
+ if (ClkGovTrace) LogTimeF("CLK setSlew diff %lld gives slew %lld gives TickSlew %ld\r\n", diff, toAdd, slew);
}
static void adjustPpb(clktime diff)
{
@@ -100,7 +100,7 @@
ClkGovSetPpb(ppb - toAdd);
- if (ClkGovTrace) LogTimeF("Sync setPpb diff %lld gives toAdd %lld gives TickPpb %ld\r\n", diff, toAdd, ppb);
+ if (ClkGovTrace) LogTimeF("CLK setPpb diff %lld gives toAdd %lld gives TickPpb %ld\r\n", diff, toAdd, ppb);
}
static clktime lastIntClock = -1; //-1 indicates invalid value. 0 is a valid value.
@@ -118,7 +118,7 @@
if (!ClkTimeIsSet() && thisExtClockIsComplete) //Cold start - only ever true if the RTC was not set.
{
- LogTimeF("Sync - cold start of clock so resetting\r\n");
+ LogTimeF("CLK cold start of clock so resetting\r\n");
reset(thisExtClock);
return;
}
@@ -130,14 +130,20 @@
//Calulate the time error
clktime absDiff = thisAbsClock - thisExtClock;
+ if (llabs(absDiff) > ((clktime)1 << (CLK_TIME_ONE_SECOND_SHIFT - 1)))
+ {
+ LogTimeF("CLK offset %lld (this - ext) is greater than half a second\r\n", absDiff);
+ reset(thisExtClock);
+ return;
+ }
if (llabs(absDiff) > ((clktime)ClkGovSlewOffsetMaxSecs << CLK_TIME_ONE_SECOND_SHIFT))
{
- LogTimeF("Sync - offset is greater than %d seconds so resetting\r\n", ClkGovSlewOffsetMaxSecs);
+ LogTimeF("CLK offset is greater than %d seconds so resetting\r\n", ClkGovSlewOffsetMaxSecs);
reset(thisExtClock);
return;
}
setSlew(absDiff);
- setSyncedTime(absDiff);
+ setTimeIsSyncedFlag(absDiff);
//Calculate the rate error
if (lastExtClock > -1)
@@ -152,7 +158,7 @@
else ppbDiff = (periodDiff << CLK_TIME_ONE_SECOND_SHIFT) / extPeriod;
adjustPpb(ppbDiff);
- setSyncedRate(ppbDiff);
+ setRateIsSyncedFlag(ppbDiff);
}
//Save last values