Mikrovezérlők Alkalmazástechnikája

Hasonló dokumentumok
Mikrovezérlők Alkalmazástechnikája

I 2 C, SPI, I 2 S, USB, PWM, UART, IrDA

I. C8051Fxxx mikrovezérlők hardverfelépítése, működése. II. C8051Fxxx mikrovezérlők programozása. III. Digitális perifériák

Mikrovezérlők Alkalmazástechnikája

Mikrovezérlők Alkalmazástechnikája

ARM Cortex magú mikrovezérlők

The modular mitmót system. 433, 868MHz-es ISM sávú rádiós kártya

I 2 C, RS-232 és USB. Informatikai eszközök fizikai alapjai. Oláh Tamás István

loop() Referencia:

ARM programozás. Iványi László Szabó Béla

A mikroszámítógép felépítése.

Járműfedélzeti rendszerek I. 4. előadás Dr. Bécsi Tamás

ARM Cortex magú mikrovezérlők

Programozási segédlet DS89C450 Fejlesztőpanelhez

Az interrupt Benesóczky Zoltán 2004

A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Dr. Oniga István DIGITÁLIS TECHNIKA 9

The modular mitmót system. 433, 868MHz-es ISM sávú rádiós kártya

Perifériák hozzáadása a rendszerhez

XII. PÁRHUZAMOS ÉS A SOROS ADATÁTVITEL

7.hét: A sorrendi hálózatok elemei II.

PMU Kezdı lépések. 6-0 Csatlakozás LG GLOFA-GM és SAMSUNG PLC-hez. 6-1 Kommunikáció LG PMU és LG GLOFA-GM7 / GM6 / GM4 között

Serial 2: 1200/2400 bps sebességû rádiós modem vagy

Az I2C egy soros, 8 bit-es, kétirányú kommunikációs protokoll, amelynek sebessége normál üzemmódban 100kbit/s, gyors üzemmódban 400kbit/s.

Autóipari beágyazott rendszerek CAN hardver

LIN, BSS, PCM Protokollok (COM Interfész) Szeptember

RUBICON Serial IO kártya

Mikrovezérlők Alkalmazástechnikája

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Silabs STK3700, Simplicity Studio laborgyakorlat

Digitális technika VIMIAA01

Digitális technika VIMIAA01

Mintavételezés tanulmányozása. AD - konverzió. Soros kommunikáció

Füvesi Viktor. Elektrotechnikai és Elektronikai Tanszék május. 8

SR mini PLC Modbus illesztő modul. Modul beállítása Bemeneti pontok kiosztása főmodul esetén Bemeneti pontok címkiosztása kiegészítő modul esetében

Digitális rendszerek. Digitális logika szintje

1. Bevezetés. 2. A mikroszámítógépek felépítése

Mikrorendszerek tervezése

Mikrovezérlők Alkalmazástechnikája

Mikrovezérlők Alkalmazástechnikája

Modbus kommunikáció légkondícionálókhoz

Mikrorendszerek tervezése

A LOGSYS GUI. Fehér Béla Raikovich Tamás, Laczkó Péter BME MIT FPGA laboratórium

Architektúra, megszakítási rendszerek

LOGSYS LOGSYS LCD KIJELZŐ MODUL FELHASZNÁLÓI ÚTMUTATÓ november 8. Verzió

A/D és D/A konverterek vezérlése számítógéppel

Yottacontrol I/O modulok beállítási segédlet

Nagy Gergely április 4.

ATMEL ATMEGA MIKROVEZÉRLŐ-CSALÁD

8051-es mikrovezérlő. mikrovezérlő 1980-ból napjainkban

Mechatronika és mikroszámítógépek. 2016/2017 I. félév. Analóg-digitális átalakítás ADC, DAC

Mikrokontroller labor, 1. mérés ellenőrző kérdések

Jelfeldolgozás a közlekedésben. 2017/2018 II. félév. Analóg-digitális átalakítás ADC, DAC

Mikrovezérlők Alkalmazástechnikája

Mechatronika és mikroszámítógépek

Az MSP430 mikrovezérlők digitális I/O programozása

A Memory Interface Generator (MIG) beállítása a Logsys Kintex-7 FPGA kártyához

A Számítógépek felépítése, mőködési módjai

Villamos jelek mintavételezése, feldolgozása. Mérésadatgyűjtés, jelfeldolgozás 9. előadás

Laboratóriumi műszerek megvalósítása ARM alapú mikrovezérlővel és Linux-szal

Mérő- és vezérlőberendezés megvalósítása ARM alapú mikrovezérlővel és Linux-szal

T Bird 2. AVR fejlesztőpanel. Használati utasítás. Gyártja: BioDigit Kft. Forgalmazza: HEStore.hu webáruház. BioDigit Kft, Minden jog fenntartva

Digitális technika VIMIAA hét

Digitális technika (VIMIAA01) Laboratórium 9

Dr. Oniga István. DIGITÁLIS TECHNIKA 10 Memóriák

Digitális technika (VIMIAA01) Laboratórium 9

Eötvös Loránd Tudományegyetem - Informatikai Igazgatóság. MEMS érzékelők, szenzorok, méréstechnika. Horváth Gábor. ELTE / Informatikai Igazgatóság

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

WDS 4510 adatátviteli adó-vevő

Procontrol RSC-24B. Kezelői, telepítői kézikönyv. RS232 / RS485 adatkonverter. Verzió:

MSP430 programozás Energia környezetben. Hétszegmenses LED kijelzok

CAN BUSZ ÁLTALÁNOS ISMERTETŐ

Dr. Oniga István. DIGITÁLIS TECHNIKA 10 Memóriák

Digitális technika (VIMIAA02) Laboratórium 12

Digitális technika (VIMIAA02) Laboratórium 12

Mintavételes szabályozás mikrovezérlő segítségével

MODULÁRIS FELÉPÍTÉSŰ VILÁGÍTÓRENDSZER TERVEZÉSE

Interrupt. ile ile 1 / 81

SZORGALMI FELADAT. 17. Oktober

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

Vegyes témakörök. 1. Soros vezérlésű LCD számkijelző. Hobbielektronika csoport 2018/2019. Debreceni Megtestesülés Plébánia

Mérési jegyzőkönyv. az ötödik méréshez

Mikrorendszerek tervezése

A PIC18 mikrovezérlő család

INVERSE E1 MULTIPLEXER LAN BRIDGE

LOGSYS LOGSYS HŐMÉRŐ ÉS EEPROM MODUL FELHASZNÁLÓI ÚTMUTATÓ szeptember 16. Verzió 1.0.

Járműfedélzeti rendszerek I. 5. előadás Dr. Bécsi Tamás

Számítógép Architektúrák

Számítógép Architektúrák

M-Bus Master MultiPort 250D/L

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Mikrovezérlők programozása

Labor gyakorlat Mikrovezérlők

Billentyűzet. Csatlakozók: A billentyűzetet kétféle csatlakozóval szerelhetik. 5 pólusú DIN (AT vagy XT billentyűzet csatlakozó),

Labor gyakorlat Mikrovezérlők

Miskolci Egyetem. Gépészmérnöki és Informatikai Kar. Elektrotechnikai-Elektronikai Intézeti Tanszék. Villamosmérnöki szak

Mikrovezérlők Alkalmazástechnikája

Programozott soros szinkron adatátvitel

A MiniRISC processzor

Átírás:

Gingl Zoltán, 2015, Szeged Mikrovezérlők Alkalmazástechnikája 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 1

Processzoroknál tipikusan párhuzamos átvitel adatbusz címbusz vezérlőjelek, szinkronizálás Mikrovezérlőknél soros átvitel Kevés vezeték illetve jel Modulációt igényel az információt alakítsuk egyetlen skalár jellé, bitfolyammá Demoduláció szükséges Hordozó: feszültség, áram, fény, elekromágneses hullám, hang Forma: amplitúdó, frekvencia, fáziskülönbség 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 2

2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 3

Nem minden C8051Fxxx processzoron van Külső statikus memória elérése (XRAM) movx utasítás xdata int x; Más perifáriák elérésére is jó (ADC, DCA, stb.) Címvonalak (16) Adatvonalak (8) Vezérlő jelek (RD, WR, ALE) 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 4

C8051Fxxx A[15..0] A[15..0] SRAM D[7..0] D[7..0] /RD /WR /CE /OE /WR 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 5

A[15..8] A[7..0] D[7..0] P1/P5 DPH, EMI0CN, P1/P5 P1/P5 P2/P6 DPL, R0, R1 P2/P6 P3/P7 DATA P3/P7 /WR P0.7/P4.7 P0.7/P4.7 /RD P0.6/P4.6 P0.6/P4.6 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 6

A[15..8] A[7..0] D[7..0] P1/P5 DPH, EMI0CN, P1/P5 P1/P5 P2/P6 DPL, R0, R1 P2/P6 P3/P7 DATA P3/P7 /WR P0.7/P4.7 P0.7/P4.7 /RD P0.6/P4.6 P0.6/P4.6 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 7

C8051Fxxx A[15..8] A[15..8] SRAM ALE AD[7..0] 74AHC573 C D Q A[7..0] /RD /WR D[7..0] /CE /OE /WR 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 8

A[15..8] P1/P5 DPH, EMI0CN, P1/P5 P1/P5 AD[7..0] P2/P6 DPL, R0, R1 DATA P2/P6 ALE P0.5/P4.5 P0.5/P4.5 /WR P0.7/P4.7 P0.7/P4.7 /RD P0.6/P4.6 P0.6/P4.6 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 9

A[15..8] P1/P5 DPH, EMI0CN, P1/P5 P1/P5 AD[7..0] P2/P6 DPL, R0, R1 DATA P2/P6 ALE P0.5/P4.5 P0.5/P4.5 /WR P0.7/P4.7 P0.7/P4.7 /RD P0.6/P4.6 P0.6/P4.6 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 10

DATA ADDR /WR /RD /CE /OE /CE DATA C8051F ADDRESS DECODER /CE /RD DATA ADC ADDRESS /RD /WR DATA /CE /OE DATA DAC SRAM FIFO RAM 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 11

Az írás/olvasás időzítése állítható A perifériák sebességéhez kell igazítani Push-pull kimeneteket célszerű választani Olvasáskor automatikusan bemeneti mód 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 12

2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 13

Processzorok és eszközök közti kommunikációhoz Egy byte átvitele bitenként Egyetlen kétállapotú jel Nincs szinkronizáló jel Az átvitel bármikor történhet Az átvitel kezdetét detektálni kell a vevőnek A kommunikáló eszközök azonos időalappal küldik és fogadják a biteket (baud rate=bit/s) Gyakran használt Sokféle hardveres megoldás (RS232, RS485, stb.) 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 14

t t t t t t t t t t START BIT B0 B1 B2 B3 B4 B5 B6 B7 STOP BIT bit sampling Start bit (logikai 0), átvitel detektálására Stop bit (logikai 1), minimum szünet küldések között Byte átviteli idő: 10 t 9 bites átvitel is választható: az utolsó bit külön programozható (TB8, olvasáskor RB8) paritásbitként, multiprocesszoros adatátvitelhez 11 t byte átviteli idő 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 15

FULL DUPLEX SIMPLEX C Device C Device TX TX TX TX RX RX RX RX HALF DUPLEX SIMPLEX C Device C Device TX TX TX TX RX RX RX RX TX KIKAPCSOLHATÓ 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 16

Timer túlcsordulások vezérlik, kétféle megoldás: Baud rate = Timer overflow rate / 16 (pl. F120) Baud rate = Timer overflow rate / 2 (pl. F410) Egy (Timer1) vagy több (Timer1-4) timer Néhány processzoron akár más TX és RX ráta Maximális ráta SYSCLK/16 vagy SYSCLK/2 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 17

Baud rate = Timer overflow rate / 16 (pl. F120) Timer 1 : TH1=256-SYSCLK/(16*Baud rate) Timer 2-4 : TMRRL=65536-SYSCLK/(16*Baud rate) Baud rate = Timer overflow rate / 2 (pl. F410) Timer 1 : TH1=256-SYSCLK/(2*Baud rate) Érdemes figyelni a kerekítési hibára! A C-ben az egész osztás nem a legközelebbire kerekít! Mindig ellenőrizzük a beállított érték okozta hibát! 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 18

Az időalapok különbözők lehetnek Az egységek órajele nem egzakt A beállítás frekvencia egésszel osztásával nem pontosan a kívánt érték A kettő eltérése mennyi lehet? maximum 3%, szigorúbban 2% teljesül? http://pdfserv.maximintegrated.com/en/an/an2141.pdf 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 19

t START BIT B0 B1 B2 B3 B4 B5 B6 B7 STOP BIT 1,03 t Az adó és vevő hibája együttesen hat hogyan? A detektálás ideálisan a bitek közepén lenne A start bit detektálása sem pontos A megbízhatóság függ a jelváltások időtartamától Függ a 2-szeres vagy 16-szoros leosztási értéktől 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 20

t t BIT BIT t/8 0,75 t 0,25 t 0,75 t BIT BIT t/4 0,5 t 0,5 t 0,5 t BIT BIT 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 21

Tegyük fel elég rövid jelváltási idők, 3% tolerancia megengedett 9600 bit/s kívánt érték F410 beállítás SYSCLK = 191406Hz 2% Timer1 8-bit auto reload mode: TH1 = 246 Baud rate = 191406Hz 2% /10/2=9570Hz 2% void Timer1_Init() { TMOD = 0x20; // 8-bit auto reload CKCON = 0x08; // timer clock = system clock TH1 = 0xF6; // reload value = 246 TL1 = 0xFF; // one step from overflow TCON = 0x40; // run timer } 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 22

Baud rate = 191406Hz/10/2 = 9570Hz 9570Hz 2% Megfelel? 9600 3% 9312-9888 9570 2% 9378-9761 A másik eszköz hibáját nem vettük figyelembe! 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 23

A szinkron módokkal nem tárgyaljuk 8 vagy 9 bites aszinkron mód Az adat fogadása engedélyezhető, tiltható A stop bit detektálása engedélyezhető csak akkor van vett adat, ha a stop bit értéke 1 9-bites módban a 9. bitet vizsgálja! Ez alkalmas címzésre, multiprocesszoros kommunikációra Ha a 9. bit 1, akkor cím érdekezik a vevőkhöz A címzett vevő kikapcsolja a bit monitorozását a vétel idejére 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 24

void UART_Init() { SCON0 = 0x10; // 8-bit, variable baud mode TI=1; // assume empty output buffer } unsigned char UARTIn(void) { while (!RI); // wait for a byte RI=0; return SBUF; // return the byte } void UARTOut(char a) { while (!TI); // wait for end of previous transmission TI=0; SBUF=a; // transmit a byte, don t wait for end } 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 25

#define BUFFERSIZE 8 // ring buffers volatile unsigned char TxBuffer[BUFFERSIZE]; volatile unsigned char RxBuffer[BUFFERSIZE]; // TX buffer read and RX buffer write pointers // used in the interrupt routine volatile unsigned char TxReadPtr=0, RxWritePtr=0; // TX buffer write and RX buffer read pointers unsigned char TxWritePtr=0, RxReadPtr=0; // Number of data in the buffers volatile unsigned char TxNumberOfData=0; volatile unsigned char RxNumberOfData=0; 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 26

void UARTInterrupt(void) interrupt UART_VECTOR { if (RI) { RI=0; if (RxNumberOfData < BUFFERSIZE) { RxBuffer[RxWritePtr]=SBUF; RxWritePtr = (RxWritePtr+1) % BUFFERSIZE; RxNumberOfData++; } } 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 27

} if (TI) { TI=0; if (TxNumberOfData) { SBUF=TxBuffer[TxReadPtr]; TxReadPtr = (TxReadPtr+1) % BUFFERSIZE; TxNumberOfData--; } } 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 28

unsigned char UARTIn(unsigned char *c) { if (RxNumberOfData) { RxNumberOfData--; *c=rxbuffer[rxreadptr]; RxReadPtr = (RxReadPtr+1) % BUFFERSIZE; return 0; } return 1; } 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 29

unsigned char UARTOut(unsigned char c) { if (TxNumberOfData < BUFFERSIZE) { TxNumberOfData++; TxBuffer[TxWritePtr]=c; TxWritePtr = (TxWritePtr+1) % BUFFERSIZE; return 0; } return 1; } 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 30

Meghajtó áramkörök nélkül Meghajtóáramkörökkel nagyobb távolságok PLC-k Műszerek oszcilloszkóp DVM Flow controller Speciális eszközök 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 31

Vdd VOLTAGE CONVERTER V+ V- TX RX R OUT T IN R IN T OUT RS232 SIGNALS C RS232 TRANSCEIVER MAX202, MAX3232 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 32

2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 33

2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 34

Vdd DIFFERENTIAL RS422 SIGNALS TX R OUT R IN+ R IN- C RX T IN T OUT+ T OUT- RS422 TRANSCEIVER 2 x MAX485 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 35

Vdd RTS TX TXEN R OUT D+ D- DIFFERENTIAL RS485 SIGNALS RX T IN C RS485 TRANSCEIVER MAX485, MAX3485 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 36

2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 37

2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 38

Vdd TX OPTICAL FIBER RX C 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 39

USB CONNECTOR USB CONNECTOR LDO REG LDO REG 5V RTS RTS CTS TX CTS TX USB-UART TRANSCEIVER D+ D- RX RX C FT232R GND USB CABLE 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 40

2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 41

Bluetooth modulok UART interfésszel SPP (Serial Port Profile) standard protokoll pl. BTM112 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 42

Timer beállítás, engedélyezés A timer másra nem használható Ne keverjük: polling és interrupt mód TX legyen push-pull rövid jelváltási idők Baud rate hibájának figyelembe vétele 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 43

2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 44

Processzorok, integrált áramkörök között Szinkron soros adatátvitel Órajel váltásaikor érvényes a bit Master és slave eszközök Az órajelet adó a master Az órajel garantálja az azonos időzítést a két oldalon Full duplex kimenet: MOSI (master out/slave in) bemenet: MISO (master in/slave out) órajel: SCK (serial clock) Engedélyező vonal (NSS, negated slave select) 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 45

SCK POL=1 POL=0 MOSI MISO B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0 PHA=0 MOSI MISO B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0 PHA=1 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 46

Az adó és vevő oldal azonos módban legyen (POL, PHA) Az egyik SCK él a kimenő bitet beállítja, a másik a bejövő bitet olvassa Slave: Mikor kezdődik az adat átvitele? Csak az órajel indulása nem feltétlen elég Kieshet a szinkronból az átvitel Megoldás: Slave select (NSS) jel 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 47

SCK POL=1 POL=0 NSS MOSI MISO B7 B6 B5 B4 B3 B2 B1 B0 B7 B6 B5 B4 B3 B2 B1 B0 PHA=0 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 48

GPIO NSS MISO MISO MISO MISO MOSI MOSI MOSI MOSI SCK SCK SCK SCK NSS GPIO Master Master Master Slave 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 49

MISO MOSI SCK NSS GPIO Master MISO MOSI SCK NSS Slave MISO MOSI SCK NSS Slave Több slave Egyszerre egy aktív Slave NSS választ NSS adatkezdet is 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 50

void SPIOut(unsigned char c) { SELECT = 0; SPIF = 0; SPI0DAT = c; while (!SPIF); SELECT = 1; } unsigned char SPIIn(void) { SELECT = 0; SPIF = 0; SPI0DAT = 0; // dummy write starts SPI clock while (!SPIF); SELECT = 1; return SPI0DAT; } 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 51

2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 52

System Management Bus IIC vagy I²C: Inter-Integrated Circuit Áramkörök közötti egyszerű, kétvezetékes busz SCL: Órajel (100kHz vagy 400kHz) SDA: Adat Két irány (half duplex) Master, slave, multimaster Párhuzamosan kapcsolhatók eszközök 7-bites címzés Tipikusan: szenzorok, A/D, RTC, EEPROM, stb. 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 53

CROSSBAR CLOCK CONTROL FILTER SCL SHIFT REGISTER 7 6 5 4 3 2 1 0 FILTER SDA SDA CONTROL ACK 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 54

R R Vdd=5V Vdd=5V Vdd=3V Vdd=5V Vdd=3V Master 1 Master 2 Slave 1 Slave 2 SCL SDA 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 55

START ACK NACK STOP SDA SCL A6 A0 R/W D7 D0 7-bit address and direction bit 8-bit data Bármelyik vezetéket az adó és vevő is 0-ba tudja húzni SCK: csak a masterek húzhatják 0-ba Több byte is küldhető egy tranzakcióban ACK minden byte vételekor szükséges a vevőtől NACK: nem nyugtáz a vevő, vagy utolsó byte (master) STOP: a tranzakció befejezése 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 56

MASTER IRQ IRQ IRQ IRQ S ADDR W A DATA A DATA A P S ADDR W A DATA A DATA A P SLAVE IRQ IRQ IRQ 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 57

MASTER IRQ IRQ IRQ IRQ S ADDR R A DATA A DATA N P S ADDR R A DATA A DATA N P SLAVE IRQ IRQ IRQ 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 58

Master SFR-bitek STA, STO írása a jelek generáláshoz ACK írása és olvasása is SI flag (megszakítás is) 1-re vált, ha egy fázis kész A busz áll, amíg SI=1, folytatódik, ha töröljük Ezért mindig SI=0 előtt kell írni az SFR regisztereket Slave SFR-bitek STA, STO olvasása ACK írása és olvasása is 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 59

void SMBusOut(unsigned char address, unsigned char c) { STO = 0; STA = 1; // start transfer SI = 0; // continue while (!SI); // wait for start complete STA = 0; // manually clear STA SMB0DAT = address << 1; // A6..A0 + write SI = 0; // continue while (!SI); // wait for complete if (!ACK) // not acknowledged, stop { STO = 1; // stop condition bit } SI = 0; return; } SMB0DAT = c; SI = 0; while (!SI); STO = 1; SI = 0; // generate stop condition // put data into shift register // continue // wait for complete // stop condition bit // generate stop condition 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 60

unsigned char SMBusIn(unsigned char address) { STO = 0; STA = 1; // start transfer while (!SI); // wait for start complete STA = 0; // manually clear STA SMB0DAT = (address << 1) 1; // A6..A0 + read SI = 0; // continue while (!SI); // wait for complete if (!ACK) // not acknowledged, stop { STO = 1; // stop condition bit } SI = 0; return; } ACK = 0; SI = 0; while (!SI); STO = 1; SI = 0; return SMB0DAT; // generate stop condition // NACK, last byte // continue // wait for complete // stop condition bit // generate stop condition 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 61

stdio átirányítás? printf? void putchar(char c) { UARTOut(c); // UART, SPI, SMBus, stb. } char getchar(void) { return UARTIn(c); // UART, SPI, SMBus, stb. } printf("x=%d",x); // write 2015.12.06. 11:45 Digitális perifériák és használatuk 62

2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 63

CAN: Controller Area Network LIN: Local Interconnect Network USB: Universal Serial Bus Vezeték nélküli kommunikációs áramkör 2015.12.06. 11:45 Kommunikációs áramkörök és használatuk 64