This is an old revision of the document!


Digitaalsed sisendid-väljundid

Kõik AVR siinid on loetavad ja kirjutatavad kui neid kasutada tavalises loogilises sisend-väljund (inglis keeles Input/output, ehk IO) režiimis. AVR siinid on nimetatud suurte ladina-tähestiku algustähtedega A, B, C, jne. Mõnel AVR-il võib aga siin A puududa, kuigi B on olemas. Iga siin on 8 bitine ja iga biti jaoks on enamasti kontrolleri kestast välja toodud eraldi viik. Viikusid loendatakse arvudega alates nullist. Siini mõlema kasutussuuna jaoks on olemas kaks eraldi registrit. Lisaks on olemas iga siini kohta register siini reaalse toimimissuuna määramiseks milles biti väärtus 1 näitab viigu kasutamist väljundina ja 0 sisendina. Kokku on iga siini kohta kolm registrit:

  • PORT - Siini füüsilise väljundoleku määramiseks.
  • PIN - Siini füüsilise sisendoleku lugemiseks.
  • DDR - Siini füüsilise suuna määramiseks.

Näide

Vaja on siini B viigud 0-3 teha sisenditeks, viigud 4-7 väljunditeks, seada 5-s viik kõrgeks ja lugeda 0-3 viigu väärtus muutujasse. C keele programmi kood on järgnev:

#include <avr/io.h>
 
int main()
{
	uint8_t x;
 
	// Siini B suunaregistri määramine
	DDRB = 0xF0;
 
	// Viienda viigu kõrgeks seadmine
	PORTB |= (1 << PIN5);
 
	// Sisendviikude väärtuse lugemine muutujasse x
	x = PINB & 0x0F;
}
  • Esimesena määratakse siini B viigud 0-3 sisendiks ja 4-7 väljundiks.
  • Teise etapina toimub siini väljundregistri väärtuse loogiline liitmine arvuga mille tulemusena muutub siini B viies bitt (viik) üheks.
  • Kolmandana toimub muutujale x siini B bittide 0-3 väärtuse omistamine.

Toodud näites on sisendeid kasutatud Hi-Z, ehk kõrge impendatsiga (inglis keeles High impedance) režiimis. Põhimõtteliselt on see sisend mis ei koorma peaaaegu üldse signaaliallikat. Seda režiimi võib vaja minna kui viiku kasutatakse andmesiinina. Kui viik on kasutusel nupuga, lülilitiga või muus maad ning sisendit kokku ühendavas lahenduses, siis tasub sisendis kasutada pull-up takistit. Selleks tuleb sisendrešiimis seada kõrgeks vastava viigu väljundbitt - tulemusena lülitub toitepinge ja sisendi vahele takisti mis hoiab sisendi pingenivood kõrgel kui miski seda just alla ei tõmba. Pull-up takisti eesmärk on ära hoida sisendi “ujumine” (inglise keeles floating) staatilise elektri ja muude häirete tõttu. Peale kontrolleri käivitumist on kõik IO siinid vaikimisi kõrge impedantsiga sisend-režiimis.

Enamasti on IO siinil olevaid viike peale loogiliste ühenduste kasutatud ka muu perifeeria tarbeks. Kui on soov kasutada viigu alternatiivfunktsiooni, tuleks tutvuda AVR andmelehega kus on öeldud mis režiimis peab IO viik olema. Näiteks ADC kanali sisendina kasutamiseks peaks viik olema sisendrežiimis ja PWM signaali genereerimiseks väljundrežiimis. Mõned perifeeria-moodulid määravad aga ise IO viigu režiimi.

et/avr/io.1262611578.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0