Korábbi részben elkezdtük megismerni a Timer0 vezérlőt. Akkor időzítő módban használtuk, az az, a számolt periódikus jel a belső órajel volt.
Mostani cikkben a Timer0-t számláló módban alkalmazzuk, tehát a Tn (T0) bemenetre érkező impulzusok számát tároljuk el a TCNT0 regiszterben. A T0 bemenet az ATmega8-as mikrovezérlőnél a PD4 portbiten (6. láb) található (1. ábra).
1. ábra Az ATmega8 lábkiosztása
Nézzük meg újra a TCCR0 regisztert (2. ábra), ahol látható, hogy akkor tudjuk a Timer0-t számláló módban alkalmazni, ha a CS02 és a CS01 bitek logikai 1-ben vannak. A CS00 bit állapotától függ az, hogy a számlálandó jel fel- vagy lefutó élére számolunk.
2. ábra A TCCR0 regiszter
Az első példában a D port alsó négy bitjét kimenetre állítjuk, míg a D port 4. bitjét bemenetre, hiszen itt van a T0 bemenet is (1. ábra).
Ezután töröljük a D port összes bitjét, majd a TCCR0 regiszterben csak a CS02-es bitet állítjuk be logikai egybe, ekkor a T0 lesz a bemenet, illetve falling_edge (lefutó él) miatt a lefutó éleket számláljuk.
A while(1) végtelen ciklusban állandóan megjelenítjük a D porton a TCNT0 értékét. (Nem "szép" megoldás a D portot használni, hiszen a D.4-en olvassuk be a számlálandó lefutó éleket.)
#include <avr/io.h>
void main()
{
// D0 bemenet
DDRD = 0B11101111;
PORTD = 0x00;// Counter mód, falling edge
TCCR0 = (1 << CS02) | (1 << CS01) | (0 << CS00);
TCNT0 = 0;while(1)
{
PORTD = TCNT0;
}
}
A második példában a nyomógomb (PD.4) megnyomásával növelni tudjuk a D porton lévő négy LED-en megjelenített számlálás frekvenciáját.
#include <avr/io.h>
void szamlalo();
void main()
{
// D0 bemenet
DDRD = 0B11101111;
PORTD = 0x00;// Counter mód, falling edge
TCCR0 = (1 << CS02) | (1 << CS01) | (0 << CS00);
TCNT0 = 0;while(1)
{
szamlalo();
}
}void szamlalo()
{
int i;
for(i = 0; i < TCNT0 * 1000; i++);
PORTD++;
}
Október közepén elindítjuk az Atmel 8 bites mikrovezérlőkről szóló sorozatunkat. Ehhez használnunk kell természetesen egy fejlesztőkörnyezetet is. Több ilyen is létezik, például a WinAVR, vagy az Atmel Studio. Mi az Atmel Studio-t fogjuk használni, e. . . .
A PIC18F mikrovezérlők ma is népszerű a fejlesztők körében. Noha 8 bites architektúráról beszélünk, számos érdekes és hasznos alkalmazás megvalósítható vele. Elég csak az USB-re, vagy akár az Ethernetre gondolnunk. Ezért a Szerkesztőség egy sorozat k. . . .
A Microchip által javasolt fejlesztőkörnyezet az MPLABX, amely felváltja az MPlab-ot. Használata nehézkesnek tűnhet, ezért megnézzük ennek az IDE környezetnek a használatát, készítünk egy egyszerű projektet, amely egy PIC32 mikrovezérlőre épül.. . . .