Top Banner
Loeng 3: IO seadmed Artur Abels
23

Loeng 3: IO seadmed

Jan 04, 2016

Download

Documents

Rania

Loeng 3: IO seadmed. Artur Abels. Peamised IO seadmed. Timer/counters SPI – serial peripheral interface USART – universal synchronous/asynchronous receiver/transmitter ADC – analogue to digital converter Pordid (Port A..G). ADC. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Loeng  3: IO  seadmed

Loeng 3: IO seadmed

Artur Abels

Page 2: Loeng  3: IO  seadmed

Peamised IO seadmedTimer/countersSPI – serial peripheral interfaceUSART – universal synchronous/asynchronous

receiver/transmitterADC – analogue to digital converterPordid (Port A..G)

Page 3: Loeng  3: IO  seadmed

ADCADC on seade mõeldud pinge mõõtmiseks

väljaviikude peal. Kui digitaalsisendil on 2 võimaliku seisundit – “0” ja “1”, siis ADC paneb vastavusse igale pingele vahemikus 0…Reference arvu vahemikus 0..1023.

S.t. kui me ühendame Reference 5 voldiga, ja anname jala peale näiteks 2 volti siis mõõtmise tulemuseks saame 2V*1024/5V = 409.

Kui mõõtmistulemuseks saime näiteks 100, ja Vreference on 5V siis tegelik pinge jala peal oli 100/1024*5V = 0.488V

Page 4: Loeng  3: IO  seadmed

ADC kasutus

Page 5: Loeng  3: IO  seadmed

ADC kasutusADCl on olemas omad IO registrid, mis

seadistavad selle tööd, ja on olemus tulemuste IO registrid, kuhu sattub mõõtmise tulemus.

ADC abil on võimalik mõõta pinget 8 mikroskeemi jala peal. Selleks et valida mis jala peal pinget me tahame mõõta tuleb vastavalt seadistada ADC kirjutades selleks ettenähtud IO registritesse vastavad väärtused. Selleks et saada mõõtmistulemus kätte tuleb lugeda vastava IO registri väärtus.

Page 6: Loeng  3: IO  seadmed

ADC IO registridLk 205-209 atmega169 datasheedis

Page 7: Loeng  3: IO  seadmed

ADC kasutusmallSeadistame ADCd kirjutades vastavad väärtused IO

registritesse ADMUX, ADCSRA ja ADCSRB. See mis väärtused tuleb kirjutada sõltub konkreetsest olukorrast, ja mikrokontrolleri ühendusskeemist. ILMA DATASHEEDITA JA MIKROKONTROLLERI ÜHENDUSSKEEMITA ÕIGEID VÄÄRTUSI TEADA EI SAA!!

Valime õige kanali, mille pinget me tahame teada, kirjutades õige väärtus ADMUX IO registrisse. Kirjutame ADSC (ADc Start Convertion) biti üheks ADCSRA registris.

Ootame kuni mõõtmine on valmis (sellest annab märku ADIF bit ADCSRA sees)

Loeme väärtust IO registritest ADCH ja ADCL.

Page 8: Loeng  3: IO  seadmed

Küsimusi

Page 9: Loeng  3: IO  seadmed

USARTSerial liides. On võimeline saatma baite kas

sünkroonses režiimis või asünkroonses režiimis (nagu arvuti COM port). Seda seadet kasutategi plaadi programmeerimiseks.

Tavaliselt seda kasutatakse asünkroonselt (COM port)

Edasi me vaatleme ainult asünkroonset režiimi ja USARTi nimetame UARTiks (ilma Sta) et rõhutada et me räägime just asünkroonsest andmevahetusest.

Page 10: Loeng  3: IO  seadmed

Sync vs AsyncSünkroonses režiimis on kasutusel veel CLOCK

signaal, ja bitide saatmine/vastuvõtmine toimub just selle signaali järgi.

See tähendab et on olemas osapool mis genereerib clocki – MASTER.

Ja teine osapool mis peab tegema andmevahetust masteri poolt genereeritud clocki järgi – SLAVE.

Page 11: Loeng  3: IO  seadmed

Sync vs AsyncAsünkroonses režiimis clocki pole ja pole ma

masterit ega slavi. Andmevahetus käib ette teatud kiirusega (BAUD RATE), mida saab valida.

Mõlemad andmevahetuse osapooled peavad seadistama samasuguse baud rate’i.

Selleks et aru saada millal tuleb esimene bitt, on olemas stop ja start bitid.

Page 12: Loeng  3: IO  seadmed

UART (Async)Suhtlus käib läbi 2 juhtme, Tx (transmit) ja Rx

(receive). Arvuti Tx ühendatakse plaadi Rxga ja vastupidi.

Igal andmepaketil on järgmine struktuur

Page 13: Loeng  3: IO  seadmed

UART registridLk 170-174

Page 14: Loeng  3: IO  seadmed

UART kaudu saatmineInitsialiseerime UARTi kirjutades vastavad väärtused IO

registritesse UCSRA, UCSRB, UCSRC ja UBRR. See mis väärtused te peate kirjutama sõltub tahetud BAUD rate’st, prose taktsagedusest ja tahetud paketiformaadist.

Kirjutame UDR (Usart Data Register) sisse väärtuse mida me tahame saata, ja UART saadab selle. ME EI PEA KÄSITSI ANDMEPAKETI KOKKU PANEMA EGA PROGRAMMIST MUUTMA Tx JALA SEISUNDIT… UART SAADAB ISE.

Sellest et bait on saadetud annab märku TXC (Transmit Complete) või UDRE (UDR Empty) bitt vastavas IO registris.

Page 15: Loeng  3: IO  seadmed

UART kaudu vastuvõtmineInitsialiseerime UARTi kirjutades vastavad

väärtused IO registritesse UCSRA, UCSRB, UCSRC ja UBRR. See mis väärtused te peate kirjutama sõltub tahetud BAUD rate’st, prose taktsagedusest ja tahetud paketiformaadist.

Oodata kuni tuleb andmepakett. Sellest annab märku bit RXC (Receive Complete) UCSRA IO registris.

Loeme tulnud väärtuse UDR registrist ja ootame järgmist paketti.

Page 16: Loeng  3: IO  seadmed

UDR registerUDR (USART Data Register) on tegelikult 2

erinevat registrit. Üks kasutatakse lugemiseks (et lugeda vastuvõetud andmed) ja teist kirjutamiseks (et kirjutada saadetavaid andmeid). Nad mõlemad ON SAMA AADRESSIGA.

See on tehtud mugavuse pärast. Nii on võimalik andmed saata ja vastu võtta samal ajal.

Kuid nii saatmiseks kui ka vastuvõtmiseks kasutatakse sama IO registri aadress.

Page 17: Loeng  3: IO  seadmed

Küsimusi

Page 18: Loeng  3: IO  seadmed

Timer/CounterLoendur. Suurendab oma ühe registri väärtust

ühe võrra mingi teatud intervalli tagant. Selle abil saab:

Lugeda palju aega on möödas mingist ajahetkest

Genereerida kindlate ajavahemikude tagant mingi sündmuse

Teha PWMJne.

Page 19: Loeng  3: IO  seadmed

Timer/Counter’idLugemise kiirus (prescaler) on seadistatav ka

IO registrite kaudu. T/C’d ei suuda lugeda suvalise sagedusega,

vaid suudavad lugeda prose sagedusega jagatud mingi PRESCALER väärtusega.

Kui taimer loeb maksimaalse väärtuseni siis alustab jälle nullist.

Page 20: Loeng  3: IO  seadmed

Timer/Counter’idAtmega169’l on 3 T/C’d - Timer/Counter0,

Timer/Counter1 ja Timer/Counter2.Timer/Counter0 ja Timer/Counter2 on

8bitilised, kuid Timer/Counter1 on 16 bitiline.

Page 21: Loeng  3: IO  seadmed

T/C’de lisafunktsionaalsusOn võimalik seadistada T/C nii et see annaks

märku mingi etteantud väärtuseni jõudes (Compare match), või siis kui ta suureneb maksimumist ühe, ja seega saab nulliks (overflow)

Veel on võimalik seadistada T/C nii et eeltoodud sündmuste puhul muudaks see kindla mikrokontrolleri jala seisundit (kas paneks üheks, nulliks või muudaks jala seisundit, see on konfitav)

Pini muutmise funktsioonaalsuse abil on võimalik teha PWM.

Page 22: Loeng  3: IO  seadmed

T/C’de registridLk 89-92, 117-123, 135-142

Page 23: Loeng  3: IO  seadmed

Küsimusi