• ### Another C10 demo

A real wristwatch! :-)

• ### PCB

Finally got the PCB. One step closer to completion...

• ### Where is the zero?

In my initial concept I am basing the C10 moment 00:00:00 to match exactly the standard time 00:00:00, however I am also considering another variant.

What in particular defines the moment zero? In the standard time it is the unclear definition of 'midnight'. I have not been able to find any better explanation that this. But what defines when is midnight?

There is also another problem in this approach. The measures which small numbers, which are closer to the mind, remain largely unused because people are normally asleep during that time. So from the current clock's point of view we first rest, and then do something, instead of the opposite.

I am thinking about the option to base the C10 moment zero on some more specific term, which can define the actual start of the day and leave the finishing intervals for sleep. This translated into current time would mean that the moment 00:00:00 in a C10 clock would be somewhere around 03:00:00 in the standard time.

In my small conversion program this could be easily done by a very small modification (tested in CodeBlocks):

```#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// this little program calculates and prints the intersection points between standard and C10 times
void main(void) {
unsigned long h,m,s;
float t;
for(h=0; h<24; h++)
for(m=0; m<60; m++)
for (s=0; s<60; s++) {
// the day in C10 starts at 3AM standard time
t=((float)(h*3600+m*60+s)/8.64)-1250;
if(t<0) t=10000+t;
if(t>=10000) t-=10000;
if(t==ceil(t)) printf("%02lu:%02lu:%02lu.....%02.2f\r\n",h,m,s,(t/100));
}
}```
• ### Time for some coding...

Time to start putting things together. Counting C10 time is a really simple thing.

Here is the code that does the whole job of counting time and date:

```// C10 date/time structure
struct {
unsigned char  tick;     // 0..99
unsigned char centival;  // 0..99
unsigned char interval;  // 0..99
unsigned char day;       // 0..9
unsigned int year;
} dt;

// must be executed at every exact 0.0864s (one tick)
void clockC10(void) {
if (++dt.tick>99) {
dt.tick=0;
if (++dt.centival>99) {
dt.centival=0;
if (++dt.interval>99) {
dt.interval=0;
if (++dt.day>9) {
unsigned char yl=36;    // year length
// the year will have 37 decades if odd
// number or multiple by 40
if ((dt.year&1) || (dt.year%40)==0) yl++;
dt.day=0;
dt.year++;
}
}
}
}
}
}

```
• ### Accurate setting of a C10 clock from within our current reality

There are exactly 400 intersection moments (occurring at every 216th standard second) between the standard and C10 times, assuming that the tick is always zero.

Setting a C10 clock in a standard time environment is only possible at any of those 400 moments.

```// this little program calculates and prints the
// intersection points between standard and C10 times
void main(void) {
unsigned long h,m,s;
float t;
for (h=0; h<24; h++)
for (m=0; m<60; m++)
for (s=0; s<60; s++) {
t=((float)(h*3600+m*60+s)/8.64);
if (t<0) t=10000+t;
if (t==ceil(t)) printf("  %02d:%02d:%02d      %02.2f\r\n",h,m,s,t/100);
}
}
```

Proposed model for C10 world time zones

The world is divided in 10 equally wide zones: 0 to 9, each containing 10 intervals.

The border between zone 9 and zone 0 is where the date is changed.

Zones are only positive numbers.

• ### Still in the archive

This is the first C10 clock which I made back in 2011. It wasn't very accurate though, because it was built around a standard clock and the counting and timing corrections were in software.

C10 tick is 0.0864s, which translated into frequency is the odd 11.574(074) Hz. There is no such crystal on the market, and I didn't want to order a custom one, but fortunately there are many ways to achieve this exact frequency by using standard frequency crystals:

20kHz/1728

30kHz/2592

31.25kHz/2700

40kHz/3456

... and so on.

In my current schematic I use 100kHz clock divided by 8640. The reason for this is purely to increase the accuracy after division.

The best accuracy in general can be achieved by using a 19.2MHz crystal (with divider 1658880) as these come in the lowest frequency deviation and lowest temperature drift options on the market. But such high input frequency will significantly increase the power consumption in standby as well, so I decided to make a compromise on that for this demo.