2016-01-30
Ez a program úgy működik, hogy az EEPROM-ban letárolja/számolja hányadik bekapcsolásnál tart, és a LED-et csak az első 5 alkalommal kapcsolja be. Hasonló megoldás található az intelligensebb tonerekben/tintapatronokban. Persze kinek nem jutnak eszébe a szinte programozottan elromló kütyük?
/*******************************************************************************
* Author - Kiraly Tibor
* http://www.tkiraaly.hu
* Date - 2016.01.30.
* Chip - Atmel ATtiny13A
* Compiler - avr-gcc ( WinAVR)
*
* Piszkos aramkor
*
********************************************************************************
* PonyProg Configuration and Security Bits (bepipalva):
*
* CKSEL1 -, CKSEL0 P - Internal Oscillator 9,6 MHz
* CKDIV8 P - Divide clock by 8
*
*******************************************************************************/
#define F_CPU 1,2 MHZ // orajel
#include "tkiraaly_attiny13a.h"
#include <util/delay.h>
void ee_write( U8, U8); // EEPROM irasa
U8 ee_read( U8); // EEPROM olvasasa
int main( void)
{
U8 n;
PB0_1; // LED
PB0_OUT;
_delay_ms( 500);
n= ee_read( 1);
if( n == 0xFF) n= 0; // default allapot prg. letolese utan
if( n < 5)
{
ee_write( 1, n+ 1);
PB0_0; // LED bekapcsolasa
}
for(;;){}
}
void ee_write( U8 cim, U8 adat) // EEPROM irasa
{
while( B_R( EECR, EEPE)); // varakozas elozo EEPROM muvelet befejezesere
EEARL= cim;
EEDR= adat;
B_1( EECR, EEMPE);
B_1( EECR, EEPE);
}
U8 ee_read( U8 cim) // EEPROM olvasasa
{
while( B_R( EECR, EEPE)); // varakozas elozo EEPROM muvelet befejezesere
EEARL= cim;
B_1( EECR, EERE);
return EEDR;
}
Itt a vége, fuss el véle, legytek az én vendégeim, innen letölthetitek a programokat, miegymást összecsomagolva.