Bij verschillende ATtiny's is het mogelijk, de reset-pin als I/O-pin te configureren. Dat kan handig zijn, als er net 1 pin te weinig is om een werkend geheel te krijgen.
Helaas heeft dat tot gevolg, dat die handige ISP-connector niet meer bruikbaar is. Voeg daarbij, dat niet iedereen over een HVSP- of een paralelle programmer beschikt.

Toch bestaat de mogelijkheid om de reset-pin als ingang te gebruiken, zonder de oorspronkele reset-functie op te geven. Met de ATtiny13 en de ATtiny45 (en mogelijk met andere 'tiny's) kan de ADC0-ingang gebruikt worden, zolang de spanning niet te laag wordt - dan grijpt de reset-functie immers in.

Even een schema om te tonen wat ik bedoel:
http://home.scarlet.be/prosje/RstPinTst.png
C1 is hierbij overbodig, maar die zit nu eenmaal standaard op mijn experimenteerprint. Vandaar ook de delay's in het testprogramma.

Daarbij hoort een testprogramma:


#define F_CPU         9600000UL

#include <avr/io.h>
#include <compat/deprecated.h>
#include <util/delay.h>

int main(void)
{
    unsigned char vlag;

    DDRB = _BV(PB0) | _BV(PB4);			// PB0 en PB4 = uitgang
    PORTB &= ~(_BV(PB0) | _BV(PB4));		// Let op! "PORTB = 0;" = RESET!
    ADCSRA = _BV(ADEN) | _BV(ADPS2) | _BV(ADPS1);  // Init ADC
    ADMUX = 0;					// ADC0 = analoge ingang; ref = 5V
    sbi(ADCSRA, ADSC);				// Start 1st (dummy) conversion
    vlag = 0;

    while (1) {
	vlag++;
	vlag &= 0x01;				// vlag = 0 of 1
	if (vlag == 0) {
	    PORTB &= ~(_BV(PB4));		// PB4 laag maken
	    _delay_ms(2);				// Effe wachten
	    sbi(ADCSRA, ADSC);			// Start ADC
	    while (bit_is_set(ADCSRA, ADSC)) {	// Wachten tot
	    }					// de ADC-conversie voltooid is
	    if (ADC > 800) {			// Pin hoog?
		PORTB |= _BV(PB0);		// Dat is fout. Melden.
	    }
	} else {
	    PORTB |= _BV(PB4);			// PB4 hoog maken
	    _delay_ms(2);				// Effe wachten
	    sbi(ADCSRA, ADSC);			// Start ADC
	    while (bit_is_set(ADCSRA, ADSC)) {	// Wachten tot
	    }					// de ADC-conversie voltooid is
	    if (ADC < 800) {			// Pin "laag"?
		PORTB |= _BV(PB0);		// Dat is fout. Melden.
	    }
	}
	_delay_ms(2);
    }
}

Het programma wisselt om de haverklap het spanningsniveau op PB4. De spanning op de reset-pin varieert hierbij tussen 3V en 5V. Via een ADC-meting gaat het programma na, of dat klopt, en laat een LED oplichten bij een fout. Die LED wordt daarna niet meer gedoofd, zodat ook 1 fout op duizenden metingen niet aan de aandacht ontsnapt.

Zowel de ATtiny13 als de ATtiny24 deden het prima tot hiertoe: geen enkele foutmelding en geen enkele spontane reset. R1 vervangen door een exemplaar van 22k levert onmiddelijk een foutmelding. En bij een 5k6-weerstand grijpt het reset-mechanisme in.

Uiteraard kunnen er ook analoge spanningen gemeten worden, zolang die maar hoger zijn dan 3V.

Haha! Gave truuk! Thanks! Typisch iets voor een Appnote.

Ja, doordacht hoor!