<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://bitwizard.nl/wiki/index.php?action=history&amp;feed=atom&amp;title=PiPower_protocol</id>
	<title>PiPower protocol - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://bitwizard.nl/wiki/index.php?action=history&amp;feed=atom&amp;title=PiPower_protocol"/>
	<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=PiPower_protocol&amp;action=history"/>
	<updated>2026-04-05T18:22:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.6</generator>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=PiPower_protocol&amp;diff=1502&amp;oldid=prev</id>
		<title>Rew: /* PiPower protocol */</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=PiPower_protocol&amp;diff=1502&amp;oldid=prev"/>
		<updated>2012-07-17T11:04:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;PiPower protocol&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:04, 17 July 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;div&gt;Besides that, there is the &quot;watchdog&quot; mode, where after a period of inactivity from the &#039;Pi the PiPower will powercycle the Raspberry Pi. &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;div&gt;Besides that, there is the &quot;watchdog&quot; mode, where after a period of inactivity from the &#039;Pi the PiPower will powercycle the Raspberry Pi. &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;div&gt;Times are specified in miliseconds. Time measurements are not accurate. So if your &#039;pi needs to be powered on after one hour, you&#039;ll have to take some margin. Officially the accuracy is +/- 10%. If you want, you can measure the timer drift and compensate for it with the timer adjustment. This should give you 1% accuracy, provided the temperature and powersupply voltage do not change. &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 57:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 59:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;div&gt;* input &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;div&gt;* input &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-deleted&quot;&gt;&lt;div&gt;a read of this register reads the inputs. This can be used to poll the inputs while the &#039;pi is on.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-context diff-side-added&quot;&gt;&lt;div&gt;a read of this register reads the inputs. This can be used to poll the inputs while the &#039;pi is on.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;div&gt;=== timer ===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;div&gt;* Timer adjustment. &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-addedline diff-side-added&quot;&gt;&lt;div&gt;This is the parts-per-million that adjusts the time. (signed value). Saved to eeprom.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff:wikidiff2:1.12:old-1501:rev-1502:1.13.0 --&gt;
&lt;/table&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
	<entry>
		<id>https://bitwizard.nl/wiki/index.php?title=PiPower_protocol&amp;diff=1501&amp;oldid=prev</id>
		<title>Rew: Created page with &quot;= PiPower protocol =  The premise is that in general the PiPower will turn the raspberry pi ON in certain conditions, and that the Raspberry Pi will tell the PiPower to turn i...&quot;</title>
		<link rel="alternate" type="text/html" href="https://bitwizard.nl/wiki/index.php?title=PiPower_protocol&amp;diff=1501&amp;oldid=prev"/>
		<updated>2012-07-17T10:54:56Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= PiPower protocol =  The premise is that in general the PiPower will turn the raspberry pi ON in certain conditions, and that the Raspberry Pi will tell the PiPower to turn i...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= PiPower protocol =&lt;br /&gt;
&lt;br /&gt;
The premise is that in general the PiPower will turn the raspberry pi ON in certain conditions, and that the Raspberry Pi will tell the PiPower to turn it off when it&amp;#039;s ready for that.&lt;br /&gt;
&lt;br /&gt;
Besides that, there is the &amp;quot;watchdog&amp;quot; mode, where after a period of inactivity from the &amp;#039;Pi the PiPower will powercycle the Raspberry Pi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== registers ==&lt;br /&gt;
&lt;br /&gt;
=== watchdog functions ===&lt;br /&gt;
&lt;br /&gt;
The watchdog registers are saved to eeprom, so they will function again after a powerloss. &lt;br /&gt;
&lt;br /&gt;
* watchdog.&lt;br /&gt;
A write to this register resets the watchdog. &lt;br /&gt;
&lt;br /&gt;
* Watchdog interval. &lt;br /&gt;
After this time without any writes to the watchdog the PiPower will initiate the watchdog cycle. You should attempt to write at least twice this rate to the watchdog register. As Linux is not real-time, you should take some margin and not set this value too short. Disable the watchdog function by writing this &lt;br /&gt;
&lt;br /&gt;
* Watchdog leniency. // Find a better word. &lt;br /&gt;
This is the time after power on due to the watchdog that the watchdog function will not yet function. This allows the raspberry pi to boot. &lt;br /&gt;
&lt;br /&gt;
* Watchdog offtime&lt;br /&gt;
When the watchdog activates, this is the time that the raspberry pi is turned off. We recommend setting this at 1 second. If you make it too short the power-on-reset might not activate, requiring multiple watchdog cycles before your &amp;#039;pi will boot again. &lt;br /&gt;
&lt;br /&gt;
=== turning the &amp;#039;pi off ===&lt;br /&gt;
&lt;br /&gt;
* timed_turn_off&lt;br /&gt;
Set this register to the time until a poweroff is required. Write zero for an immediate turn-off. &lt;br /&gt;
&lt;br /&gt;
* More?&lt;br /&gt;
&lt;br /&gt;
=== turning the &amp;#039;pi on ===&lt;br /&gt;
&lt;br /&gt;
* timed turn on&lt;br /&gt;
Turn on an output after a specified time delay. This can be used to turn the &amp;#039;pi back on after a specified time, as you can issue a turn-off command after this one. Write zero for an immediate turn-on.&lt;br /&gt;
&lt;br /&gt;
* Input configuration. &lt;br /&gt;
Writing a 1 bit will turn on the pi for that event. An event is defined as a change of the input values. The input values after the change form a binary word. The binary word indexes into this byte. So the lowest order bit specifies what to do when the inputs change to 00: a 0 means: do nothing, a 1 means: turn on the &amp;#039;pi. The &amp;#039;pi should determine how/when to turn itself off again. &lt;br /&gt;
&lt;br /&gt;
=== event log ===&lt;br /&gt;
&lt;br /&gt;
* event log. &lt;br /&gt;
A read of this register will return events from the event log. The first byte indicates the event type. A timestamp follows. &lt;br /&gt;
&lt;br /&gt;
* Events to be logged. &lt;br /&gt;
each bit specifies one type of events that can be logged. 1 means: Add to log. 0 means do not add to log. &lt;br /&gt;
events that can be logged are: &lt;br /&gt;
** pi turn on &lt;br /&gt;
** pi turn off&lt;br /&gt;
** input changed&lt;br /&gt;
** watchdog triggered&lt;br /&gt;
** more?&lt;br /&gt;
&lt;br /&gt;
=== inputs === &lt;br /&gt;
&lt;br /&gt;
* input &lt;br /&gt;
a read of this register reads the inputs. This can be used to poll the inputs while the &amp;#039;pi is on.&lt;/div&gt;</summary>
		<author><name>Rew</name></author>
	</entry>
</feed>