<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI Emoji";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri","sans-serif";}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1262487827;
        mso-list-type:hybrid;
        mso-list-template-ids:21138876 201916431 201916441 201916443 201916431 201916441 201916443 201916431 201916441 201916443;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:1769960296;
        mso-list-type:hybrid;
        mso-list-template-ids:21138876 201916431 201916441 201916443 201916431 201916441 201916443 201916431 201916441 201916443;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l2
        {mso-list-id:1894077379;
        mso-list-type:hybrid;
        mso-list-template-ids:677930382 201916431 201916441 201916443 201916431 201916441 201916443 201916431 201916441 201916443;}
@list l2:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l2:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l2:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-AU link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>A software solution is fine for a workstation system where it doesn’t need to be too accurate during long-running tasks and can be reset daily. <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>However, we find the RTC more convenient to use on Workstation Oberon simply because we don’t have to enter the date and time whenever we restart the system – which can be several times a day during OS development. <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>But that was not the main reason behind implementing it. The sort of applications we are targeting are:<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l2 level1 lfo3'><![if !supportLists]><span style='color:#1F497D'><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='color:#1F497D'>Unattended embedded systems<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l2 level1 lfo3'><![if !supportLists]><span style='color:#1F497D'><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='color:#1F497D'>Accurate real-time dataloggers using HCFiler as a high-capacity file system<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l2 level1 lfo3'><![if !supportLists]><span style='color:#1F497D'><span style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='color:#1F497D'>Running continuously for extended periods e.g.  weeks or months. <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>The following features of the Maxim DS3234 Real-time Clock / Calendar device we use make it very suitable for *<b>these</b>* applications: </span><span style='font-family:Wingdings;color:#1F497D'>J</span><span style='color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo1'><![if !supportLists]><span style='color:#1F497D'><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='color:#1F497D'>Counts Seconds, Minutes,Hours, Day, Date, Month, and Year with Leap Year Compensation Valid Up to 2099</span><span style='color:#1F497D'><o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo1'><![if !supportLists]><span style='color:#1F497D'><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='color:#1F497D'>Battery backup - time is maintained even when the system is powered-down.<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo1;text-autospace:none'><![if !supportLists]><span style='color:#1F497D'><span style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='color:#1F497D'>±2 minutes per year accuracy from -40°C to +85°C<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo1;text-autospace:none'><![if !supportLists]><span style='color:#1F497D'><span style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'>       </span></span></span><![endif]><span style='color:#1F497D'>Accurate time is maintained during long-running software tasks.<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='color:#1F497D'>Regards,<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='color:#1F497D'>Chris<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='color:#1F497D'>Chris Burrows<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='color:#1F497D'><a href="http://www.astrobe.com">http://www.astrobe.com</a><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='mso-fareast-language:EN-AU'>From:</span></b><span lang=EN-US style='mso-fareast-language:EN-AU'> Jörg [mailto:joerg.straube@iaeth.ch] <br><b>Sent:</b> Thursday, 20 December 2018 3:43 AM<br><b>To:</b> chris@cfbsoftware.com; 'ETH Oberon and related systems'<br><b>Subject:</b> RE: [Oberon] PO2013 - Real time measurement<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoPlainText><span lang=EN-US>I wrote a background task for FPGA Oberon to have a SW-based real time clock.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US>Accuracy is rather good. I set the time manually, had the system run for a day and the time was still correct </span><span lang=EN-US style='font-family:"Segoe UI Emoji","sans-serif"'>😊</span><span lang=EN-US><o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US>Jörg<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US style='mso-fareast-language:DE-CH'>-----Original Message-----<br>From: Oberon <<a href="mailto:oberon-bounces@lists.inf.ethz.ch">oberon-bounces@lists.inf.ethz.ch</a>> On Behalf Of Chris Burrows<br>Sent: Wednesday, December 19, 2018 2:07 PM<br>To: 'ETH Oberon and related systems' <<a href="mailto:oberon@lists.inf.ethz.ch">oberon@lists.inf.ethz.ch</a>><br>Subject: Re: [Oberon] PO2013 - Real time measurement</span><span lang=EN-US><o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> -----Original Message-----<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> From: Oberon [<a href="mailto:oberon-bounces@lists.inf.ethz.ch"><span style='color:windowtext;text-decoration:none'>mailto:oberon-bounces@lists.inf.ethz.ch</span></a>] On Behalf Of <o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> Skulski, Wojciech<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> Sent: Wednesday, 19 December 2018 3:01 AM<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> To: ETH Oberon and related systems<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> Subject: Re: [Oberon] PO2013 - Real time measurement<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> <o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> Chris:<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> <o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> 1)  Are your examples available for download?<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> <o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>The examples have been written for, and are included with, the various distributions of Astrobe for Cortex-M. e.g. the list here:<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH><a href="http://www.astrobe.com/M3Examples/ReadMe.htm"><span style='color:windowtext;text-decoration:none'>http://www.astrobe.com/M3Examples/ReadMe.htm</span></a><o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>However, the SPI Real-time Clock example for FPGA RISC5 Oberon can be downloaded from the FPGA RISC5 section of the Astrobe Forum: <o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH><a href="http://www.astrobe.com/forum/viewforum.php?f=13"><span style='color:windowtext;text-decoration:none'>http://www.astrobe.com/forum/viewforum.php?f=13</span></a><o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>I'm planning to upload the I2C temperature sensor example that I tested with the Pepino when Magnus originally wrote the I2C interface a couple of years<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>ago:<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH><a href="http://saanlima.com/forum/viewtopic.php?f=14&t=1289"><span style='color:windowtext;text-decoration:none'>http://saanlima.com/forum/viewtopic.php?f=14&t=1289</span></a><o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>However, I'll have to retest it first as there have been a number of significant changes since then.<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> 2) Having such components begs a question of system integration.<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> Namely, how to add one of these or several to a firmware System On <o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> Chip? What are the interfaces? What are the rules? How to add a <o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> software driver or drivers after adding the FW components?  The latter <o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> mostly means the rules for defining registers and their addresses.<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>> <o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>The choice is yours - you are only constrained by how much you can configure the available pins to SPI or I2C functions. Some of the Cortex-M boards and Digilent FPGA boards have a set of Arduino-compatible pins. This has been very convenient for testing the TFT display on various boards as the one I have is mounted on an Arduino Shield.<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>The PMOD sockets on the Digilent FPGA boards are also very useful and there are a large variety of PMOD-compatible sensors / devices available.<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>The examples and libraries I supply are intended to be used as components / modules (hardware and software) for prototyping. You can develop and test each part of the system individually. How you eventually integrate them into a system is totally up to you and would depend on how many devices of each type (I2C, SPI, GPIO, ADC etc. etc.) you were using and how many pins you had access to. The FPGA boards are very versatile when it comes to configuring them.<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>Regards,<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>Chris<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>Chris Burrows<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH>CFB Software<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><a href="http://www.astrobe.com"><span style='color:windowtext;text-decoration:none'>http://www.astrobe.com</span></a><o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH><o:p> </o:p></span></p><p class=MsoPlainText><span lang=DE-CH>--<o:p></o:p></span></p><p class=MsoPlainText><span lang=DE-CH><a href="mailto:Oberon@lists.inf.ethz.ch"><span style='color:windowtext;text-decoration:none'>Oberon@lists.inf.ethz.ch</span></a> mailing list for ETH Oberon and related systems <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon"><span style='color:windowtext;text-decoration:none'>https://lists.inf.ethz.ch/mailman/listinfo/oberon</span></a><o:p></o:p></span></p></div></div></body></html>