This commit is contained in:
254
attic/public/blog/debouncing/index.html
Normal file
254
attic/public/blog/debouncing/index.html
Normal file
@ -0,0 +1,254 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>Yet Another Debouncing Method - Minimal Setups</title>
|
||||
<meta name="generator" content="Hugo 0.140.2">
|
||||
<link href="http://172.16.3.33:1313//index.xml" rel="alternate" type="application/rss+xml">
|
||||
<link rel="canonical" href="http://172.16.3.33:1313/blog/debouncing/">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/theme.min.css">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/chroma.min.css">
|
||||
<script defer src="http://172.16.3.33:1313//js/fontawesome6/all.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery.easing@1.4.1/jquery.easing.min.js" integrity="sha256-H3cjtrm/ztDeuhCN9I4yh4iN2Ybx/y1RM7rMmAesA0k=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js" integrity="sha256-4XodgW4TwIJuDtf+v6vDJ39FVxI0veC/kSCCmnFp7ck=" crossorigin="anonymous"></script>
|
||||
<script src="http://172.16.3.33:1313/js/bundle.js"></script><style>
|
||||
:root {}
|
||||
</style>
|
||||
<meta property="og:url" content="http://172.16.3.33:1313/blog/debouncing/">
|
||||
<meta property="og:site_name" content="Minimal Setups">
|
||||
<meta property="og:title" content="Yet Another Debouncing Method">
|
||||
<meta property="og:description" content="You can find several approaches for debouncing mechanical switches on the Internet, some work better, some not so good.
|
||||
One common approach is to ignore events in an ISR when they come too fast:<
|
||||
void count() { static uint32_t lastEvent = 0; uint32_t currentEvent = micros(); if (currentEvent &gt; (lastEvent + configBlock.debounce)) { lastEvent = currentEvent; cnt++; } } void setup() { pinMode(REED_PIN, INPUT_PULLUP); attachInterrupt(REED_PIN, count, FALLING); } This works very good when only the tipping of a switch is relevant.">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="blog">
|
||||
<meta property="article:published_time" content="2018-04-30T00:00:00+00:00">
|
||||
<meta property="article:modified_time" content="2018-04-30T00:00:00+00:00">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Yet Another Debouncing Method">
|
||||
<meta name="twitter:description" content="You can find several approaches for debouncing mechanical switches on the Internet, some work better, some not so good.
|
||||
One common approach is to ignore events in an ISR when they come too fast:<
|
||||
void count() { static uint32_t lastEvent = 0; uint32_t currentEvent = micros(); if (currentEvent &gt; (lastEvent + configBlock.debounce)) { lastEvent = currentEvent; cnt++; } } void setup() { pinMode(REED_PIN, INPUT_PULLUP); attachInterrupt(REED_PIN, count, FALLING); } This works very good when only the tipping of a switch is relevant.">
|
||||
|
||||
<meta itemprop="name" content="Yet Another Debouncing Method">
|
||||
<meta itemprop="description" content="You can find several approaches for debouncing mechanical switches on the Internet, some work better, some not so good.
|
||||
One common approach is to ignore events in an ISR when they come too fast:<
|
||||
void count() { static uint32_t lastEvent = 0; uint32_t currentEvent = micros(); if (currentEvent &gt; (lastEvent + configBlock.debounce)) { lastEvent = currentEvent; cnt++; } } void setup() { pinMode(REED_PIN, INPUT_PULLUP); attachInterrupt(REED_PIN, count, FALLING); } This works very good when only the tipping of a switch is relevant.">
|
||||
<meta itemprop="datePublished" content="2018-04-30T00:00:00+00:00">
|
||||
<meta itemprop="dateModified" content="2018-04-30T00:00:00+00:00">
|
||||
<meta itemprop="wordCount" content="422"><script type="text/javascript" id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container"><header>
|
||||
<h1>Minimal Setups</h1>
|
||||
</header>
|
||||
<div class="global-menu">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class=""><a href="/keys/">Keys</a></li>
|
||||
<li class=""><a href="/about/">About</a></li></ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="content-container">
|
||||
<main><h1>Yet Another Debouncing Method</h1>
|
||||
<time>Mon, Apr 30, 2018</time><p>You can find several approaches for debouncing mechanical switches on the Internet, some work better, some not so good.</p>
|
||||
<p>One common approach is to ignore events in an ISR when they come too fast:<</p>
|
||||
<pre tabindex="0"><code>void count() {
|
||||
static uint32_t lastEvent = 0;
|
||||
uint32_t currentEvent = micros();
|
||||
if (currentEvent &gt; (lastEvent + configBlock.debounce)) {
|
||||
lastEvent = currentEvent;
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
pinMode(REED_PIN, INPUT_PULLUP);
|
||||
attachInterrupt(REED_PIN, count, FALLING);
|
||||
}
|
||||
</code></pre><p>This works very good when only the tipping of a switch is relevant.</p>
|
||||
<p>When also the time the button was pressed is relevant and when it is especially necessary to distinguish between a short and a long press this approach doesn’t work anymore.</p>
|
||||
<p>Since I couldn’t remember the approaches I read about earlier I’ve sketched this state machine:</p>
|
||||
<p><img src="/20180430110848869_0001.jpg" alt=""></p>
|
||||
<p>(The double-lined states are action-states which send out the related information.)</p>
|
||||
<p>At least for me, this approach is working very reliable so far, I’m quite happy with it.</p>
|
||||
<pre tabindex="0"><code>enum tPressedState { psHIGH, psLOW, psACCEPTED_LOW, psLONG_START, psLONG_CONT, psLONG_CONT_SEND, psLONG_END, psSHORT, psINVALID };
|
||||
|
||||
typedef struct {
|
||||
uint8_t index;
|
||||
uint8_t buttonPin;
|
||||
tPressedState pressedState;
|
||||
tPressedState oldPressedState;
|
||||
uint32_t lastStateChange;
|
||||
} tButton;
|
||||
|
||||
tButton buttons[] = {
|
||||
{ 1, SWITCH_1, psHIGH, psINVALID, 0 },
|
||||
{ 2, SWITCH_2, psHIGH, psINVALID, 0 },
|
||||
{ 3, SWITCH_3, psHIGH, psINVALID, 0 },
|
||||
{ 0, 0, psINVALID, psINVALID, 0 } // END MARKER
|
||||
};
|
||||
|
||||
static void buttonHandler(tButton *button) {
|
||||
uint32_t currentMicros = micros();
|
||||
uint8_t buttonState = digitalRead(button-&gt;buttonPin);
|
||||
|
||||
#ifdef DEBUG
|
||||
if (button-&gt;oldPressedState != button-&gt;pressedState) {
|
||||
Serial.print("Index ");
|
||||
Serial.print(button-&gt;index);
|
||||
Serial.print(", state changed from ");
|
||||
Serial.print(button-&gt;oldPressedState);
|
||||
Serial.print(" to ");
|
||||
Serial.print(button-&gt;pressedState);
|
||||
Serial.println();
|
||||
button-&gt;oldPressedState = button-&gt;pressedState;
|
||||
}
|
||||
#endif
|
||||
|
||||
switch (button-&gt;pressedState) {
|
||||
case psHIGH:
|
||||
if (buttonState == LOW) {
|
||||
button-&gt;pressedState = psLOW;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
}
|
||||
break;
|
||||
case psLOW:
|
||||
if (buttonState == HIGH) {
|
||||
button-&gt;pressedState = psHIGH;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
} else {
|
||||
if (currentMicros &gt; (button-&gt;lastStateChange + configBlock.debounce)) {
|
||||
button-&gt;pressedState = psACCEPTED_LOW;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case psACCEPTED_LOW:
|
||||
if (buttonState == HIGH) {
|
||||
button-&gt;pressedState = psSHORT;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
}
|
||||
if (currentMicros &gt; (button-&gt;lastStateChange + (configBlock.longPress * 1000))) {
|
||||
button-&gt;pressedState = psLONG_START;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
}
|
||||
break;
|
||||
case psSHORT:
|
||||
sendMsg(button-&gt;index, "PRESS_SHORT");
|
||||
button-&gt;pressedState = psHIGH;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
break;
|
||||
case psLONG_START:
|
||||
sendMsg(button-&gt;index, "PRESS_LONG_START");
|
||||
button-&gt;pressedState = psLONG_CONT;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
break;
|
||||
case psLONG_CONT:
|
||||
if (buttonState == HIGH) {
|
||||
button-&gt;pressedState = psLONG_END;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
}
|
||||
if (currentMicros &gt; (button-&gt;lastStateChange + (configBlock.longPressRepeat * 1000))) {
|
||||
button-&gt;pressedState = psLONG_CONT_SEND;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
}
|
||||
break;
|
||||
case psLONG_CONT_SEND:
|
||||
sendMsg(button-&gt;index, "PRESS_LONG_CONT");
|
||||
button-&gt;pressedState = psLONG_CONT;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
break;
|
||||
case psLONG_END:
|
||||
sendMsg(button-&gt;index, "PRESS_LONG_END");
|
||||
button-&gt;pressedState = psHIGH;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
break;
|
||||
default:
|
||||
button-&gt;pressedState = psHIGH;
|
||||
button-&gt;lastStateChange = currentMicros;
|
||||
}
|
||||
}
|
||||
</code></pre><footer>
|
||||
</footer>
|
||||
</main>
|
||||
<div class="sidebar">
|
||||
|
||||
<nav class="slide-menu">
|
||||
<ul>
|
||||
<li class=""><a href="http://172.16.3.33:1313/">Home</a></li>
|
||||
|
||||
<li class="parent has-sub-menu"><a href="http://172.16.3.33:1313/blog/">Blogs<span class="mark opened">-</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/tetris/">2024-05-27<br/> Tetris </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/rgb-driver/">2024-05-25<br/> PL 9823 meets MSP430 </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver2/">2025-03-13<br/> Stratum 1 NTP Server participating in ntppool.org </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver/">2025-02-11<br/> Just another Stratum 1 Timeserver </a></li>
|
||||
<li class="active"><a href="http://172.16.3.33:1313/blog/debouncing/">2018-04-30<br/> Yet Another Debouncing Method </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">2016-12-19<br/> Three Phase Inverter - Second Service </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter/">2016-10-14<br/> Three Phase Inverter </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/theremin/">2013-07-01<br/> Theremin </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/email-childprot/">2013-06-27<br/> Children Protection for Postfix-based EMail-Server </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/articles/">Articles<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/articles/quotes/"> Quotes </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/howtos/">HowTos<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/colors-in-minicom/"> Colors in Minicom </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/engel-des-herrn/"> Engel des Herrn </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/occ-in-nextcloud-pod/"> Execute occ in Nextcloud pod </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-backup/"> Gitlab Backup and Restore </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-change-baseurl/"> Gitlab Change BaseURL in Database </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-upgrades/"> Gitlab Upgrades </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/ca-certificate-in-debian/"> How to add a CA certificate in Debian </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/iscsi-on-linux/"> iSCSI on Linux </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/magnifikat/"> Magnifikat </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/neovim/"> Neovim Setup </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/putty-and-hardware-keys/"> PuTTY and OPENGPG hardware keys </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/resize-hdd-on-running-system/"> Resize HDD on running system </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/snmpwalk-with-numeric-and-text-output/"> snmpwalk with numeric and text output of oid </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/prince-of-persia-1/"> Solution for Prince of Persia 1 </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-footer"></div>
|
||||
</div>
|
||||
|
||||
</div><a href="#" id="backtothetop-fixed" class="backtothetop"
|
||||
data-backtothetop-duration="600"
|
||||
data-backtothetop-easing="easeOutQuart"
|
||||
data-backtothetop-fixed-fadeIn="1000"
|
||||
data-backtothetop-fixed-fadeOut="1000"
|
||||
data-backtothetop-fixed-bottom="10"
|
||||
data-backtothetop-fixed-right="20">
|
||||
<span class="fa-layers fa-fw">
|
||||
<i class="fas fa-circle"></i>
|
||||
<i class="fas fa-arrow-circle-up"></i>
|
||||
</span></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
174
attic/public/blog/email-childprot/index.html
Normal file
174
attic/public/blog/email-childprot/index.html
Normal file
@ -0,0 +1,174 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>Children Protection for Postfix-based EMail-Server - Minimal Setups</title>
|
||||
<meta name="generator" content="Hugo 0.140.2">
|
||||
<link href="http://172.16.3.33:1313//index.xml" rel="alternate" type="application/rss+xml">
|
||||
<link rel="canonical" href="http://172.16.3.33:1313/blog/email-childprot/">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/theme.min.css">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/chroma.min.css">
|
||||
<script defer src="http://172.16.3.33:1313//js/fontawesome6/all.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery.easing@1.4.1/jquery.easing.min.js" integrity="sha256-H3cjtrm/ztDeuhCN9I4yh4iN2Ybx/y1RM7rMmAesA0k=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js" integrity="sha256-4XodgW4TwIJuDtf+v6vDJ39FVxI0veC/kSCCmnFp7ck=" crossorigin="anonymous"></script>
|
||||
<script src="http://172.16.3.33:1313/js/bundle.js"></script><style>
|
||||
:root {}
|
||||
</style>
|
||||
<meta property="og:url" content="http://172.16.3.33:1313/blog/email-childprot/">
|
||||
<meta property="og:site_name" content="Minimal Setups">
|
||||
<meta property="og:title" content="Children Protection for Postfix-based EMail-Server">
|
||||
<meta property="og:description" content="This small tool implements a whitelist on a Postfix mail-server. It prevents certain recipient addresses (your kids ones) from receiving mail from any not whitelisted address. Any mail from not whitelisted senders is redirected to a delegate (a parent).
|
||||
The code for this tool can is here: https://gitea.hottis.de/wn/childprot.
|
||||
Configure the tool by adding this line into the master.cf of the Postfix installation:
|
||||
childprot unix - n n - 25 spawn user=mail argv=/opt/sbin/ChildProt and this one to the main.cf:">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="blog">
|
||||
<meta property="article:published_time" content="2013-06-27T00:00:00+00:00">
|
||||
<meta property="article:modified_time" content="2013-06-27T00:00:00+00:00">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Children Protection for Postfix-based EMail-Server">
|
||||
<meta name="twitter:description" content="This small tool implements a whitelist on a Postfix mail-server. It prevents certain recipient addresses (your kids ones) from receiving mail from any not whitelisted address. Any mail from not whitelisted senders is redirected to a delegate (a parent).
|
||||
The code for this tool can is here: https://gitea.hottis.de/wn/childprot.
|
||||
Configure the tool by adding this line into the master.cf of the Postfix installation:
|
||||
childprot unix - n n - 25 spawn user=mail argv=/opt/sbin/ChildProt and this one to the main.cf:">
|
||||
|
||||
<meta itemprop="name" content="Children Protection for Postfix-based EMail-Server">
|
||||
<meta itemprop="description" content="This small tool implements a whitelist on a Postfix mail-server. It prevents certain recipient addresses (your kids ones) from receiving mail from any not whitelisted address. Any mail from not whitelisted senders is redirected to a delegate (a parent).
|
||||
The code for this tool can is here: https://gitea.hottis.de/wn/childprot.
|
||||
Configure the tool by adding this line into the master.cf of the Postfix installation:
|
||||
childprot unix - n n - 25 spawn user=mail argv=/opt/sbin/ChildProt and this one to the main.cf:">
|
||||
<meta itemprop="datePublished" content="2013-06-27T00:00:00+00:00">
|
||||
<meta itemprop="dateModified" content="2013-06-27T00:00:00+00:00">
|
||||
<meta itemprop="wordCount" content="206"><script type="text/javascript" id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container"><header>
|
||||
<h1>Minimal Setups</h1>
|
||||
</header>
|
||||
<div class="global-menu">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class=""><a href="/keys/">Keys</a></li>
|
||||
<li class=""><a href="/about/">About</a></li></ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="content-container">
|
||||
<main><h1>Children Protection for Postfix-based EMail-Server</h1>
|
||||
<time>Thu, Jun 27, 2013</time><p>This small tool implements a whitelist on a Postfix mail-server. It prevents certain recipient addresses (your kids ones) from
|
||||
receiving mail from any not whitelisted address. Any mail from not whitelisted senders is redirected to a delegate (a parent).</p>
|
||||
<p>The code for this tool can is here: <a href="https://gitea.hottis.de/wn/childprot">https://gitea.hottis.de/wn/childprot</a>.</p>
|
||||
<p>Configure the tool by adding this line into the <code>master.cf</code> of the Postfix installation:</p>
|
||||
<pre tabindex="0"><code>childprot unix - n n - 25 spawn user=mail argv=/opt/sbin/ChildProt
|
||||
</code></pre><p>and this one to the <code>main.cf</code>:</p>
|
||||
<pre tabindex="0"><code>check_policy_service unix:private/childprot
|
||||
</code></pre><p>The restricted recipients and the whitelists are stored in an SQLite3 database:</p>
|
||||
<pre tabindex="0"><code>CREATE TABLE child_address_t (
|
||||
child INTEGER REFERENCES child_t(id),
|
||||
address TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE child_t (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT,
|
||||
delegate TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE whitelist_t (
|
||||
child INTEGER REFERENCES child_t(id),
|
||||
address TEXT
|
||||
);
|
||||
|
||||
CREATE VIEW child_v AS
|
||||
SELECT c.id as id,
|
||||
c.delegate as delegate,
|
||||
ca.address as address
|
||||
FROM child_t c,
|
||||
child_address_t ca
|
||||
WHERE c.id = ca.child;
|
||||
</code></pre><p>Restricted persons together with their delegates are added to the table <code>child_t</code>, multiple addresses can be assigned to those persons in
|
||||
<code>child_address_t</code>. Whitelists per person are maintained in <code>whitelist_t</code>.</p>
|
||||
<p>The tool is querying the view <code>child_v</code>.</p>
|
||||
<p><strong>Note: The code is unmaintained and here only for documentary reasons. It is not meant to be used any longer.</strong></p>
|
||||
<footer>
|
||||
</footer>
|
||||
</main>
|
||||
<div class="sidebar">
|
||||
|
||||
<nav class="slide-menu">
|
||||
<ul>
|
||||
<li class=""><a href="http://172.16.3.33:1313/">Home</a></li>
|
||||
|
||||
<li class="parent has-sub-menu"><a href="http://172.16.3.33:1313/blog/">Blogs<span class="mark opened">-</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/tetris/">2024-05-27<br/> Tetris </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/rgb-driver/">2024-05-25<br/> PL 9823 meets MSP430 </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver2/">2025-03-13<br/> Stratum 1 NTP Server participating in ntppool.org </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver/">2025-02-11<br/> Just another Stratum 1 Timeserver </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/debouncing/">2018-04-30<br/> Yet Another Debouncing Method </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">2016-12-19<br/> Three Phase Inverter - Second Service </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter/">2016-10-14<br/> Three Phase Inverter </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/theremin/">2013-07-01<br/> Theremin </a></li>
|
||||
<li class="active"><a href="http://172.16.3.33:1313/blog/email-childprot/">2013-06-27<br/> Children Protection for Postfix-based EMail-Server </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/articles/">Articles<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/articles/quotes/"> Quotes </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/howtos/">HowTos<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/colors-in-minicom/"> Colors in Minicom </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/engel-des-herrn/"> Engel des Herrn </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/occ-in-nextcloud-pod/"> Execute occ in Nextcloud pod </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-backup/"> Gitlab Backup and Restore </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-change-baseurl/"> Gitlab Change BaseURL in Database </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-upgrades/"> Gitlab Upgrades </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/ca-certificate-in-debian/"> How to add a CA certificate in Debian </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/iscsi-on-linux/"> iSCSI on Linux </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/magnifikat/"> Magnifikat </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/neovim/"> Neovim Setup </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/putty-and-hardware-keys/"> PuTTY and OPENGPG hardware keys </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/resize-hdd-on-running-system/"> Resize HDD on running system </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/snmpwalk-with-numeric-and-text-output/"> snmpwalk with numeric and text output of oid </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/prince-of-persia-1/"> Solution for Prince of Persia 1 </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-footer"></div>
|
||||
</div>
|
||||
|
||||
</div><a href="#" id="backtothetop-fixed" class="backtothetop"
|
||||
data-backtothetop-duration="600"
|
||||
data-backtothetop-easing="easeOutQuart"
|
||||
data-backtothetop-fixed-fadeIn="1000"
|
||||
data-backtothetop-fixed-fadeOut="1000"
|
||||
data-backtothetop-fixed-bottom="10"
|
||||
data-backtothetop-fixed-right="20">
|
||||
<span class="fa-layers fa-fw">
|
||||
<i class="fas fa-circle"></i>
|
||||
<i class="fas fa-arrow-circle-up"></i>
|
||||
</span></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
261
attic/public/blog/index.html
Normal file
261
attic/public/blog/index.html
Normal file
@ -0,0 +1,261 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>Blogs - Minimal Setups</title>
|
||||
<meta name="generator" content="Hugo 0.140.2">
|
||||
<link href="http://172.16.3.33:1313//index.xml" rel="alternate" type="application/rss+xml">
|
||||
<link rel="canonical" href="http://172.16.3.33:1313/blog/">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/theme.min.css">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/chroma.min.css">
|
||||
<script defer src="http://172.16.3.33:1313//js/fontawesome6/all.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery.easing@1.4.1/jquery.easing.min.js" integrity="sha256-H3cjtrm/ztDeuhCN9I4yh4iN2Ybx/y1RM7rMmAesA0k=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js" integrity="sha256-4XodgW4TwIJuDtf+v6vDJ39FVxI0veC/kSCCmnFp7ck=" crossorigin="anonymous"></script>
|
||||
<script src="http://172.16.3.33:1313/js/bundle.js"></script><style>
|
||||
:root {}
|
||||
</style>
|
||||
<meta property="og:url" content="http://172.16.3.33:1313/blog/">
|
||||
<meta property="og:site_name" content="Minimal Setups">
|
||||
<meta property="og:title" content="Blogs">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Blogs">
|
||||
|
||||
<meta itemprop="name" content="Blogs">
|
||||
<meta itemprop="datePublished" content="2025-03-13T00:00:00+00:00">
|
||||
<meta itemprop="dateModified" content="2025-03-13T00:00:00+00:00"><script type="text/javascript" id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container"><header>
|
||||
<h1>Minimal Setups</h1>
|
||||
</header>
|
||||
<div class="global-menu">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class=""><a href="/keys/">Keys</a></li>
|
||||
<li class=""><a href="/about/">About</a></li></ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="content-container">
|
||||
<main><h1>Blogs</h1>
|
||||
<article>
|
||||
<h2><a href="http://172.16.3.33:1313/blog/tetris/">Tetris</a></h2>
|
||||
<time>Mon, May 27, 2024</time>
|
||||
<h1 id="tetris---hardware-and-software">Tetris - Hardware and Software</h1>
|
||||
<p><img src="/IMG_4936.jpg" alt=""></p>
|
||||
<p>Update Amplifier (separate input circuitry per PSG, it appears, that a silent PSG has a DC level on its output which is summarized to the AC output of the working PSG, so two input circuits with individual couping capacitor):</p>
|
||||
<p><img src="/IMG_4941.jpg" alt=""></p>
|
||||
<p>Update of the power switch of the amplifier (at appears, that the small transistor couldn’t deliver enough current):</p>
|
||||
<p><img src="/IMG_4958.jpeg" alt=""></p>
|
||||
<p>This Tetris implementation consists of a hardware and a software (running on that hardware).</p>
|
||||
</article>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<article>
|
||||
<h2><a href="http://172.16.3.33:1313/blog/rgb-driver/">PL 9823 meets MSP430</a></h2>
|
||||
<time>Sat, May 25, 2024</time>
|
||||
<h2 id="generating-signals-for-pl-9823-using-a-msp430">Generating signals for PL 9823 using a MSP430</h2>
|
||||
<h3 id="debugging">Debugging</h3>
|
||||
<pre tabindex="0"><code>mspdebug rf2500 gdb
|
||||
|
||||
msp430-gdb -x firmware.gdb
|
||||
</code></pre><p>Attention: the gdb in the TI toolchain package is broken, use the one from Debian</p>
|
||||
<h3 id="signals-working-cycler">Signals Working Cycler</h3>
|
||||
<p>These signals are related to code under tag <code>cycler_works_include_output_stage</code>.</p>
|
||||
<p>First octets:</p>
|
||||
<p><img src="/cycler_working_first_octets.png" alt=""></p>
|
||||
<p>Last octets:</p>
|
||||
<p><img src="/cycler_working_last_octets.png" alt=""></p>
|
||||
<p>Schematics and legend for signals:</p>
|
||||
<p><img src="/schematics.jpeg" alt=""></p>
|
||||
<h4 id="some-more-explanations">Some more explanations</h4>
|
||||
<p>Consider above schematics and the screen shot “Last octets” from the oscilloscope.</p>
|
||||
<p><img src="/timing.png" alt=""></p>
|
||||
<p>Timer TA1 is running in “up mode” to the value 45 set in compare register <code>TA1CCR0</code>. The compare registers <code>TA1CCR1</code> is set to 10, <code>TA1CCR2</code> is set to 22.
|
||||
The output mode of the timer is set to “Reset/Set”, which means the GPIO associated with <code>TA1CCR1</code> (P2.1) and <code>TA1CCR2</code> (P2.4) are set at the overflow and
|
||||
restart of the counter and reset when the counter matches the associated compare value.</p>
|
||||
</article>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<article>
|
||||
<h2><a href="http://172.16.3.33:1313/blog/timeserver2/">Stratum 1 NTP Server participating in ntppool.org</a></h2>
|
||||
<time>Thu, Mar 13, 2025</time>
|
||||
|
||||
</article>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<article>
|
||||
<h2><a href="http://172.16.3.33:1313/blog/timeserver/">Just another Stratum 1 Timeserver</a></h2>
|
||||
<time>Tue, Feb 11, 2025</time>
|
||||
<p><img src="/IMG_6045.jpg" alt=""></p>
|
||||
<p>This server utilizes <code>ntpsec</code> on Debian on a BeagleBone Black with a UBlox GPS module.</p>
|
||||
<p>It has been joined the NTP pool, the statistics are available at <a href="https://www.ntppool.org/scores/93.241.86.156">https://www.ntppool.org/scores/93.241.86.156</a>.</p>
|
||||
<p>Some additional statistics graphs for the server are available at <a href="https://numbers.hottis.de/ntpserver">https://numbers.hottis.de/ntpserver</a>.</p>
|
||||
<h2 id="preparation-of-the-beaglebone">Preparation of the BeagleBone</h2>
|
||||
<p>The GPS module is connected via serial line to the UART of the BB.</p>
|
||||
<p>The additional connection of the PPS output with the PPS device of the Linux running on the BB via a GPIO must be prepared. A device tree overlay must be created and compiled:</p>
|
||||
</article>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<article>
|
||||
<h2><a href="http://172.16.3.33:1313/blog/debouncing/">Yet Another Debouncing Method</a></h2>
|
||||
<time>Mon, Apr 30, 2018</time>
|
||||
<p>You can find several approaches for debouncing mechanical switches on the Internet, some work better, some not so good.</p>
|
||||
<p>One common approach is to ignore events in an ISR when they come too fast:<</p>
|
||||
<pre tabindex="0"><code>void count() {
|
||||
static uint32_t lastEvent = 0;
|
||||
uint32_t currentEvent = micros();
|
||||
if (currentEvent &gt; (lastEvent + configBlock.debounce)) {
|
||||
lastEvent = currentEvent;
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
pinMode(REED_PIN, INPUT_PULLUP);
|
||||
attachInterrupt(REED_PIN, count, FALLING);
|
||||
}
|
||||
</code></pre><p>This works very good when only the tipping of a switch is relevant.</p>
|
||||
</article>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<article>
|
||||
<h2><a href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">Three Phase Inverter - Second Service</a></h2>
|
||||
<time>Mon, Dec 19, 2016</time>
|
||||
<p>I wrote in October about my first try to build a simple three phase inverter, see <a href="http://172.16.3.33:1313/blog/three-phase-inverter/">here</a>. In the first try I used four MSP430 microcontroller, one for the PWM of each phase and one to coordinate the phase shift of the three phases.</p>
|
||||
<p>In this experiment I put everything on one STM32 microcontroller. Here I used the DMA feature to feed data into the PWM counter and I calculated the sine values at start-up time on the microcontroller. Additionally I put in the driver for a CAN interface, however, it is not yet supported in the firmware.</p>
|
||||
</article>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<article>
|
||||
<h2><a href="http://172.16.3.33:1313/blog/three-phase-inverter/">Three Phase Inverter</a></h2>
|
||||
<time>Fri, Oct 14, 2016</time>
|
||||
<p>Already when I was still in school, about 30 years ago, I was curious to make an inverter using some MOSFETs. I actually was able to build a simple one phase inverter with rectangular signal shape (I used a NE555). Using this thing I drove a transformer to light a blub. However, all of these inverters I built passed by in fire.</p>
|
||||
<p>Now, I tried it again, not longer using MOSFETs but IGBTs with free-wheeling diode. Moreover, I used some microcontrollers and sine values to feed a PWM to get a sine-alike signal shape. And this time I was able with three phases to drive an asynchronous motor.</p>
|
||||
</article>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<article>
|
||||
<h2><a href="http://172.16.3.33:1313/blog/theremin/">Theremin</a></h2>
|
||||
<time>Mon, Jul 1, 2013</time>
|
||||
<p>A <a href="https://en.wikipedia.org/wiki/Theremin">Theremin</a> is a rather old electronic music instrument, invented in 1928. It is played by approaching hands to two antennas, without touching them. One antenna is used to manipulate the frequeny of the tone, the other one to manipulate the volume.</p>
|
||||
<p><img src="/foto-am-30-06-13-um-20-021.jpg" alt=""></p>
|
||||
<p>This is just another Theremin. Only basic structure of the circuit was taken from many other published Theremin circuits.</p>
|
||||
<p><img src="/scan_005006-1024x654.jpg" alt=""></p>
|
||||
<p>Completely new (or at least not found during my Theremin googling) is the digital zero-calibration.</p>
|
||||
</article>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<article>
|
||||
<h2><a href="http://172.16.3.33:1313/blog/email-childprot/">Children Protection for Postfix-based EMail-Server</a></h2>
|
||||
<time>Thu, Jun 27, 2013</time>
|
||||
<p>This small tool implements a whitelist on a Postfix mail-server. It prevents certain recipient addresses (your kids ones) from
|
||||
receiving mail from any not whitelisted address. Any mail from not whitelisted senders is redirected to a delegate (a parent).</p>
|
||||
<p>The code for this tool can is here: <a href="https://gitea.hottis.de/wn/childprot">https://gitea.hottis.de/wn/childprot</a>.</p>
|
||||
<p>Configure the tool by adding this line into the <code>master.cf</code> of the Postfix installation:</p>
|
||||
<pre tabindex="0"><code>childprot unix - n n - 25 spawn user=mail argv=/opt/sbin/ChildProt
|
||||
</code></pre><p>and this one to the <code>main.cf</code>:</p>
|
||||
</article>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<footer>
|
||||
</footer>
|
||||
</main>
|
||||
<div class="sidebar">
|
||||
|
||||
<nav class="slide-menu">
|
||||
<ul>
|
||||
<li class=""><a href="http://172.16.3.33:1313/">Home</a></li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/blog/">Blogs<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/tetris/">2024-05-27<br/> Tetris </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/rgb-driver/">2024-05-25<br/> PL 9823 meets MSP430 </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver2/">2025-03-13<br/> Stratum 1 NTP Server participating in ntppool.org </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver/">2025-02-11<br/> Just another Stratum 1 Timeserver </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/debouncing/">2018-04-30<br/> Yet Another Debouncing Method </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">2016-12-19<br/> Three Phase Inverter - Second Service </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter/">2016-10-14<br/> Three Phase Inverter </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/theremin/">2013-07-01<br/> Theremin </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/email-childprot/">2013-06-27<br/> Children Protection for Postfix-based EMail-Server </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/articles/">Articles<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/articles/quotes/"> Quotes </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/howtos/">HowTos<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/colors-in-minicom/"> Colors in Minicom </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/engel-des-herrn/"> Engel des Herrn </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/occ-in-nextcloud-pod/"> Execute occ in Nextcloud pod </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-backup/"> Gitlab Backup and Restore </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-change-baseurl/"> Gitlab Change BaseURL in Database </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-upgrades/"> Gitlab Upgrades </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/ca-certificate-in-debian/"> How to add a CA certificate in Debian </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/iscsi-on-linux/"> iSCSI on Linux </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/magnifikat/"> Magnifikat </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/neovim/"> Neovim Setup </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/putty-and-hardware-keys/"> PuTTY and OPENGPG hardware keys </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/resize-hdd-on-running-system/"> Resize HDD on running system </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/snmpwalk-with-numeric-and-text-output/"> snmpwalk with numeric and text output of oid </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/prince-of-persia-1/"> Solution for Prince of Persia 1 </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-footer"></div>
|
||||
</div>
|
||||
|
||||
</div><a href="#" id="backtothetop-fixed" class="backtothetop"
|
||||
data-backtothetop-duration="600"
|
||||
data-backtothetop-easing="easeOutQuart"
|
||||
data-backtothetop-fixed-fadeIn="1000"
|
||||
data-backtothetop-fixed-fadeOut="1000"
|
||||
data-backtothetop-fixed-bottom="10"
|
||||
data-backtothetop-fixed-right="20">
|
||||
<span class="fa-layers fa-fw">
|
||||
<i class="fas fa-circle"></i>
|
||||
<i class="fas fa-arrow-circle-up"></i>
|
||||
</span></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
75
attic/public/blog/index.xml
Normal file
75
attic/public/blog/index.xml
Normal file
@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Blogs on Minimal Setups</title>
|
||||
<link>http://172.16.3.33:1313/blog/</link>
|
||||
<description>Recent content in Blogs on Minimal Setups</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Thu, 13 Mar 2025 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="http://172.16.3.33:1313/blog/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Tetris</title>
|
||||
<link>http://172.16.3.33:1313/blog/tetris/</link>
|
||||
<pubDate>Mon, 27 May 2024 00:00:00 +0000</pubDate>
|
||||
<guid>http://172.16.3.33:1313/blog/tetris/</guid>
|
||||
<description><h1 id="tetris---hardware-and-software">Tetris - Hardware and Software</h1>
<p><img src="http://172.16.3.33:1313/IMG_4936.jpg" alt=""></p>
<p>Update Amplifier (separate input circuitry per PSG, it appears, that a silent PSG has a DC level on its output which is summarized to the AC output of the working PSG, so two input circuits with individual couping capacitor):</p>
<p><img src="http://172.16.3.33:1313/IMG_4941.jpg" alt=""></p>
<p>Update of the power switch of the amplifier (at appears, that the small transistor couldn&rsquo;t deliver enough current):</p>
<p><img src="http://172.16.3.33:1313/IMG_4958.jpeg" alt=""></p>
<p>This Tetris implementation consists of a hardware and a software (running on that hardware).</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>PL 9823 meets MSP430</title>
|
||||
<link>http://172.16.3.33:1313/blog/rgb-driver/</link>
|
||||
<pubDate>Sat, 25 May 2024 00:00:00 +0000</pubDate>
|
||||
<guid>http://172.16.3.33:1313/blog/rgb-driver/</guid>
|
||||
<description><h2 id="generating-signals-for-pl-9823-using-a-msp430">Generating signals for PL 9823 using a MSP430</h2>
<h3 id="debugging">Debugging</h3>
<pre tabindex="0"><code>mspdebug rf2500 gdb

msp430-gdb -x firmware.gdb
</code></pre><p>Attention: the gdb in the TI toolchain package is broken, use the one from Debian</p>
<h3 id="signals-working-cycler">Signals Working Cycler</h3>
<p>These signals are related to code under tag <code>cycler_works_include_output_stage</code>.</p>
<p>First octets:</p>
<p><img src="http://172.16.3.33:1313/cycler_working_first_octets.png" alt=""></p>
<p>Last octets:</p>
<p><img src="http://172.16.3.33:1313/cycler_working_last_octets.png" alt=""></p>
<p>Schematics and legend for signals:</p>
<p><img src="http://172.16.3.33:1313/schematics.jpeg" alt=""></p>
<h4 id="some-more-explanations">Some more explanations</h4>
<p>Consider above schematics and the screen shot &ldquo;Last octets&rdquo; from the oscilloscope.</p>
<p><img src="http://172.16.3.33:1313/timing.png" alt=""></p>
<p>Timer TA1 is running in &ldquo;up mode&rdquo; to the value 45 set in compare register <code>TA1CCR0</code>. The compare registers <code>TA1CCR1</code> is set to 10, <code>TA1CCR2</code> is set to 22.
The output mode of the timer is set to &ldquo;Reset/Set&rdquo;, which means the GPIO associated with <code>TA1CCR1</code> (P2.1) and <code>TA1CCR2</code> (P2.4) are set at the overflow and
restart of the counter and reset when the counter matches the associated compare value.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Stratum 1 NTP Server participating in ntppool.org</title>
|
||||
<link>http://172.16.3.33:1313/blog/timeserver2/</link>
|
||||
<pubDate>Thu, 13 Mar 2025 00:00:00 +0000</pubDate>
|
||||
<guid>http://172.16.3.33:1313/blog/timeserver2/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Just another Stratum 1 Timeserver</title>
|
||||
<link>http://172.16.3.33:1313/blog/timeserver/</link>
|
||||
<pubDate>Tue, 11 Feb 2025 00:00:00 +0000</pubDate>
|
||||
<guid>http://172.16.3.33:1313/blog/timeserver/</guid>
|
||||
<description><p><img src="http://172.16.3.33:1313/IMG_6045.jpg" alt=""></p>
<p>This server utilizes <code>ntpsec</code> on Debian on a BeagleBone Black with a UBlox GPS module.</p>
<p>It has been joined the NTP pool, the statistics are available at <a href="https://www.ntppool.org/scores/93.241.86.156">https://www.ntppool.org/scores/93.241.86.156</a>.</p>
<p>Some additional statistics graphs for the server are available at <a href="https://numbers.hottis.de/ntpserver">https://numbers.hottis.de/ntpserver</a>.</p>
<h2 id="preparation-of-the-beaglebone">Preparation of the BeagleBone</h2>
<p>The GPS module is connected via serial line to the UART of the BB.</p>
<p>The additional connection of the PPS output with the PPS device of the Linux running on the BB via a GPIO must be prepared. A device tree overlay must be created and compiled:</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Yet Another Debouncing Method</title>
|
||||
<link>http://172.16.3.33:1313/blog/debouncing/</link>
|
||||
<pubDate>Mon, 30 Apr 2018 00:00:00 +0000</pubDate>
|
||||
<guid>http://172.16.3.33:1313/blog/debouncing/</guid>
|
||||
<description><p>You can find several approaches for debouncing mechanical switches on the Internet, some work better, some not so good.</p>
<p>One common approach is to ignore events in an ISR when they come too fast:&lt;</p>
<pre tabindex="0"><code>void count() {
	static uint32_t lastEvent = 0;
	uint32_t currentEvent = micros();
	if (currentEvent &amp;gt; (lastEvent + configBlock.debounce)) {
		lastEvent = currentEvent;
		cnt++;
	}
}

void setup() {
 pinMode(REED_PIN, INPUT_PULLUP);
 attachInterrupt(REED_PIN, count, FALLING);
}
</code></pre><p>This works very good when only the tipping of a switch is relevant.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Three Phase Inverter - Second Service</title>
|
||||
<link>http://172.16.3.33:1313/blog/three-phase-inverter-ng/</link>
|
||||
<pubDate>Mon, 19 Dec 2016 00:00:00 +0000</pubDate>
|
||||
<guid>http://172.16.3.33:1313/blog/three-phase-inverter-ng/</guid>
|
||||
<description><p>I wrote in October about my first try to build a simple three phase inverter, see <a href="http://172.16.3.33:1313/blog/three-phase-inverter/">here</a>. In the first try I used four MSP430 microcontroller, one for the PWM of each phase and one to coordinate the phase shift of the three phases.</p>
<p>In this experiment I put everything on one STM32 microcontroller. Here I used the DMA feature to feed data into the PWM counter and I calculated the sine values at start-up time on the microcontroller. Additionally I put in the driver for a CAN interface, however, it is not yet supported in the firmware.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Three Phase Inverter</title>
|
||||
<link>http://172.16.3.33:1313/blog/three-phase-inverter/</link>
|
||||
<pubDate>Fri, 14 Oct 2016 00:00:00 +0000</pubDate>
|
||||
<guid>http://172.16.3.33:1313/blog/three-phase-inverter/</guid>
|
||||
<description><p>Already when I was still in school, about 30 years ago, I was curious to make an inverter using some MOSFETs. I actually was able to build a simple one phase inverter with rectangular signal shape (I used a NE555). Using this thing I drove a transformer to light a blub. However, all of these inverters I built passed by in fire.</p>
<p>Now, I tried it again, not longer using MOSFETs but IGBTs with free-wheeling diode. Moreover, I used some microcontrollers and sine values to feed a PWM to get a sine-alike signal shape. And this time I was able with three phases to drive an asynchronous motor.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Theremin</title>
|
||||
<link>http://172.16.3.33:1313/blog/theremin/</link>
|
||||
<pubDate>Mon, 01 Jul 2013 00:00:00 +0000</pubDate>
|
||||
<guid>http://172.16.3.33:1313/blog/theremin/</guid>
|
||||
<description><p>A <a href="https://en.wikipedia.org/wiki/Theremin">Theremin</a> is a rather old electronic music instrument, invented in 1928. It is played by approaching hands to two antennas, without touching them. One antenna is used to manipulate the frequeny of the tone, the other one to manipulate the volume.</p>
<p><img src="http://172.16.3.33:1313/foto-am-30-06-13-um-20-021.jpg" alt=""></p>
<p>This is just another Theremin. Only basic structure of the circuit was taken from many other published Theremin circuits.</p>
<p><img src="http://172.16.3.33:1313/scan_005006-1024x654.jpg" alt=""></p>
<p>Completely new (or at least not found during my Theremin googling) is the digital zero-calibration.</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Children Protection for Postfix-based EMail-Server</title>
|
||||
<link>http://172.16.3.33:1313/blog/email-childprot/</link>
|
||||
<pubDate>Thu, 27 Jun 2013 00:00:00 +0000</pubDate>
|
||||
<guid>http://172.16.3.33:1313/blog/email-childprot/</guid>
|
||||
<description><p>This small tool implements a whitelist on a Postfix mail-server. It prevents certain recipient addresses (your kids ones) from
receiving mail from any not whitelisted address. Any mail from not whitelisted senders is redirected to a delegate (a parent).</p>
<p>The code for this tool can is here: <a href="https://gitea.hottis.de/wn/childprot">https://gitea.hottis.de/wn/childprot</a>.</p>
<p>Configure the tool by adding this line into the <code>master.cf</code> of the Postfix installation:</p>
<pre tabindex="0"><code>childprot unix - n n - 25 spawn user=mail argv=/opt/sbin/ChildProt
</code></pre><p>and this one to the <code>main.cf</code>:</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
10
attic/public/blog/page/1/index.html
Normal file
10
attic/public/blog/page/1/index.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<title>http://172.16.3.33:1313/blog/</title>
|
||||
<link rel="canonical" href="http://172.16.3.33:1313/blog/">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="refresh" content="0; url=http://172.16.3.33:1313/blog/">
|
||||
</head>
|
||||
</html>
|
241
attic/public/blog/rgb-driver/index.html
Normal file
241
attic/public/blog/rgb-driver/index.html
Normal file
@ -0,0 +1,241 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>PL 9823 meets MSP430 - Minimal Setups</title>
|
||||
<meta name="generator" content="Hugo 0.140.2">
|
||||
<link href="http://172.16.3.33:1313//index.xml" rel="alternate" type="application/rss+xml">
|
||||
<link rel="canonical" href="http://172.16.3.33:1313/blog/rgb-driver/">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/theme.min.css">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/chroma.min.css">
|
||||
<script defer src="http://172.16.3.33:1313//js/fontawesome6/all.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery.easing@1.4.1/jquery.easing.min.js" integrity="sha256-H3cjtrm/ztDeuhCN9I4yh4iN2Ybx/y1RM7rMmAesA0k=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js" integrity="sha256-4XodgW4TwIJuDtf+v6vDJ39FVxI0veC/kSCCmnFp7ck=" crossorigin="anonymous"></script>
|
||||
<script src="http://172.16.3.33:1313/js/bundle.js"></script><style>
|
||||
:root {}
|
||||
</style>
|
||||
<meta property="og:url" content="http://172.16.3.33:1313/blog/rgb-driver/">
|
||||
<meta property="og:site_name" content="Minimal Setups">
|
||||
<meta property="og:title" content="PL 9823 meets MSP430">
|
||||
<meta property="og:description" content="Generating signals for PL 9823 using a MSP430 Debugging mspdebug rf2500 gdb msp430-gdb -x firmware.gdb Attention: the gdb in the TI toolchain package is broken, use the one from Debian
|
||||
Signals Working Cycler These signals are related to code under tag cycler_works_include_output_stage.
|
||||
First octets:
|
||||
Last octets:
|
||||
Schematics and legend for signals:
|
||||
Some more explanations Consider above schematics and the screen shot “Last octets” from the oscilloscope.
|
||||
Timer TA1 is running in “up mode” to the value 45 set in compare register TA1CCR0. The compare registers TA1CCR1 is set to 10, TA1CCR2 is set to 22. The output mode of the timer is set to “Reset/Set”, which means the GPIO associated with TA1CCR1 (P2.1) and TA1CCR2 (P2.4) are set at the overflow and restart of the counter and reset when the counter matches the associated compare value.">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="blog">
|
||||
<meta property="article:published_time" content="2024-05-25T00:00:00+00:00">
|
||||
<meta property="article:modified_time" content="2024-05-25T00:00:00+00:00">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="PL 9823 meets MSP430">
|
||||
<meta name="twitter:description" content="Generating signals for PL 9823 using a MSP430 Debugging mspdebug rf2500 gdb msp430-gdb -x firmware.gdb Attention: the gdb in the TI toolchain package is broken, use the one from Debian
|
||||
Signals Working Cycler These signals are related to code under tag cycler_works_include_output_stage.
|
||||
First octets:
|
||||
Last octets:
|
||||
Schematics and legend for signals:
|
||||
Some more explanations Consider above schematics and the screen shot “Last octets” from the oscilloscope.
|
||||
Timer TA1 is running in “up mode” to the value 45 set in compare register TA1CCR0. The compare registers TA1CCR1 is set to 10, TA1CCR2 is set to 22. The output mode of the timer is set to “Reset/Set”, which means the GPIO associated with TA1CCR1 (P2.1) and TA1CCR2 (P2.4) are set at the overflow and restart of the counter and reset when the counter matches the associated compare value.">
|
||||
|
||||
<meta itemprop="name" content="PL 9823 meets MSP430">
|
||||
<meta itemprop="description" content="Generating signals for PL 9823 using a MSP430 Debugging mspdebug rf2500 gdb msp430-gdb -x firmware.gdb Attention: the gdb in the TI toolchain package is broken, use the one from Debian
|
||||
Signals Working Cycler These signals are related to code under tag cycler_works_include_output_stage.
|
||||
First octets:
|
||||
Last octets:
|
||||
Schematics and legend for signals:
|
||||
Some more explanations Consider above schematics and the screen shot “Last octets” from the oscilloscope.
|
||||
Timer TA1 is running in “up mode” to the value 45 set in compare register TA1CCR0. The compare registers TA1CCR1 is set to 10, TA1CCR2 is set to 22. The output mode of the timer is set to “Reset/Set”, which means the GPIO associated with TA1CCR1 (P2.1) and TA1CCR2 (P2.4) are set at the overflow and restart of the counter and reset when the counter matches the associated compare value.">
|
||||
<meta itemprop="datePublished" content="2024-05-25T00:00:00+00:00">
|
||||
<meta itemprop="dateModified" content="2024-05-25T00:00:00+00:00">
|
||||
<meta itemprop="wordCount" content="547"><script type="text/javascript" id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container"><header>
|
||||
<h1>Minimal Setups</h1>
|
||||
</header>
|
||||
<div class="global-menu">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class=""><a href="/keys/">Keys</a></li>
|
||||
<li class=""><a href="/about/">About</a></li></ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="content-container">
|
||||
<main><h1>PL 9823 meets MSP430</h1>
|
||||
<time>Sat, May 25, 2024</time><h2 id="generating-signals-for-pl-9823-using-a-msp430">Generating signals for PL 9823 using a MSP430</h2>
|
||||
<h3 id="debugging">Debugging</h3>
|
||||
<pre tabindex="0"><code>mspdebug rf2500 gdb
|
||||
|
||||
msp430-gdb -x firmware.gdb
|
||||
</code></pre><p>Attention: the gdb in the TI toolchain package is broken, use the one from Debian</p>
|
||||
<h3 id="signals-working-cycler">Signals Working Cycler</h3>
|
||||
<p>These signals are related to code under tag <code>cycler_works_include_output_stage</code>.</p>
|
||||
<p>First octets:</p>
|
||||
<p><img src="/cycler_working_first_octets.png" alt=""></p>
|
||||
<p>Last octets:</p>
|
||||
<p><img src="/cycler_working_last_octets.png" alt=""></p>
|
||||
<p>Schematics and legend for signals:</p>
|
||||
<p><img src="/schematics.jpeg" alt=""></p>
|
||||
<h4 id="some-more-explanations">Some more explanations</h4>
|
||||
<p>Consider above schematics and the screen shot “Last octets” from the oscilloscope.</p>
|
||||
<p><img src="/timing.png" alt=""></p>
|
||||
<p>Timer TA1 is running in “up mode” to the value 45 set in compare register <code>TA1CCR0</code>. The compare registers <code>TA1CCR1</code> is set to 10, <code>TA1CCR2</code> is set to 22.
|
||||
The output mode of the timer is set to “Reset/Set”, which means the GPIO associated with <code>TA1CCR1</code> (P2.1) and <code>TA1CCR2</code> (P2.4) are set at the overflow and
|
||||
restart of the counter and reset when the counter matches the associated compare value.</p>
|
||||
<p>So, on P2.1 (D1 on the oscilloscope) we have a long pulse and at P2.4 (D0 on the oscilloscope) we have a short pulse, with synchronous raising edge.</p>
|
||||
<p><img src="/74hc74-function-table.png" alt=""></p>
|
||||
<p>The inverted signal P2.4 is connected to the Clock input of a 74HC74 D-flipflop, the data input of the flipflop is connected to GPIO P1.0 (D2 on the oscilloscope).</p>
|
||||
<p>The interrupt service routine <code>shifter_isr</code> is triggered by the overflow and restart of the timer, this interrupt service routine provides the next bit to be
|
||||
signaled on P1.0. This bit is stored at the falling edge of P2.4 (long pulse) in the flipflop.</p>
|
||||
<p>The short pulse (P2.1, D1) is ANDed using a 74HC08 with the inverted output of the flipflop, the long pulse (P2.4, D0) is ANDed with the non-inverted output of
|
||||
the flipflop, the ANDed results are ORed using a 74HC32.</p>
|
||||
<p>So, at the output of the OR gate (yellow on the oscilloscope) we get a long pulse for a 1 at P1.0 provided by the ISR and a short pulse for a 0 at P1.0.</p>
|
||||
<p>The routine <code>drawscreen</code> takes color values from the “frame buffer” beginning at <code>screendata</code> and translated them into the red, green and blue values and provides these values, first red, then green and finally blue to the ISR via the <code>DATA_REGISTER</code>.</p>
|
||||
<p>The ISR cycles over the <code>DATA_REGISTER</code> and presents the bits at P1.0.</p>
|
||||
<p>Additionally, when the first bit of a full draw screen cycle is presented at P1.0 by the ISR, it also sets the data enable signal at P1.1 and when the last bit has been provided it disabled the data enable signal. This signal is also synchronized using a flipflop and used to enable the short/long pulses using an AND gate.</p>
|
||||
<h3 id="timing">Timing</h3>
|
||||
<p>Complete cycle: 2.48us</p>
|
||||
<p><img src="/pulse_complete.png" alt=""></p>
|
||||
<p>Short pulse: 550ns</p>
|
||||
<p><img src="/pulse_short.png" alt=""></p>
|
||||
<p>Long pulse: 1.18us</p>
|
||||
<p><img src="/pulse_long.png" alt=""></p>
|
||||
<h3 id="load-time">Load Time</h3>
|
||||
<p>During of loading data into five LEDs: 297us</p>
|
||||
<p><img src="/five_leds.png" alt=""></p>
|
||||
<p>During of loading data into six LEDs: 297us</p>
|
||||
<p><img src="/six_leds.png" alt=""></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th># of LEDs</th>
|
||||
<th>Load Time measured</th>
|
||||
<th>calculated</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>5</td>
|
||||
<td>297us</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>6</td>
|
||||
<td>354us</td>
|
||||
<td>356.4us</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>10</td>
|
||||
<td></td>
|
||||
<td>594us</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>100</td>
|
||||
<td></td>
|
||||
<td>5.9ms</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>200</td>
|
||||
<td></td>
|
||||
<td>11.8ms</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="reset-circuitry">Reset Circuitry</h3>
|
||||
<p>It appears that the output voltage of the power supply raises that slow, that the MCU
|
||||
will not handle the reset correctly.</p>
|
||||
<p>The following circuitry should generate a valid reset signal far enough from the raise
|
||||
of the supply voltage:</p>
|
||||
<p><img src="/reset-circuit.jpeg" alt=""></p>
|
||||
<p>The circuit generates the following signals:</p>
|
||||
<p><img src="/reset-signal.png" alt=""></p>
|
||||
<h5 id="reference-voltage-green">Reference voltage (green):</h5>
|
||||
<pre tabindex="0"><code class="language-math" data-lang="math">U_ref = 3.3V \frac{22k\Omega}{22k\Omega + 10k\Omega} = 2.2V
|
||||
</code></pre><h5 id="trigger-voltage-purple">Trigger voltage (purple):</h5>
|
||||
<pre tabindex="0"><code class="language-math" data-lang="math">U_trigg = 3.3V \frac{330k\Omega}{330k\Omega + 82k\Omega} = 2.64V
|
||||
</code></pre><h5 id="rc-constant">RC constant:</h5>
|
||||
<pre tabindex="0"><code class="language-math" data-lang="math">\tau = 82k\Omega \cdot 100nF = 8.2ms
|
||||
</code></pre><footer>
|
||||
</footer>
|
||||
</main>
|
||||
<div class="sidebar">
|
||||
|
||||
<nav class="slide-menu">
|
||||
<ul>
|
||||
<li class=""><a href="http://172.16.3.33:1313/">Home</a></li>
|
||||
|
||||
<li class="parent has-sub-menu"><a href="http://172.16.3.33:1313/blog/">Blogs<span class="mark opened">-</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/tetris/">2024-05-27<br/> Tetris </a></li>
|
||||
<li class="active"><a href="http://172.16.3.33:1313/blog/rgb-driver/">2024-05-25<br/> PL 9823 meets MSP430 </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver2/">2025-03-13<br/> Stratum 1 NTP Server participating in ntppool.org </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver/">2025-02-11<br/> Just another Stratum 1 Timeserver </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/debouncing/">2018-04-30<br/> Yet Another Debouncing Method </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">2016-12-19<br/> Three Phase Inverter - Second Service </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter/">2016-10-14<br/> Three Phase Inverter </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/theremin/">2013-07-01<br/> Theremin </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/email-childprot/">2013-06-27<br/> Children Protection for Postfix-based EMail-Server </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/articles/">Articles<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/articles/quotes/"> Quotes </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/howtos/">HowTos<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/colors-in-minicom/"> Colors in Minicom </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/engel-des-herrn/"> Engel des Herrn </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/occ-in-nextcloud-pod/"> Execute occ in Nextcloud pod </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-backup/"> Gitlab Backup and Restore </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-change-baseurl/"> Gitlab Change BaseURL in Database </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-upgrades/"> Gitlab Upgrades </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/ca-certificate-in-debian/"> How to add a CA certificate in Debian </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/iscsi-on-linux/"> iSCSI on Linux </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/magnifikat/"> Magnifikat </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/neovim/"> Neovim Setup </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/putty-and-hardware-keys/"> PuTTY and OPENGPG hardware keys </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/resize-hdd-on-running-system/"> Resize HDD on running system </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/snmpwalk-with-numeric-and-text-output/"> snmpwalk with numeric and text output of oid </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/prince-of-persia-1/"> Solution for Prince of Persia 1 </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-footer"></div>
|
||||
</div>
|
||||
|
||||
</div><a href="#" id="backtothetop-fixed" class="backtothetop"
|
||||
data-backtothetop-duration="600"
|
||||
data-backtothetop-easing="easeOutQuart"
|
||||
data-backtothetop-fixed-fadeIn="1000"
|
||||
data-backtothetop-fixed-fadeOut="1000"
|
||||
data-backtothetop-fixed-bottom="10"
|
||||
data-backtothetop-fixed-right="20">
|
||||
<span class="fa-layers fa-fw">
|
||||
<i class="fas fa-circle"></i>
|
||||
<i class="fas fa-arrow-circle-up"></i>
|
||||
</span></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
171
attic/public/blog/tetris/index.html
Normal file
171
attic/public/blog/tetris/index.html
Normal file
@ -0,0 +1,171 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>Tetris - Minimal Setups</title>
|
||||
<meta name="generator" content="Hugo 0.140.2">
|
||||
<link href="http://172.16.3.33:1313//index.xml" rel="alternate" type="application/rss+xml">
|
||||
<link rel="canonical" href="http://172.16.3.33:1313/blog/tetris/">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/theme.min.css">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/chroma.min.css">
|
||||
<script defer src="http://172.16.3.33:1313//js/fontawesome6/all.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery.easing@1.4.1/jquery.easing.min.js" integrity="sha256-H3cjtrm/ztDeuhCN9I4yh4iN2Ybx/y1RM7rMmAesA0k=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js" integrity="sha256-4XodgW4TwIJuDtf+v6vDJ39FVxI0veC/kSCCmnFp7ck=" crossorigin="anonymous"></script>
|
||||
<script src="http://172.16.3.33:1313/js/bundle.js"></script><style>
|
||||
:root {}
|
||||
</style>
|
||||
<meta property="og:url" content="http://172.16.3.33:1313/blog/tetris/">
|
||||
<meta property="og:site_name" content="Minimal Setups">
|
||||
<meta property="og:title" content="Tetris">
|
||||
<meta property="og:description" content="Tetris - Hardware and Software Update Amplifier (separate input circuitry per PSG, it appears, that a silent PSG has a DC level on its output which is summarized to the AC output of the working PSG, so two input circuits with individual couping capacitor):
|
||||
Update of the power switch of the amplifier (at appears, that the small transistor couldn’t deliver enough current):
|
||||
This Tetris implementation consists of a hardware and a software (running on that hardware).">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="blog">
|
||||
<meta property="article:published_time" content="2024-05-27T00:00:00+00:00">
|
||||
<meta property="article:modified_time" content="2024-05-27T00:00:00+00:00">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Tetris">
|
||||
<meta name="twitter:description" content="Tetris - Hardware and Software Update Amplifier (separate input circuitry per PSG, it appears, that a silent PSG has a DC level on its output which is summarized to the AC output of the working PSG, so two input circuits with individual couping capacitor):
|
||||
Update of the power switch of the amplifier (at appears, that the small transistor couldn’t deliver enough current):
|
||||
This Tetris implementation consists of a hardware and a software (running on that hardware).">
|
||||
|
||||
<meta itemprop="name" content="Tetris">
|
||||
<meta itemprop="description" content="Tetris - Hardware and Software Update Amplifier (separate input circuitry per PSG, it appears, that a silent PSG has a DC level on its output which is summarized to the AC output of the working PSG, so two input circuits with individual couping capacitor):
|
||||
Update of the power switch of the amplifier (at appears, that the small transistor couldn’t deliver enough current):
|
||||
This Tetris implementation consists of a hardware and a software (running on that hardware).">
|
||||
<meta itemprop="datePublished" content="2024-05-27T00:00:00+00:00">
|
||||
<meta itemprop="dateModified" content="2024-05-27T00:00:00+00:00">
|
||||
<meta itemprop="wordCount" content="554"><script type="text/javascript" id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container"><header>
|
||||
<h1>Minimal Setups</h1>
|
||||
</header>
|
||||
<div class="global-menu">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class=""><a href="/keys/">Keys</a></li>
|
||||
<li class=""><a href="/about/">About</a></li></ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="content-container">
|
||||
<main><h1>Tetris</h1>
|
||||
<time>Mon, May 27, 2024</time><h1 id="tetris---hardware-and-software">Tetris - Hardware and Software</h1>
|
||||
<p><img src="/IMG_4936.jpg" alt=""></p>
|
||||
<p>Update Amplifier (separate input circuitry per PSG, it appears, that a silent PSG has a DC level on its output which is summarized to the AC output of the working PSG, so two input circuits with individual couping capacitor):</p>
|
||||
<p><img src="/IMG_4941.jpg" alt=""></p>
|
||||
<p>Update of the power switch of the amplifier (at appears, that the small transistor couldn’t deliver enough current):</p>
|
||||
<p><img src="/IMG_4958.jpeg" alt=""></p>
|
||||
<p>This Tetris implementation consists of a hardware and a software (running on that hardware).</p>
|
||||
<p>The hardware utilizes four MSP430 microcontrollers for 1.) the game play, 2.) the play ground canvas, 3.) the score display and 4.) the sound effects.</p>
|
||||
<p>Further documentation including calculations and drawing can be found in the <code>docs</code> subdirs of the four main subdirs.</p>
|
||||
<h2 id="game-play">Game Play</h2>
|
||||
<p>Code is in subdir <code>game-ctrl</code> (<a href="https://gitea.hottis.de/wn/tetris/src/branch/main/game-ctrl)">https://gitea.hottis.de/wn/tetris/src/branch/main/game-ctrl)</a>.</p>
|
||||
<p>In the firmware for this MSP430 microcontroller the whole game mechanics, reading the buttons, reading and writing the highscore EEPROM and the control of the peripherial microcontrollers are implemented.</p>
|
||||
<p>The buttons are debounced using RC circuitry and Schmitt triggers and connected to GPIOs of the microcontroller.</p>
|
||||
<p>The peripherial microcontrollers and the EEPROM are connected via SPI including individual chip select lines.</p>
|
||||
<p><img src="/game-ctrl.jpg" alt=""></p>
|
||||
<h2 id="play-ground-canvas">Play Ground Canvas</h2>
|
||||
<p>Code is in subdir <code>rgb-driver</code> (<a href="https://gitea.hottis.de/wn/tetris/src/branch/main/rgb-driver)">https://gitea.hottis.de/wn/tetris/src/branch/main/rgb-driver)</a>.</p>
|
||||
<p>The play ground is implemented using a 10 * 20 matrix of PL9823 RGB LEDs which are controlled by another MSP430 microcontroller. The firmware for this microcontroller is implemented for performance and real time requirements in assembly code. Through some discret logic the signals for PL9823 LEDs are generated. Major challenge was to generated the signals according the datasheet of all 200 (including a mini canvas for the stone preview: 212) LEDs in real time without interrupts.</p>
|
||||
<p>The communcation with the game play controller is implemented as a sequences of tuples of LED address (0 to 211) and color code. A single octet of 253 where the LED address is expected is taken as the end-of-telegram mark. Readiness to receive a telegram is signaled to the game play controller via a single line connected to a GPIO of the game play controller.</p>
|
||||
<p><img src="/rgb-driver.jpg" alt=""></p>
|
||||
<p><a href="http://172.16.3.33:1313/blog/rgb-driver/" title="Details are here">Details are here</a></p>
|
||||
<h2 id="score-display">Score Display</h2>
|
||||
<p>Code is in subdir <code>display-driver</code> (<a href="https://gitea.hottis.de/wn/tetris/src/branch/main/display-driver)">https://gitea.hottis.de/wn/tetris/src/branch/main/display-driver)</a>.</p>
|
||||
<p>In the first place, a MAX7221 was meant to be used for connecting a multiple digit seven-segment display. However, it appears, that the MAX7221 requires 3.5V as minimum voltage for the high-level, which caan’t be provided by the MSP430 (which runs on 3.3V) and level-shifters haven’t been around. Thus, the minimal required amount of functionality of the MAX7221 has been implemented in C on an MSP430. Just four digits are supported.</p>
|
||||
<p>Communication with the game play controller is just a 16 bit number to be displayed.</p>
|
||||
<p><img src="/display-driver.jpg" alt=""></p>
|
||||
<h2 id="sound-effects">Sound Effects</h2>
|
||||
<p>Code is in subdir <code>sound-driver</code> (<a href="https://gitea.hottis.de/wn/tetris/src/branch/main/sound-driver)">https://gitea.hottis.de/wn/tetris/src/branch/main/sound-driver)</a>.</p>
|
||||
<p>An MSP430 microcontroller and two mediaeval AY-3-8913 sound chips are deployed. The sound chips themselve run on 5V, their 8-bit-address/data bus is connected to the port 2 (bit 0 to 7) of the microcontroller. The bus control signal <code>_CS</code>, <code>BC1</code> and <code>BDIR</code> are generated in software and provided via GPIOs.</p>
|
||||
<p>An amplifier following the proposal of the AY-3-8913 datasheet is implemented using a LM386 chip. A MOSFET BS108 controlled via a GPIO is use the shortcut the input of the amplifier to ground to mute sound effects.</p>
|
||||
<p>The clock generator proposed by the AY-3-8913 does not work reliably, so an alternative design from “The Art of Electronics” has been used.</p>
|
||||
<p><img src="/sound-driver-1.jpg" alt="">
|
||||
<img src="/sound-driver-2.png" alt="">
|
||||
<img src="/sound-driver-3.jpg" alt="">
|
||||
<img src="/sound-driver-4.jpg" alt=""></p>
|
||||
<footer>
|
||||
</footer>
|
||||
</main>
|
||||
<div class="sidebar">
|
||||
|
||||
<nav class="slide-menu">
|
||||
<ul>
|
||||
<li class=""><a href="http://172.16.3.33:1313/">Home</a></li>
|
||||
|
||||
<li class="parent has-sub-menu"><a href="http://172.16.3.33:1313/blog/">Blogs<span class="mark opened">-</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class="active"><a href="http://172.16.3.33:1313/blog/tetris/">2024-05-27<br/> Tetris </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/rgb-driver/">2024-05-25<br/> PL 9823 meets MSP430 </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver2/">2025-03-13<br/> Stratum 1 NTP Server participating in ntppool.org </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver/">2025-02-11<br/> Just another Stratum 1 Timeserver </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/debouncing/">2018-04-30<br/> Yet Another Debouncing Method </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">2016-12-19<br/> Three Phase Inverter - Second Service </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter/">2016-10-14<br/> Three Phase Inverter </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/theremin/">2013-07-01<br/> Theremin </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/email-childprot/">2013-06-27<br/> Children Protection for Postfix-based EMail-Server </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/articles/">Articles<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/articles/quotes/"> Quotes </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/howtos/">HowTos<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/colors-in-minicom/"> Colors in Minicom </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/engel-des-herrn/"> Engel des Herrn </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/occ-in-nextcloud-pod/"> Execute occ in Nextcloud pod </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-backup/"> Gitlab Backup and Restore </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-change-baseurl/"> Gitlab Change BaseURL in Database </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-upgrades/"> Gitlab Upgrades </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/ca-certificate-in-debian/"> How to add a CA certificate in Debian </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/iscsi-on-linux/"> iSCSI on Linux </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/magnifikat/"> Magnifikat </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/neovim/"> Neovim Setup </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/putty-and-hardware-keys/"> PuTTY and OPENGPG hardware keys </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/resize-hdd-on-running-system/"> Resize HDD on running system </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/snmpwalk-with-numeric-and-text-output/"> snmpwalk with numeric and text output of oid </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/prince-of-persia-1/"> Solution for Prince of Persia 1 </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-footer"></div>
|
||||
</div>
|
||||
|
||||
</div><a href="#" id="backtothetop-fixed" class="backtothetop"
|
||||
data-backtothetop-duration="600"
|
||||
data-backtothetop-easing="easeOutQuart"
|
||||
data-backtothetop-fixed-fadeIn="1000"
|
||||
data-backtothetop-fixed-fadeOut="1000"
|
||||
data-backtothetop-fixed-bottom="10"
|
||||
data-backtothetop-fixed-right="20">
|
||||
<span class="fa-layers fa-fw">
|
||||
<i class="fas fa-circle"></i>
|
||||
<i class="fas fa-arrow-circle-up"></i>
|
||||
</span></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
169
attic/public/blog/theremin/index.html
Normal file
169
attic/public/blog/theremin/index.html
Normal file
@ -0,0 +1,169 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>Theremin - Minimal Setups</title>
|
||||
<meta name="generator" content="Hugo 0.140.2">
|
||||
<link href="http://172.16.3.33:1313//index.xml" rel="alternate" type="application/rss+xml">
|
||||
<link rel="canonical" href="http://172.16.3.33:1313/blog/theremin/">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/theme.min.css">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/chroma.min.css">
|
||||
<script defer src="http://172.16.3.33:1313//js/fontawesome6/all.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery.easing@1.4.1/jquery.easing.min.js" integrity="sha256-H3cjtrm/ztDeuhCN9I4yh4iN2Ybx/y1RM7rMmAesA0k=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js" integrity="sha256-4XodgW4TwIJuDtf+v6vDJ39FVxI0veC/kSCCmnFp7ck=" crossorigin="anonymous"></script>
|
||||
<script src="http://172.16.3.33:1313/js/bundle.js"></script><style>
|
||||
:root {}
|
||||
</style>
|
||||
<meta property="og:url" content="http://172.16.3.33:1313/blog/theremin/">
|
||||
<meta property="og:site_name" content="Minimal Setups">
|
||||
<meta property="og:title" content="Theremin">
|
||||
<meta property="og:description" content="A Theremin is a rather old electronic music instrument, invented in 1928. It is played by approaching hands to two antennas, without touching them. One antenna is used to manipulate the frequeny of the tone, the other one to manipulate the volume.
|
||||
This is just another Theremin. Only basic structure of the circuit was taken from many other published Theremin circuits.
|
||||
Completely new (or at least not found during my Theremin googling) is the digital zero-calibration.">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="blog">
|
||||
<meta property="article:published_time" content="2013-07-01T00:00:00+00:00">
|
||||
<meta property="article:modified_time" content="2013-07-01T00:00:00+00:00">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Theremin">
|
||||
<meta name="twitter:description" content="A Theremin is a rather old electronic music instrument, invented in 1928. It is played by approaching hands to two antennas, without touching them. One antenna is used to manipulate the frequeny of the tone, the other one to manipulate the volume.
|
||||
This is just another Theremin. Only basic structure of the circuit was taken from many other published Theremin circuits.
|
||||
Completely new (or at least not found during my Theremin googling) is the digital zero-calibration.">
|
||||
|
||||
<meta itemprop="name" content="Theremin">
|
||||
<meta itemprop="description" content="A Theremin is a rather old electronic music instrument, invented in 1928. It is played by approaching hands to two antennas, without touching them. One antenna is used to manipulate the frequeny of the tone, the other one to manipulate the volume.
|
||||
This is just another Theremin. Only basic structure of the circuit was taken from many other published Theremin circuits.
|
||||
Completely new (or at least not found during my Theremin googling) is the digital zero-calibration.">
|
||||
<meta itemprop="datePublished" content="2013-07-01T00:00:00+00:00">
|
||||
<meta itemprop="dateModified" content="2013-07-01T00:00:00+00:00">
|
||||
<meta itemprop="wordCount" content="706"><script type="text/javascript" id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container"><header>
|
||||
<h1>Minimal Setups</h1>
|
||||
</header>
|
||||
<div class="global-menu">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class=""><a href="/keys/">Keys</a></li>
|
||||
<li class=""><a href="/about/">About</a></li></ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="content-container">
|
||||
<main><h1>Theremin</h1>
|
||||
<time>Mon, Jul 1, 2013</time><p>A <a href="https://en.wikipedia.org/wiki/Theremin">Theremin</a> is a rather old electronic music instrument, invented in 1928. It is played by approaching hands to two antennas, without touching them. One antenna is used to manipulate the frequeny of the tone, the other one to manipulate the volume.</p>
|
||||
<p><img src="/foto-am-30-06-13-um-20-021.jpg" alt=""></p>
|
||||
<p>This is just another Theremin. Only basic structure of the circuit was taken from many other published Theremin circuits.</p>
|
||||
<p><img src="/scan_005006-1024x654.jpg" alt=""></p>
|
||||
<p>Completely new (or at least not found during my Theremin googling) is the digital zero-calibration.</p>
|
||||
<p>The both left-hand-side oscillators together with the mixer+filter block provide the signal to control the volume, the right-hand-side oscillators and mixer+filter block provide the signal to control the frequency.</p>
|
||||
<p>Each of these both couples consists of two oscillators and a mixer+filter block. Both oscillators have to swing on exactly the same frequency, in this case of about 1.3MHz. While the exact frequency does not matter, it is significant that both oscillators have the same frequency. The signals of both oscillators will be mixed, which means, multiplied.</p>
|
||||
<p>$$\sin(\omega_0 t) sin(\omega t)$$</p>
|
||||
<p>Here $\omega$ is the frequncy of one of the oscillators while $\omega_0$ is the frequency of the other one.</p>
|
||||
<p>This term can be modified using the addition rule for trigonometric functions into</p>
|
||||
<p>$$\frac{\cos((\omega_0-\omega)t)-\cos((\omega_0+\omega)t)}{2}$$</p>
|
||||
<p>Due to this transformation, two signals, one with the sum and one with the difference of both input signal frequencies, are accumulated.
|
||||
When both frequencies are exactly the same, one part of the sum appears as a DC offset, while the other part is the doubled frequency.
|
||||
If one oscillator is de-tuned by only a few Hz’<code>s, one part are this few Hz'</code>s (a very low, hearable frequency) and the other part is still (roughly) the doubled frequency (a high frequency). The high frequency part can now be suppressed using a lowpass-filter.
|
||||
Multiplication of two signals can be done using an analog four quadrant multiplier, like the AD633. So, this is the schematic of the mixer+filter block:</p>
|
||||
<p><img src="/scan_005006_5-1024x717.jpg" alt=""></p>
|
||||
<p>The output signal of this block is the difference of the detuning of the one oscillator.</p>
|
||||
<p>Detuning of the oscillator will be achieved by approaching the hand to the antenna of the oscillator.</p>
|
||||
<p><img src="/scan_005006_3.jpg" alt=""></p>
|
||||
<p>The antenna acts as a kind of a capacitive sensor and by approaching the hand a very small amount of capacity is added into the LC resonator.</p>
|
||||
<p>The other oscillator is a fix-frequency oscillator which can be tuned to swing on the same frequency as the first oscillator in a not detuned state.</p>
|
||||
<p><img src="/scan_005006_4.jpg" alt=""></p>
|
||||
<p>This tuning is achieved by biasing the two varactor diodes.</p>
|
||||
<p>Here is automated tuning circuit steps in:</p>
|
||||
<p><img src="scan_005006_6.jpg" alt=""></p>
|
||||
<p>The low-frequency output signal of the mixer+filter block is provided through a 2-to-1 multiplexer (the four NAND-gates) into a microcontroller. The microcontroller measures the frequency and as long as it is above a frequency $\epsilon$ of say 10Hz, the bias voltage $U_{tune}$ is increased.</p>
|
||||
<p>These both oscillators with mixer+filter and one channel of the zero-calibration appear twice in the whole circuit, one for frequency manipulation and one for volume manipulation.</p>
|
||||
<p>The low-frequency, hearable, signal and the volume-control signal are brought together in the volume-control circuit</p>
|
||||
<p><img src="/scan_005006_2-1024x553.jpg" alt=""></p>
|
||||
<p>Here, the low-frequency signal $U_{Lf1}$ is passed through a high-pass filter. The high-pass filter is calculated that way that the whole detunable frequency range comes onto the ramp of the filter. So, the not detuned output signal of the mixer+filter is a DC signal, which is suppressed completely by the high-pass filter (beginning of the ramp) and the maximum detuned output signal of about 2kHz matched roughly to the end of the ramp. This filtered signal is rectified and only the negative half-wave of the signal passes the diode. This half-wave signal is sieved by the larger capacitor to get a DC signal between 0 and the maximum amplitude which passed the fiter. This negative DC signal is fed into the FET, which is configured as a voltage controlled resistor. This voltage controlled resistor and the fix resistor (5k6) are building a voltage controlled voltage divider. The hearable frequency signal $U_{Lf2}$ is fed into this voltage divider and passed to an amplifier.</p>
|
||||
<p>The output signal of this block in turn is the volume-controlled and frequency-controlled signal which is the output signal of this Theremin. It is passed into a power-amplifier and into a speaker - done.</p>
|
||||
<p><a href="https://www.youtube.com/watch?v=5US8LY_FbQ4&w=420&h=315">Calibrating the Theremin</a></p>
|
||||
<p><a href="https://www.youtube.com/watch?v=lDld71HI66o&w=420&h=315">Playing the Theremin</a></p>
|
||||
<footer>
|
||||
</footer>
|
||||
</main>
|
||||
<div class="sidebar">
|
||||
|
||||
<nav class="slide-menu">
|
||||
<ul>
|
||||
<li class=""><a href="http://172.16.3.33:1313/">Home</a></li>
|
||||
|
||||
<li class="parent has-sub-menu"><a href="http://172.16.3.33:1313/blog/">Blogs<span class="mark opened">-</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/tetris/">2024-05-27<br/> Tetris </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/rgb-driver/">2024-05-25<br/> PL 9823 meets MSP430 </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver2/">2025-03-13<br/> Stratum 1 NTP Server participating in ntppool.org </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver/">2025-02-11<br/> Just another Stratum 1 Timeserver </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/debouncing/">2018-04-30<br/> Yet Another Debouncing Method </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">2016-12-19<br/> Three Phase Inverter - Second Service </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter/">2016-10-14<br/> Three Phase Inverter </a></li>
|
||||
<li class="active"><a href="http://172.16.3.33:1313/blog/theremin/">2013-07-01<br/> Theremin </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/email-childprot/">2013-06-27<br/> Children Protection for Postfix-based EMail-Server </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/articles/">Articles<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/articles/quotes/"> Quotes </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/howtos/">HowTos<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/colors-in-minicom/"> Colors in Minicom </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/engel-des-herrn/"> Engel des Herrn </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/occ-in-nextcloud-pod/"> Execute occ in Nextcloud pod </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-backup/"> Gitlab Backup and Restore </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-change-baseurl/"> Gitlab Change BaseURL in Database </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-upgrades/"> Gitlab Upgrades </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/ca-certificate-in-debian/"> How to add a CA certificate in Debian </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/iscsi-on-linux/"> iSCSI on Linux </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/magnifikat/"> Magnifikat </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/neovim/"> Neovim Setup </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/putty-and-hardware-keys/"> PuTTY and OPENGPG hardware keys </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/resize-hdd-on-running-system/"> Resize HDD on running system </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/snmpwalk-with-numeric-and-text-output/"> snmpwalk with numeric and text output of oid </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/prince-of-persia-1/"> Solution for Prince of Persia 1 </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-footer"></div>
|
||||
</div>
|
||||
|
||||
</div><a href="#" id="backtothetop-fixed" class="backtothetop"
|
||||
data-backtothetop-duration="600"
|
||||
data-backtothetop-easing="easeOutQuart"
|
||||
data-backtothetop-fixed-fadeIn="1000"
|
||||
data-backtothetop-fixed-fadeOut="1000"
|
||||
data-backtothetop-fixed-bottom="10"
|
||||
data-backtothetop-fixed-right="20">
|
||||
<span class="fa-layers fa-fw">
|
||||
<i class="fas fa-circle"></i>
|
||||
<i class="fas fa-arrow-circle-up"></i>
|
||||
</span></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
143
attic/public/blog/three-phase-inverter-ng/index.html
Normal file
143
attic/public/blog/three-phase-inverter-ng/index.html
Normal file
@ -0,0 +1,143 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>Three Phase Inverter - Second Service - Minimal Setups</title>
|
||||
<meta name="generator" content="Hugo 0.140.2">
|
||||
<link href="http://172.16.3.33:1313//index.xml" rel="alternate" type="application/rss+xml">
|
||||
<link rel="canonical" href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/theme.min.css">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/chroma.min.css">
|
||||
<script defer src="http://172.16.3.33:1313//js/fontawesome6/all.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery.easing@1.4.1/jquery.easing.min.js" integrity="sha256-H3cjtrm/ztDeuhCN9I4yh4iN2Ybx/y1RM7rMmAesA0k=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js" integrity="sha256-4XodgW4TwIJuDtf+v6vDJ39FVxI0veC/kSCCmnFp7ck=" crossorigin="anonymous"></script>
|
||||
<script src="http://172.16.3.33:1313/js/bundle.js"></script><style>
|
||||
:root {}
|
||||
</style>
|
||||
<meta property="og:url" content="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">
|
||||
<meta property="og:site_name" content="Minimal Setups">
|
||||
<meta property="og:title" content="Three Phase Inverter - Second Service">
|
||||
<meta property="og:description" content="I wrote in October about my first try to build a simple three phase inverter, see here. In the first try I used four MSP430 microcontroller, one for the PWM of each phase and one to coordinate the phase shift of the three phases.
|
||||
In this experiment I put everything on one STM32 microcontroller. Here I used the DMA feature to feed data into the PWM counter and I calculated the sine values at start-up time on the microcontroller. Additionally I put in the driver for a CAN interface, however, it is not yet supported in the firmware.">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="blog">
|
||||
<meta property="article:published_time" content="2016-12-19T00:00:00+00:00">
|
||||
<meta property="article:modified_time" content="2016-12-19T00:00:00+00:00">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Three Phase Inverter - Second Service">
|
||||
<meta name="twitter:description" content="I wrote in October about my first try to build a simple three phase inverter, see here. In the first try I used four MSP430 microcontroller, one for the PWM of each phase and one to coordinate the phase shift of the three phases.
|
||||
In this experiment I put everything on one STM32 microcontroller. Here I used the DMA feature to feed data into the PWM counter and I calculated the sine values at start-up time on the microcontroller. Additionally I put in the driver for a CAN interface, however, it is not yet supported in the firmware.">
|
||||
|
||||
<meta itemprop="name" content="Three Phase Inverter - Second Service">
|
||||
<meta itemprop="description" content="I wrote in October about my first try to build a simple three phase inverter, see here. In the first try I used four MSP430 microcontroller, one for the PWM of each phase and one to coordinate the phase shift of the three phases.
|
||||
In this experiment I put everything on one STM32 microcontroller. Here I used the DMA feature to feed data into the PWM counter and I calculated the sine values at start-up time on the microcontroller. Additionally I put in the driver for a CAN interface, however, it is not yet supported in the firmware.">
|
||||
<meta itemprop="datePublished" content="2016-12-19T00:00:00+00:00">
|
||||
<meta itemprop="dateModified" content="2016-12-19T00:00:00+00:00">
|
||||
<meta itemprop="wordCount" content="208"><script type="text/javascript" id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container"><header>
|
||||
<h1>Minimal Setups</h1>
|
||||
</header>
|
||||
<div class="global-menu">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class=""><a href="/keys/">Keys</a></li>
|
||||
<li class=""><a href="/about/">About</a></li></ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="content-container">
|
||||
<main><h1>Three Phase Inverter - Second Service</h1>
|
||||
<time>Mon, Dec 19, 2016</time><p>I wrote in October about my first try to build a simple three phase inverter, see <a href="http://172.16.3.33:1313/blog/three-phase-inverter/">here</a>. In the first try I used four MSP430 microcontroller, one for the PWM of each phase and one to coordinate the phase shift of the three phases.</p>
|
||||
<p>In this experiment I put everything on one STM32 microcontroller. Here I used the DMA feature to feed data into the PWM counter and I calculated the sine values at start-up time on the microcontroller. Additionally I put in the driver for a CAN interface, however, it is not yet supported in the firmware.</p>
|
||||
<p><img src="/img_0140.jpg" alt=""></p>
|
||||
<p>From top to bottom you see the CAN driver, the STM32 board, opto coupler to separate logic and power part and then from right to left in the bottom half the low-side/high-side MOSFET drivers and the MOSFETs.</p>
|
||||
<p><img src="/img_0144.jpg" alt=""></p>
|
||||
<p>The power supply consists of a traditional transformer and (top right) the rectifier and capacitors for the power part, together with the 12V regulator for the drivers and (top left) the regulators for 3.3V and 5V for the logic part.</p>
|
||||
<p><img src="/img_0146.jpg" alt=""></p>
|
||||
<p>The motor is the same as in the earlier experiment - I don’t have too much of them. And everything is put onto one board:</p>
|
||||
<p><img src="/img_0143-e1482141676335.jpg" alt=""></p>
|
||||
<p>The code for this experiment is here: <a href="https://gitea.hottis.de/wn/inverter2">https://gitea.hottis.de/wn/inverter2</a>.</p>
|
||||
<footer>
|
||||
</footer>
|
||||
</main>
|
||||
<div class="sidebar">
|
||||
|
||||
<nav class="slide-menu">
|
||||
<ul>
|
||||
<li class=""><a href="http://172.16.3.33:1313/">Home</a></li>
|
||||
|
||||
<li class="parent has-sub-menu"><a href="http://172.16.3.33:1313/blog/">Blogs<span class="mark opened">-</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/tetris/">2024-05-27<br/> Tetris </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/rgb-driver/">2024-05-25<br/> PL 9823 meets MSP430 </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver2/">2025-03-13<br/> Stratum 1 NTP Server participating in ntppool.org </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver/">2025-02-11<br/> Just another Stratum 1 Timeserver </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/debouncing/">2018-04-30<br/> Yet Another Debouncing Method </a></li>
|
||||
<li class="active"><a href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">2016-12-19<br/> Three Phase Inverter - Second Service </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter/">2016-10-14<br/> Three Phase Inverter </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/theremin/">2013-07-01<br/> Theremin </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/email-childprot/">2013-06-27<br/> Children Protection for Postfix-based EMail-Server </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/articles/">Articles<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/articles/quotes/"> Quotes </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/howtos/">HowTos<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/colors-in-minicom/"> Colors in Minicom </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/engel-des-herrn/"> Engel des Herrn </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/occ-in-nextcloud-pod/"> Execute occ in Nextcloud pod </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-backup/"> Gitlab Backup and Restore </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-change-baseurl/"> Gitlab Change BaseURL in Database </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-upgrades/"> Gitlab Upgrades </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/ca-certificate-in-debian/"> How to add a CA certificate in Debian </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/iscsi-on-linux/"> iSCSI on Linux </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/magnifikat/"> Magnifikat </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/neovim/"> Neovim Setup </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/putty-and-hardware-keys/"> PuTTY and OPENGPG hardware keys </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/resize-hdd-on-running-system/"> Resize HDD on running system </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/snmpwalk-with-numeric-and-text-output/"> snmpwalk with numeric and text output of oid </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/prince-of-persia-1/"> Solution for Prince of Persia 1 </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-footer"></div>
|
||||
</div>
|
||||
|
||||
</div><a href="#" id="backtothetop-fixed" class="backtothetop"
|
||||
data-backtothetop-duration="600"
|
||||
data-backtothetop-easing="easeOutQuart"
|
||||
data-backtothetop-fixed-fadeIn="1000"
|
||||
data-backtothetop-fixed-fadeOut="1000"
|
||||
data-backtothetop-fixed-bottom="10"
|
||||
data-backtothetop-fixed-right="20">
|
||||
<span class="fa-layers fa-fw">
|
||||
<i class="fas fa-circle"></i>
|
||||
<i class="fas fa-arrow-circle-up"></i>
|
||||
</span></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
152
attic/public/blog/three-phase-inverter/index.html
Normal file
152
attic/public/blog/three-phase-inverter/index.html
Normal file
@ -0,0 +1,152 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>Three Phase Inverter - Minimal Setups</title>
|
||||
<meta name="generator" content="Hugo 0.140.2">
|
||||
<link href="http://172.16.3.33:1313//index.xml" rel="alternate" type="application/rss+xml">
|
||||
<link rel="canonical" href="http://172.16.3.33:1313/blog/three-phase-inverter/">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/theme.min.css">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/chroma.min.css">
|
||||
<script defer src="http://172.16.3.33:1313//js/fontawesome6/all.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery.easing@1.4.1/jquery.easing.min.js" integrity="sha256-H3cjtrm/ztDeuhCN9I4yh4iN2Ybx/y1RM7rMmAesA0k=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js" integrity="sha256-4XodgW4TwIJuDtf+v6vDJ39FVxI0veC/kSCCmnFp7ck=" crossorigin="anonymous"></script>
|
||||
<script src="http://172.16.3.33:1313/js/bundle.js"></script><style>
|
||||
:root {}
|
||||
</style>
|
||||
<meta property="og:url" content="http://172.16.3.33:1313/blog/three-phase-inverter/">
|
||||
<meta property="og:site_name" content="Minimal Setups">
|
||||
<meta property="og:title" content="Three Phase Inverter">
|
||||
<meta property="og:description" content="Already when I was still in school, about 30 years ago, I was curious to make an inverter using some MOSFETs. I actually was able to build a simple one phase inverter with rectangular signal shape (I used a NE555). Using this thing I drove a transformer to light a blub. However, all of these inverters I built passed by in fire.
|
||||
Now, I tried it again, not longer using MOSFETs but IGBTs with free-wheeling diode. Moreover, I used some microcontrollers and sine values to feed a PWM to get a sine-alike signal shape. And this time I was able with three phases to drive an asynchronous motor.">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="blog">
|
||||
<meta property="article:published_time" content="2016-10-14T00:00:00+00:00">
|
||||
<meta property="article:modified_time" content="2016-10-14T00:00:00+00:00">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Three Phase Inverter">
|
||||
<meta name="twitter:description" content="Already when I was still in school, about 30 years ago, I was curious to make an inverter using some MOSFETs. I actually was able to build a simple one phase inverter with rectangular signal shape (I used a NE555). Using this thing I drove a transformer to light a blub. However, all of these inverters I built passed by in fire.
|
||||
Now, I tried it again, not longer using MOSFETs but IGBTs with free-wheeling diode. Moreover, I used some microcontrollers and sine values to feed a PWM to get a sine-alike signal shape. And this time I was able with three phases to drive an asynchronous motor.">
|
||||
|
||||
<meta itemprop="name" content="Three Phase Inverter">
|
||||
<meta itemprop="description" content="Already when I was still in school, about 30 years ago, I was curious to make an inverter using some MOSFETs. I actually was able to build a simple one phase inverter with rectangular signal shape (I used a NE555). Using this thing I drove a transformer to light a blub. However, all of these inverters I built passed by in fire.
|
||||
Now, I tried it again, not longer using MOSFETs but IGBTs with free-wheeling diode. Moreover, I used some microcontrollers and sine values to feed a PWM to get a sine-alike signal shape. And this time I was able with three phases to drive an asynchronous motor.">
|
||||
<meta itemprop="datePublished" content="2016-10-14T00:00:00+00:00">
|
||||
<meta itemprop="dateModified" content="2016-10-14T00:00:00+00:00">
|
||||
<meta itemprop="wordCount" content="254"><script type="text/javascript" id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container"><header>
|
||||
<h1>Minimal Setups</h1>
|
||||
</header>
|
||||
<div class="global-menu">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class=""><a href="/keys/">Keys</a></li>
|
||||
<li class=""><a href="/about/">About</a></li></ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="content-container">
|
||||
<main><h1>Three Phase Inverter</h1>
|
||||
<time>Fri, Oct 14, 2016</time><p>Already when I was still in school, about 30 years ago, I was curious to make an inverter using some MOSFETs. I actually was able to build a simple one phase inverter with rectangular signal shape (I used a NE555). Using this thing I drove a transformer to light a blub. However, all of these inverters I built passed by in fire.</p>
|
||||
<p>Now, I tried it again, not longer using MOSFETs but IGBTs with free-wheeling diode. Moreover, I used some microcontrollers and sine values to feed a PWM to get a sine-alike signal shape. And this time I was able with three phases to drive an asynchronous motor.</p>
|
||||
<p><img src="/img_0053.jpg" alt=""></p>
|
||||
<p>The signal shaping is done with four MSP430 controllers, three as PWMs to drive the bridge and one to coordinate and control the three PWMs. The PWM controller is decoupled from the IGBT driver (IR2184) using optic couplers.</p>
|
||||
<p><img src="/img_0054-e1476437702547.jpg" alt=""></p>
|
||||
<p>The bridge is a three phase IGBT module is a 6MB120F-060 I got for a few euros at ebay.</p>
|
||||
<p><img src="img_0055-e1476437685461.jpg" alt=""></p>
|
||||
<p>To avoid high voltages in my setup I got a 24V async motor, also from ebay.</p>
|
||||
<p><img src="/img_0056.jpg" alt=""></p>
|
||||
<p>The PWMs generate the signal from a sine table generated using Excel. Those I got this signal:</p>
|
||||
<p><img src="/inverter0_2016-09-23-4.png" alt=""></p>
|
||||
<p>The main task of the coordinator is the start the PWMs with a phase shift of 120° (digital line 1, 2 and 3):</p>
|
||||
<p><img src="/2016-10-13_1.png" alt=""></p>
|
||||
<p>Currently the PWMs start with random polarity. The interesting signals are the digital lines 4, 5 and 6.</p>
|
||||
<p>Sometimes the motor runs:</p>
|
||||
<p><img src="/2016-10-13_works.png" alt=""></p>
|
||||
<p>But sometimes not:</p>
|
||||
<p><img src="/2016-10-13_works_not.png" alt=""></p>
|
||||
<p>The firmware is available here <a href="https://gitea.hottis.de/wn/inverter0">https://gitea.hottis.de/wn/inverter0</a> and <a href="https://gitea.hottis.de/wn/inverter0ctrl">https://gitea.hottis.de/wn/inverter0ctrl</a>.</p>
|
||||
<footer>
|
||||
</footer>
|
||||
</main>
|
||||
<div class="sidebar">
|
||||
|
||||
<nav class="slide-menu">
|
||||
<ul>
|
||||
<li class=""><a href="http://172.16.3.33:1313/">Home</a></li>
|
||||
|
||||
<li class="parent has-sub-menu"><a href="http://172.16.3.33:1313/blog/">Blogs<span class="mark opened">-</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/tetris/">2024-05-27<br/> Tetris </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/rgb-driver/">2024-05-25<br/> PL 9823 meets MSP430 </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver2/">2025-03-13<br/> Stratum 1 NTP Server participating in ntppool.org </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver/">2025-02-11<br/> Just another Stratum 1 Timeserver </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/debouncing/">2018-04-30<br/> Yet Another Debouncing Method </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">2016-12-19<br/> Three Phase Inverter - Second Service </a></li>
|
||||
<li class="active"><a href="http://172.16.3.33:1313/blog/three-phase-inverter/">2016-10-14<br/> Three Phase Inverter </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/theremin/">2013-07-01<br/> Theremin </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/email-childprot/">2013-06-27<br/> Children Protection for Postfix-based EMail-Server </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/articles/">Articles<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/articles/quotes/"> Quotes </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/howtos/">HowTos<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/colors-in-minicom/"> Colors in Minicom </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/engel-des-herrn/"> Engel des Herrn </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/occ-in-nextcloud-pod/"> Execute occ in Nextcloud pod </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-backup/"> Gitlab Backup and Restore </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-change-baseurl/"> Gitlab Change BaseURL in Database </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-upgrades/"> Gitlab Upgrades </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/ca-certificate-in-debian/"> How to add a CA certificate in Debian </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/iscsi-on-linux/"> iSCSI on Linux </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/magnifikat/"> Magnifikat </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/neovim/"> Neovim Setup </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/putty-and-hardware-keys/"> PuTTY and OPENGPG hardware keys </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/resize-hdd-on-running-system/"> Resize HDD on running system </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/snmpwalk-with-numeric-and-text-output/"> snmpwalk with numeric and text output of oid </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/prince-of-persia-1/"> Solution for Prince of Persia 1 </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-footer"></div>
|
||||
</div>
|
||||
|
||||
</div><a href="#" id="backtothetop-fixed" class="backtothetop"
|
||||
data-backtothetop-duration="600"
|
||||
data-backtothetop-easing="easeOutQuart"
|
||||
data-backtothetop-fixed-fadeIn="1000"
|
||||
data-backtothetop-fixed-fadeOut="1000"
|
||||
data-backtothetop-fixed-bottom="10"
|
||||
data-backtothetop-fixed-right="20">
|
||||
<span class="fa-layers fa-fw">
|
||||
<i class="fas fa-circle"></i>
|
||||
<i class="fas fa-arrow-circle-up"></i>
|
||||
</span></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
235
attic/public/blog/timeserver/index.html
Normal file
235
attic/public/blog/timeserver/index.html
Normal file
@ -0,0 +1,235 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>Just another Stratum 1 Timeserver - Minimal Setups</title>
|
||||
<meta name="generator" content="Hugo 0.140.2">
|
||||
<link href="http://172.16.3.33:1313//index.xml" rel="alternate" type="application/rss+xml">
|
||||
<link rel="canonical" href="http://172.16.3.33:1313/blog/timeserver/">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/theme.min.css">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/chroma.min.css">
|
||||
<script defer src="http://172.16.3.33:1313//js/fontawesome6/all.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery.easing@1.4.1/jquery.easing.min.js" integrity="sha256-H3cjtrm/ztDeuhCN9I4yh4iN2Ybx/y1RM7rMmAesA0k=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js" integrity="sha256-4XodgW4TwIJuDtf+v6vDJ39FVxI0veC/kSCCmnFp7ck=" crossorigin="anonymous"></script>
|
||||
<script src="http://172.16.3.33:1313/js/bundle.js"></script><style>
|
||||
:root {}
|
||||
</style>
|
||||
<meta property="og:url" content="http://172.16.3.33:1313/blog/timeserver/">
|
||||
<meta property="og:site_name" content="Minimal Setups">
|
||||
<meta property="og:title" content="Just another Stratum 1 Timeserver">
|
||||
<meta property="og:description" content="This server utilizes ntpsec on Debian on a BeagleBone Black with a UBlox GPS module.
|
||||
It has been joined the NTP pool, the statistics are available at https://www.ntppool.org/scores/93.241.86.156.
|
||||
Some additional statistics graphs for the server are available at https://numbers.hottis.de/ntpserver.
|
||||
Preparation of the BeagleBone The GPS module is connected via serial line to the UART of the BB.
|
||||
The additional connection of the PPS output with the PPS device of the Linux running on the BB via a GPIO must be prepared. A device tree overlay must be created and compiled:">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="blog">
|
||||
<meta property="article:published_time" content="2025-02-11T00:00:00+00:00">
|
||||
<meta property="article:modified_time" content="2025-02-11T00:00:00+00:00">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Just another Stratum 1 Timeserver">
|
||||
<meta name="twitter:description" content="This server utilizes ntpsec on Debian on a BeagleBone Black with a UBlox GPS module.
|
||||
It has been joined the NTP pool, the statistics are available at https://www.ntppool.org/scores/93.241.86.156.
|
||||
Some additional statistics graphs for the server are available at https://numbers.hottis.de/ntpserver.
|
||||
Preparation of the BeagleBone The GPS module is connected via serial line to the UART of the BB.
|
||||
The additional connection of the PPS output with the PPS device of the Linux running on the BB via a GPIO must be prepared. A device tree overlay must be created and compiled:">
|
||||
|
||||
<meta itemprop="name" content="Just another Stratum 1 Timeserver">
|
||||
<meta itemprop="description" content="This server utilizes ntpsec on Debian on a BeagleBone Black with a UBlox GPS module.
|
||||
It has been joined the NTP pool, the statistics are available at https://www.ntppool.org/scores/93.241.86.156.
|
||||
Some additional statistics graphs for the server are available at https://numbers.hottis.de/ntpserver.
|
||||
Preparation of the BeagleBone The GPS module is connected via serial line to the UART of the BB.
|
||||
The additional connection of the PPS output with the PPS device of the Linux running on the BB via a GPIO must be prepared. A device tree overlay must be created and compiled:">
|
||||
<meta itemprop="datePublished" content="2025-02-11T00:00:00+00:00">
|
||||
<meta itemprop="dateModified" content="2025-02-11T00:00:00+00:00">
|
||||
<meta itemprop="wordCount" content="467"><script type="text/javascript" id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container"><header>
|
||||
<h1>Minimal Setups</h1>
|
||||
</header>
|
||||
<div class="global-menu">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class=""><a href="/keys/">Keys</a></li>
|
||||
<li class=""><a href="/about/">About</a></li></ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="content-container">
|
||||
<main><h1>Just another Stratum 1 Timeserver</h1>
|
||||
<time>Tue, Feb 11, 2025</time><p><img src="/IMG_6045.jpg" alt=""></p>
|
||||
<p>This server utilizes <code>ntpsec</code> on Debian on a BeagleBone Black with a UBlox GPS module.</p>
|
||||
<p>It has been joined the NTP pool, the statistics are available at <a href="https://www.ntppool.org/scores/93.241.86.156">https://www.ntppool.org/scores/93.241.86.156</a>.</p>
|
||||
<p>Some additional statistics graphs for the server are available at <a href="https://numbers.hottis.de/ntpserver">https://numbers.hottis.de/ntpserver</a>.</p>
|
||||
<h2 id="preparation-of-the-beaglebone">Preparation of the BeagleBone</h2>
|
||||
<p>The GPS module is connected via serial line to the UART of the BB.</p>
|
||||
<p>The additional connection of the PPS output with the PPS device of the Linux running on the BB via a GPIO must be prepared. A device tree overlay must be created and compiled:</p>
|
||||
<pre tabindex="0"><code>/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/{
|
||||
compatible = "ti,beaglebone", "ti,beaglebone-black";
|
||||
part_number = "WN-PPS";
|
||||
version = "00A0";
|
||||
|
||||
exclusive-use =
|
||||
"P8.7",
|
||||
"gpio2_2";
|
||||
|
||||
fragment@0 {
|
||||
target = <&am33xx_pinmux>;
|
||||
__overlay__ {
|
||||
bs_pinmode_P8_7_0x27: pinmux_bs_pinmode_P8_7_0x27 {
|
||||
pinctrl-single,pins = <0x090 0x27>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fragment@1 {
|
||||
target = <&ocp>;
|
||||
__overlay__ {
|
||||
bs_pinmode_P8_7_0x27_pinmux {
|
||||
compatible = "pps-gpio";
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&bs_pinmode_P8_7_0x27>;
|
||||
gpios = <&gpio2 2 0>;
|
||||
assert-rising-edge;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
</code></pre><p>This file shall be compiled using</p>
|
||||
<pre tabindex="0"><code>dtc -O dtb -o WN-PPS-00A0.dtbo -b 0 -@ WN-PPS-00A0.dts
|
||||
</code></pre><p>The binary dtbo file then copied into <code>/lib/firmware</code> and mentioned in the <code>/boot/uEnv.txt</code>:</p>
|
||||
<pre tabindex="0"><code>uboot_overlay_addr0=/lib/firmware/WN-PPS-00A0.dtbo
|
||||
</code></pre><p>After a reboot the device file <code>/dev/pps0</code> should be available and using <code>ppstest /dev/pps0</code> you can test the connection:</p>
|
||||
<pre tabindex="0"><code>root@david:/boot# ppstest /dev/pps0
|
||||
trying PPS source "/dev/pps0"
|
||||
found PPS source "/dev/pps0"
|
||||
ok, found 1 source(s), now start fetching data...
|
||||
source 0 - assert 1739442756.999984966, sequence: 306598 - clear 0.000000000, sequence: 0
|
||||
source 0 - assert 1739442757.999978472, sequence: 306599 - clear 0.000000000, sequence: 0
|
||||
source 0 - assert 1739442758.999976057, sequence: 306600 - clear 0.000000000, sequence: 0
|
||||
^C
|
||||
root@david:/boot#
|
||||
</code></pre><h2 id="configuration-of-the-ntpsec-daemon">Configuration of the ntpsec daemon</h2>
|
||||
<pre tabindex="0"><code>interface listen all
|
||||
logconfig +all
|
||||
logfile /var/log/ntp.log
|
||||
|
||||
statsdir /var/log/ntpsec/
|
||||
statistics loopstats peerstats clockstats protostats sysstats rawstats
|
||||
filegen loopstats file loopstats type day disable
|
||||
filegen peerstats file peerstats type day enable
|
||||
filegen clockstats file clockstats type day enable
|
||||
filegen protostats file protostats type day enable
|
||||
filegen sysstats file sysstats type day enable
|
||||
filegen rawstats file rawstats type day disable
|
||||
|
||||
driftfile /var/lib/ntpsec/ntp.drift
|
||||
leapfile /usr/share/zoneinfo/leap-seconds.list
|
||||
|
||||
tos maxclock 11
|
||||
tos minclock 4 minsane 3
|
||||
|
||||
refclock nmea unit 0 prefer mode 0x10 minpoll 4 maxpoll 4 path /dev/ttyO4 ppspath /dev/pps0 baud 9600 flag1 1 refid BBgp
|
||||
# refclock shm unit 0 refid BBg minpoll 4 maxpoll 4 time1 0.1555
|
||||
# refclock shm unit 2 refid BBp minpoll 4 maxpoll 4 prefer
|
||||
# refclock pps unit 0 prefer refid BBp ppspath /dev/pps0 minpoll 4 maxpoll 4
|
||||
# refclock gpsd unit 0 prefer refid BBgp mode 1 minpoll 4 maxpoll 4
|
||||
|
||||
server ntps1-1.uni-erlangen.de
|
||||
server ntps1-0.cs.tu-berlin.de
|
||||
server ptbtime1.ptb.de
|
||||
server rustime01.rus.uni-stuttgart.de
|
||||
server ntp1.sda.t-online.de
|
||||
server ntps1.gwdg.de
|
||||
|
||||
restrict default kod nomodify nopeer noquery limited notrap
|
||||
restrict 127.0.0.1
|
||||
restrict ::1
|
||||
</code></pre><p>Although the <code>nmea</code> reference clock driver is obsolete according to <a href="https://ntpsec.org/removal-plan.html">https://ntpsec.org/removal-plan.html</a>, it works perfectly for me, in particular better then the other drivers. However, maybe I was not trying hard enough with the others.</p>
|
||||
<footer>
|
||||
</footer>
|
||||
</main>
|
||||
<div class="sidebar">
|
||||
|
||||
<nav class="slide-menu">
|
||||
<ul>
|
||||
<li class=""><a href="http://172.16.3.33:1313/">Home</a></li>
|
||||
|
||||
<li class="parent has-sub-menu"><a href="http://172.16.3.33:1313/blog/">Blogs<span class="mark opened">-</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/tetris/">2024-05-27<br/> Tetris </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/rgb-driver/">2024-05-25<br/> PL 9823 meets MSP430 </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver2/">2025-03-13<br/> Stratum 1 NTP Server participating in ntppool.org </a></li>
|
||||
<li class="active"><a href="http://172.16.3.33:1313/blog/timeserver/">2025-02-11<br/> Just another Stratum 1 Timeserver </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/debouncing/">2018-04-30<br/> Yet Another Debouncing Method </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">2016-12-19<br/> Three Phase Inverter - Second Service </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter/">2016-10-14<br/> Three Phase Inverter </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/theremin/">2013-07-01<br/> Theremin </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/email-childprot/">2013-06-27<br/> Children Protection for Postfix-based EMail-Server </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/articles/">Articles<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/articles/quotes/"> Quotes </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/howtos/">HowTos<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/colors-in-minicom/"> Colors in Minicom </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/engel-des-herrn/"> Engel des Herrn </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/occ-in-nextcloud-pod/"> Execute occ in Nextcloud pod </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-backup/"> Gitlab Backup and Restore </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-change-baseurl/"> Gitlab Change BaseURL in Database </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-upgrades/"> Gitlab Upgrades </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/ca-certificate-in-debian/"> How to add a CA certificate in Debian </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/iscsi-on-linux/"> iSCSI on Linux </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/magnifikat/"> Magnifikat </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/neovim/"> Neovim Setup </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/putty-and-hardware-keys/"> PuTTY and OPENGPG hardware keys </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/resize-hdd-on-running-system/"> Resize HDD on running system </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/snmpwalk-with-numeric-and-text-output/"> snmpwalk with numeric and text output of oid </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/prince-of-persia-1/"> Solution for Prince of Persia 1 </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-footer"></div>
|
||||
</div>
|
||||
|
||||
</div><a href="#" id="backtothetop-fixed" class="backtothetop"
|
||||
data-backtothetop-duration="600"
|
||||
data-backtothetop-easing="easeOutQuart"
|
||||
data-backtothetop-fixed-fadeIn="1000"
|
||||
data-backtothetop-fixed-fadeOut="1000"
|
||||
data-backtothetop-fixed-bottom="10"
|
||||
data-backtothetop-fixed-right="20">
|
||||
<span class="fa-layers fa-fw">
|
||||
<i class="fas fa-circle"></i>
|
||||
<i class="fas fa-arrow-circle-up"></i>
|
||||
</span></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
126
attic/public/blog/timeserver2/index.html
Normal file
126
attic/public/blog/timeserver2/index.html
Normal file
@ -0,0 +1,126 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>Stratum 1 NTP Server participating in ntppool.org - Minimal Setups</title>
|
||||
<meta name="generator" content="Hugo 0.140.2">
|
||||
<link href="http://172.16.3.33:1313//index.xml" rel="alternate" type="application/rss+xml">
|
||||
<link rel="canonical" href="http://172.16.3.33:1313/blog/timeserver2/">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/theme.min.css">
|
||||
<link rel="stylesheet" href="http://172.16.3.33:1313/css/chroma.min.css">
|
||||
<script defer src="http://172.16.3.33:1313//js/fontawesome6/all.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery.easing@1.4.1/jquery.easing.min.js" integrity="sha256-H3cjtrm/ztDeuhCN9I4yh4iN2Ybx/y1RM7rMmAesA0k=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js" integrity="sha256-4XodgW4TwIJuDtf+v6vDJ39FVxI0veC/kSCCmnFp7ck=" crossorigin="anonymous"></script>
|
||||
<script src="http://172.16.3.33:1313/js/bundle.js"></script><style>
|
||||
:root {}
|
||||
</style>
|
||||
<meta property="og:url" content="http://172.16.3.33:1313/blog/timeserver2/">
|
||||
<meta property="og:site_name" content="Minimal Setups">
|
||||
<meta property="og:title" content="Stratum 1 NTP Server participating in ntppool.org">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="blog">
|
||||
<meta property="article:published_time" content="2025-03-13T00:00:00+00:00">
|
||||
<meta property="article:modified_time" content="2025-03-13T00:00:00+00:00">
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Stratum 1 NTP Server participating in ntppool.org">
|
||||
|
||||
<meta itemprop="name" content="Stratum 1 NTP Server participating in ntppool.org">
|
||||
<meta itemprop="datePublished" content="2025-03-13T00:00:00+00:00">
|
||||
<meta itemprop="dateModified" content="2025-03-13T00:00:00+00:00"><script type="text/javascript" id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container"><header>
|
||||
<h1>Minimal Setups</h1>
|
||||
</header>
|
||||
<div class="global-menu">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class=""><a href="/keys/">Keys</a></li>
|
||||
<li class=""><a href="/about/">About</a></li></ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div class="content-container">
|
||||
<main><h1>Stratum 1 NTP Server participating in ntppool.org</h1>
|
||||
<time>Thu, Mar 13, 2025</time><footer>
|
||||
</footer>
|
||||
</main>
|
||||
<div class="sidebar">
|
||||
|
||||
<nav class="slide-menu">
|
||||
<ul>
|
||||
<li class=""><a href="http://172.16.3.33:1313/">Home</a></li>
|
||||
|
||||
<li class="parent has-sub-menu"><a href="http://172.16.3.33:1313/blog/">Blogs<span class="mark opened">-</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/tetris/">2024-05-27<br/> Tetris </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/rgb-driver/">2024-05-25<br/> PL 9823 meets MSP430 </a></li>
|
||||
<li class="active"><a href="http://172.16.3.33:1313/blog/timeserver2/">2025-03-13<br/> Stratum 1 NTP Server participating in ntppool.org </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/timeserver/">2025-02-11<br/> Just another Stratum 1 Timeserver </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/debouncing/">2018-04-30<br/> Yet Another Debouncing Method </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter-ng/">2016-12-19<br/> Three Phase Inverter - Second Service </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/three-phase-inverter/">2016-10-14<br/> Three Phase Inverter </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/theremin/">2013-07-01<br/> Theremin </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/blog/email-childprot/">2013-06-27<br/> Children Protection for Postfix-based EMail-Server </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/articles/">Articles<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/articles/quotes/"> Quotes </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li class=" has-sub-menu"><a href="http://172.16.3.33:1313/howtos/">HowTos<span class="mark closed">+</span></a>
|
||||
|
||||
<ul class="sub-menu">
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/colors-in-minicom/"> Colors in Minicom </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/engel-des-herrn/"> Engel des Herrn </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/occ-in-nextcloud-pod/"> Execute occ in Nextcloud pod </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-backup/"> Gitlab Backup and Restore </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-change-baseurl/"> Gitlab Change BaseURL in Database </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/gitlab-upgrades/"> Gitlab Upgrades </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/ca-certificate-in-debian/"> How to add a CA certificate in Debian </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/iscsi-on-linux/"> iSCSI on Linux </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/magnifikat/"> Magnifikat </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/neovim/"> Neovim Setup </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/putty-and-hardware-keys/"> PuTTY and OPENGPG hardware keys </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/resize-hdd-on-running-system/"> Resize HDD on running system </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/snmpwalk-with-numeric-and-text-output/"> snmpwalk with numeric and text output of oid </a></li>
|
||||
<li class=""><a href="http://172.16.3.33:1313/howtos/prince-of-persia-1/"> Solution for Prince of Persia 1 </a></li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="sidebar-footer"></div>
|
||||
</div>
|
||||
|
||||
</div><a href="#" id="backtothetop-fixed" class="backtothetop"
|
||||
data-backtothetop-duration="600"
|
||||
data-backtothetop-easing="easeOutQuart"
|
||||
data-backtothetop-fixed-fadeIn="1000"
|
||||
data-backtothetop-fixed-fadeOut="1000"
|
||||
data-backtothetop-fixed-bottom="10"
|
||||
data-backtothetop-fixed-right="20">
|
||||
<span class="fa-layers fa-fw">
|
||||
<i class="fas fa-circle"></i>
|
||||
<i class="fas fa-arrow-circle-up"></i>
|
||||
</span></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user