{"id":1078,"date":"2016-05-24T21:25:03","date_gmt":"2016-05-24T21:25:03","guid":{"rendered":"http:\/\/wp.andreas.bieri.name\/myblog\/?p=1078"},"modified":"2016-05-24T21:25:03","modified_gmt":"2016-05-24T21:25:03","slug":"si5351-democode-kalibration","status":"publish","type":"post","link":"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/","title":{"rendered":"Si5351 Democode: Kalibration"},"content":{"rendered":"<p><span style=\"color: #000000;\">Interaktive Kalibration eines Si5351 Chips. Es ist eine Aufl\u00f6sung auf 1 Herz m\u00f6glich. DieLangzeitkonstanz ist eine andere Frage, ebenso der Einsatz eins TXCO mit wenig Frequenzspr\u00fcngen (siehe Jason&#8217;s Webseite).<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">\/* Simple calibration routine for the Si5351 breakout board.<\/span><br \/>\n<span style=\"color: #3366ff;\"> *<\/span><br \/>\n<span style=\"color: #3366ff;\"> * Copyright 2015 Paul Warren &lt;pwarren@pwarren.id.au&gt;<\/span><br \/>\n<span style=\"color: #3366ff;\"> *<\/span><br \/>\n<span style=\"color: #3366ff;\"> * Uses code from <a style=\"color: #3366ff;\" href=\"https:\/\/github.com\/darksidelemm\/open_radio_miniconf_2015\">https:\/\/github.com\/darksidelemm\/open_radio_miniconf_2015<\/a><\/span><br \/>\n<span style=\"color: #3366ff;\"> * and the old version of the calibration sketch<\/span><br \/>\n<span style=\"color: #3366ff;\"> *<\/span><br \/>\n<span style=\"color: #3366ff;\"> * This sketch\u00a0 is free software: you can redistribute it and\/or modify<\/span><br \/>\n<span style=\"color: #3366ff;\"> * it under the terms of the GNU General Public License as published by<\/span><br \/>\n<span style=\"color: #3366ff;\"> * the Free Software Foundation, either version 3 of the License, or<\/span><br \/>\n<span style=\"color: #3366ff;\"> * (at your option) any later version.<\/span><br \/>\n<span style=\"color: #3366ff;\"> * Foobar is distributed in the hope that it will be useful,<\/span><br \/>\n<span style=\"color: #3366ff;\"> * but WITHOUT ANY WARRANTY; without even the implied warranty of<\/span><br \/>\n<span style=\"color: #3366ff;\"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<\/span><br \/>\n<span style=\"color: #3366ff;\"> * GNU General Public License for more details.<\/span><br \/>\n<span style=\"color: #3366ff;\"> * You should have received a copy of the GNU General Public License.<\/span><br \/>\n<span style=\"color: #3366ff;\"> * If not, see &lt;<a style=\"color: #3366ff;\" href=\"http:\/\/www.gnu.org\/licenses\/\">http:\/\/www.gnu.org\/licenses\/<\/a>&gt;.<\/span><br \/>\n<span style=\"color: #3366ff;\">*\/<\/span><\/p>\n<pre>#include \"si5351.h\"\n#include \"Wire.h\"<\/pre>\n<pre>Si5351 si5351;<\/pre>\n<pre>int32_t cal_factor;\nint32_t old_cal;<\/pre>\n<pre>uint64_t rx_freq;\nuint64_t target_freq = 1000000000ULL; \/\/ 10 MHz, in hundredths of hertz<\/pre>\n<pre>void setup()\n{\n\u00a0 \/\/ Start serial and initialize the Si5351\n\u00a0 Serial.begin(57600);\n\u00a0 si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0);<\/pre>\n<pre>\u00a0 \/\/ get old cal factor\n\u00a0 \/\/old_cal = si5351.get_correction();\u00a0 \n\u00a0 si5351.set_correction(0);\n\u00a0 \/\/ start on target frequency\n\u00a0 si5351.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);\n\u00a0 si5351.set_freq(target_freq, SI5351_PLL_FIXED, SI5351_CLK0);\n\u00a0 si5351.output_enable(SI5351_CLK1, 0);\n\u00a0 si5351.output_enable(SI5351_CLK0, 1);\n}<\/pre>\n<pre>void loop()\n{\n\u00a0 si5351.update_status();\n\u00a0 if (si5351.dev_status.SYS_INIT == 1) {\n\u00a0\u00a0\u00a0\u00a0 Serial.println(\"Initialising Si5351, you shouldn't see many of these!\");\n\u00a0\u00a0\u00a0\u00a0 delay(500);\n\u00a0 } else {\n\u00a0\u00a0\u00a0 cal_factor = 0;\n\/\/\u00a0\u00a0\u00a0 Serial.print(\"Old cal factor was: \");\n\/\/\u00a0\u00a0\u00a0 Serial.println(old_cal);\n\/\/\u00a0\u00a0\u00a0 Serial.println(\"Cal factor now set to 0\");\n\/\/\u00a0\u00a0\u00a0 si5351.set_correction(0);\n\u00a0\u00a0\u00a0 Serial.println();\n\u00a0\u00a0\u00a0 Serial.println(F(\"Adjust until your frequency counter reads as close to 10 MHz as possible\"));\n\u00a0\u00a0\u00a0 vfo_interface();\n\u00a0\u00a0\u00a0 Serial.print(F(\"Calibration factor is \"));\n\u00a0\u00a0\u00a0 Serial.println(cal_factor);\n\u00a0\u00a0\u00a0 Serial.println(\"Setting calibration factor\");\n\u00a0\u00a0\u00a0 si5351.set_correction(cal_factor);\n\u00a0\u00a0\u00a0 Serial.println(\"Resetting target frequency\");\n\u00a0\u00a0\u00a0 si5351.set_freq(target_freq, SI5351_PLL_FIXED, SI5351_CLK0);\n\u00a0 }\u00a0 \n\u00a0 \n\u00a0 \n}<\/pre>\n<pre>static void flush_input(void)\n{\n\u00a0 while (Serial.available() &gt; 0)\n\u00a0 Serial.read();\n}<\/pre>\n<pre>static void vfo_interface(void)\n{\n\u00a0 rx_freq = target_freq;\n\u00a0 Serial.println(F(\"\u00a0\u00a0 Up:\u00a0\u00a0 r\u00a0\u00a0 t\u00a0 y\u00a0 u\u00a0 i\u00a0\u00a0 o\u00a0 p\"));\n\u00a0 Serial.println(F(\" Down:\u00a0\u00a0 f\u00a0\u00a0 g\u00a0 h\u00a0 j\u00a0 k\u00a0\u00a0 l\u00a0 ;\"));\n\u00a0 Serial.println(F(\"\u00a0\u00a0 Hz: 0.01 0.1 1 10 100 1K 10k\"));\n\u00a0 while (1) {\n\u00a0 if (Serial.available() &gt; 0) {\n\u00a0\u00a0\u00a0 char c = Serial.read();\n\u00a0\u00a0\u00a0 switch (c) {\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'q':\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 flush_input();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'r': rx_freq += 1; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'f': rx_freq -= 1; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 't': rx_freq += 10; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'g': rx_freq -= 10; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'y': rx_freq += 100; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'h': rx_freq -= 100; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'u': rx_freq += 1000; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'j': rx_freq -= 1000; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'i': rx_freq += 10000; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'k': rx_freq -= 10000; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'o': rx_freq += 100000; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'l': rx_freq -= 100000; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case 'p': rx_freq += 1000000; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 case ';': rx_freq -= 1000000; break;\n\u00a0\u00a0\u00a0\u00a0\u00a0 default:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Do nothing\n\u00a0\u00a0\u00a0\u00a0\u00a0 continue;\n\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0 si5351.set_freq(rx_freq,SI5351_PLL_FIXED,SI5351_CLK0);\n\u00a0\u00a0\u00a0 cal_factor = (int32_t)(target_freq - rx_freq);\n\u00a0\u00a0\u00a0 Serial.print(\"Current difference:\");\n\u00a0\u00a0\u00a0 Serial.println(cal_factor);\n\u00a0\u00a0\u00a0 }\n\u00a0 }\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Interaktive Kalibration eines Si5351 Chips. Es ist eine Aufl\u00f6sung auf 1 Herz m\u00f6glich. DieLangzeitkonstanz ist eine andere Frage, ebenso der Einsatz eins TXCO mit wenig Frequenzspr\u00fcngen (siehe Jason&#8217;s Webseite). &nbsp; \/* Simple calibration routine for the Si5351 breakout board. * * Copyright 2015 Paul Warren &lt;pwarren@pwarren.id.au&gt; * * Uses code from https:\/\/github.com\/darksidelemm\/open_radio_miniconf_2015 * and the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[119],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Si5351 Democode: Kalibration - Merkbar.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Si5351 Democode: Kalibration - Merkbar.\" \/>\n<meta property=\"og:description\" content=\"Interaktive Kalibration eines Si5351 Chips. Es ist eine Aufl\u00f6sung auf 1 Herz m\u00f6glich. DieLangzeitkonstanz ist eine andere Frage, ebenso der Einsatz eins TXCO mit wenig Frequenzspr\u00fcngen (siehe Jason&#8217;s Webseite). &nbsp; \/* Simple calibration routine for the Si5351 breakout board. * * Copyright 2015 Paul Warren &lt;pwarren@pwarren.id.au&gt; * * Uses code from https:\/\/github.com\/darksidelemm\/open_radio_miniconf_2015 * and the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/\" \/>\n<meta property=\"og:site_name\" content=\"Merkbar.\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-24T21:25:03+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"wp_blogadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/52.29.166.97\/myblog\/#website\",\"url\":\"http:\/\/52.29.166.97\/myblog\/\",\"name\":\"Merkbar.\",\"description\":\"IT, Elektronik und Mathematik\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/52.29.166.97\/myblog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/#webpage\",\"url\":\"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/\",\"name\":\"Si5351 Democode: Kalibration - Merkbar.\",\"isPartOf\":{\"@id\":\"http:\/\/52.29.166.97\/myblog\/#website\"},\"datePublished\":\"2016-05-24T21:25:03+00:00\",\"dateModified\":\"2016-05-24T21:25:03+00:00\",\"author\":{\"@id\":\"http:\/\/52.29.166.97\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d\"},\"breadcrumb\":{\"@id\":\"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"http:\/\/52.29.166.97\/myblog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Si5351 Democode: Kalibration\"}]},{\"@type\":\"Person\",\"@id\":\"http:\/\/52.29.166.97\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d\",\"name\":\"wp_blogadmin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/52.29.166.97\/myblog\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g\",\"caption\":\"wp_blogadmin\"},\"url\":\"http:\/\/wp.andreas.bieri.name\/myblog\/author\/wp_blogadmin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Si5351 Democode: Kalibration - Merkbar.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/","og_locale":"de_DE","og_type":"article","og_title":"Si5351 Democode: Kalibration - Merkbar.","og_description":"Interaktive Kalibration eines Si5351 Chips. Es ist eine Aufl\u00f6sung auf 1 Herz m\u00f6glich. DieLangzeitkonstanz ist eine andere Frage, ebenso der Einsatz eins TXCO mit wenig Frequenzspr\u00fcngen (siehe Jason&#8217;s Webseite). &nbsp; \/* Simple calibration routine for the Si5351 breakout board. * * Copyright 2015 Paul Warren &lt;pwarren@pwarren.id.au&gt; * * Uses code from https:\/\/github.com\/darksidelemm\/open_radio_miniconf_2015 * and the [&hellip;]","og_url":"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/","og_site_name":"Merkbar.","article_published_time":"2016-05-24T21:25:03+00:00","twitter_card":"summary","twitter_misc":{"Verfasst von":"wp_blogadmin","Gesch\u00e4tzte Lesezeit":"3 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"http:\/\/52.29.166.97\/myblog\/#website","url":"http:\/\/52.29.166.97\/myblog\/","name":"Merkbar.","description":"IT, Elektronik und Mathematik","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/52.29.166.97\/myblog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/#webpage","url":"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/","name":"Si5351 Democode: Kalibration - Merkbar.","isPartOf":{"@id":"http:\/\/52.29.166.97\/myblog\/#website"},"datePublished":"2016-05-24T21:25:03+00:00","dateModified":"2016-05-24T21:25:03+00:00","author":{"@id":"http:\/\/52.29.166.97\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d"},"breadcrumb":{"@id":"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wp.andreas.bieri.name\/myblog\/2016\/05\/24\/si5351-democode-kalibration\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"http:\/\/52.29.166.97\/myblog\/"},{"@type":"ListItem","position":2,"name":"Si5351 Democode: Kalibration"}]},{"@type":"Person","@id":"http:\/\/52.29.166.97\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d","name":"wp_blogadmin","image":{"@type":"ImageObject","@id":"http:\/\/52.29.166.97\/myblog\/#personlogo","inLanguage":"de","url":"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g","contentUrl":"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g","caption":"wp_blogadmin"},"url":"http:\/\/wp.andreas.bieri.name\/myblog\/author\/wp_blogadmin\/"}]}},"_links":{"self":[{"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/posts\/1078"}],"collection":[{"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/comments?post=1078"}],"version-history":[{"count":0,"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/posts\/1078\/revisions"}],"wp:attachment":[{"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/media?parent=1078"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/categories?post=1078"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/tags?post=1078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}