AVR vs Arduino funktsioonid

pinMode()

Arduino funktsiooni pinMode() abil seatakse siin (pin) kas sisendiks või väljundiks:

pinMode(6, INPUT);

AVR c-keeles:

DDRD &= ~(1 << 6);

DDR – tähendab Data Direction Registrit. Ja kuna Arduino (Atmega328) digital pin 6 kuulub regitrise Port D siis DDRD. Näiteks Arduino digtal pin 12 kuulub registrisse Port B ja siis oleks DDRB.

Et siin (pin) oleks sisend (input) peab selle bitti väärtus registris olema 0. Väljundi korral 1. Selleks saab kasutada bitti nihet vasakule. Esmalt peab järgivaatama, mis registrisse (Port B, Port D jne) viik (pin) kuulub ja mitmes bitt ta seal registris on. Arduino Digital pin 6 on Port D registris 6 bitt. Seega seame biti üheks ja nihutame kuuendasse pessa (1 << 6). Märk ~ muudab biti väärtuse vastupidiseks ehk nulliks.

Sisend:

DDRD &= ~(1 << 6);

Väljund:

DDRD |= (1 << 6);

digitalRead()

Arduino funktsiooni digitalRead() abil saab lugeda, kas siin (pin) on kõrge (High) või madal (Low). Et, kas nupp on alla vajutatud või ei ole. Näide loeme viigu (pin) oleku muutujasse:

int var = digitalRead(2); // Arduino Digital pin 2

AVR c-keeles:

int var = PIND & (1<<2);

PIN – tähendab Port Input Pins Registrit. Siit saab lugeda, kas siin (Pin) on kõrge või madal.

digitalWrite()

Kui siin (pin) on seatud väljundiks saab Arduino funktsiooni digitalWrite() abil, määrata selle, kas kõrgeks (High) või madalaks (Low).

digitalWrite(2, HIGH);

AVR c-keeles:

PORTD |= (1<<2);

PORT – Port Data Register on siini väljund oleku määramise register.

Arduino vs AVR pins

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.