Project

General

Profile

Attiny-wdt » History » Version 4

laforge, 08/10/2022 10:38 AM

1 4 laforge
{{>toc}}
2
3
h1. attiny-wdt
4 1 laforge
5
@attiny-wdt@ is an OSHW + open source firmware project of turning an Attiny{4,5,9,10} microcontroller into a hardware watchdog that can be used to reset another CPU/SoC when it gets stuck.
6
7
The primary use case was to use it with Raspberry Pi devices. Those do have a built-in hardware watchdog themselves, but unfortuantelly it is not documented at the register-level and there is no option to enable it straight from the boot loader, so it is not really providing the kind of guarantees one would expect from a watchdog.
8
9 3 laforge
h2. Operating Principle
10
11
The general idea is to use the Timer/Counter block of the ATTiny9 in the following way:
12
* Clear the output @OC0B@ on BOTTOM (counter == 0)
13
** this generates a rising edge on the @!RESET@ signal of the CPU we're guarding
14
* Set the output @OC0B@ when counter reaches @OCR0B@
15
** this generates a falling edge on the @!RESET@ signal of the CPU we're guarding
16
* Wrap the counter once it reaches @OCR0A@
17
** this determines the amount of time until a reset
18
* Configure any falling edge on the INT0 pin to re-set the counter to zero
19
** this is what the software on the CPU we're guarding nees to do to avoid the watchdog from expiring
20
21
h2. Pinout
22
23
The board contains two connectors:
24
25
h3. JP1
26
27
This header is used in two cases:
28
# *programming phase:* the firmware into the ATtiny9 (using the TPI protocol)
29
# *normal use:* To supply VCC to the watchdog and to connect its output with  @!RESET/GLOBAL_EN@ of the target
30
31
|_.Number|_.Name|_.Description|_.Programming Function|
32
|1|VCC|3.3V supply voltage powering the watchdog|VCC|
33
|2|GLOBAL_EN|watchdog output; expected to be connected to the !RESET of the CPU we're guarding (or GLOBAL_EN in case of Raspi)|TPICLK|
34
|3|PB0|-|TPIDATA|
35
|4|!RESET|-|!RESET|
36
|5|GND|Ground|GND|
37
38
39
h3. JP2
40
41
|_.Number|_.Name|_.Description|
42
|1|GND|Ground|
43
|2|PB2|Input; any falling edge re-sets the counter to zero. Connected to GPIO26 on Raspi|
44
|3|PB0/GPIO19|No function; RFU|
45
46
47 1 laforge
h2. Pictures
48
49 2 laforge
The pictures below show one of the first hand-soldered prototypes:
50 1 laforge
51 2 laforge
{{thumbnail(attiny-wdt1.jpg)}} {{thumbnail(attiny-wdt2.jpg)}} {{thumbnail(attiny-wdt3.jpg)}}
Add picture from clipboard (Maximum size: 48.8 MB)