2016-01-30
Az ATMega8 PWM -ről már írtam részletesebben. Az ATtiny13a-nak egyetlen 8 bites számlálója van, amihez vizont két függetleg OCR0A és OCR0B regiszter, illetve kimenet tartozik. Most az egyiket a potiról leolvasott értékkel töltjük fel, tehát a 6. lábra kötött LED fényerejét a poti tekergetésével tudjuk szabályozni. Az OCR0B regiszter tartalmát folyamatosan változtatjuk 0..255 között, majd a számlálónk 255-ről 0-ra átbillen, és a folyamat újraindul. Vagyis a LED-ünk fényereje folyamatosan növekszik, majd kihuny és ez ciklikusan ismétlődik.
/*******************************************************************************
* Author - Kiraly Tibor
* http://www.tkiraaly.hu
* Date - 2016.01.30.
* Chip - Atmel ATtiny13A
* Compiler - avr-gcc ( WinAVR)
*
* PWM demo
*
********************************************************************************
* 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>
int main( void)
{
U8 i= 0;
T0_PWM;
T0_FP_1;
OC0A_ENABLE;
OC0B_ENABLE;
ADC_8BIT; // 8 bit felbonas
ADC_VREF_AVCC; // a tap a referencia feszultseg
ADC_IN2; // 2. bemenet kivalasztasa
ADC_FREE_RUN; // folyamatos meres
for(;;)
{
i++;
OCR0A= i;
OCR0B= ADCH;
_delay_ms( 10);
}
}
Itt a vége, fuss el véle, legytek az én vendégeim, innen letölthetitek a programokat, miegymást összecsomagolva.