ATMEL AVR mikrokontroller család hardver-felépítése SEM tanfolyam 4. előadás ATMEL AVR mikrokontroller család hardver-felépítése
Mi az mikrokontroller? Programozható eszköz, melyet program által vezérelhetünk.
Mitől több egy uC egy CPU-tól? memória: flash és eprom interrupt kezelő I/O portok kommunikációs interfészek: I2C, SPI, UART, USB, CAN… perifériák: időzítő, számláló, PWM, watchdog órajel generátor ADC, DAC program/debug support
Mikrokontroller gyártók ARM (32bit) Atmel: AVR(8bit), AVR32, AT91SAM(32bit) Microchip: PIC(8bit), dsPIC(16bit), PIC32 Cypress Semiconductor: PSoC Freescale: Coldfire(32bit), SO8 Intel 8051(8bit) TI: MSP430(16bit) Hitachi NXP STMicroelectronics Toshiba
Milyen AVR core családok léteznek? tinyAVR — the ATtiny series 0.5–8 kB program memory 6–32-pin package Limited peripheral set megaAVR — the ATmega series 4–256 kB program memory 28–100-pin package Extended instruction set (Multiply instructions and instructions for handling larger program memories) Extensive peripheral set XMEGA — the ATxmega series 16–384 kB program memory 44–64–100-pin package (A4, A3, A1) Extended performance features, such as DMA, "Event System", and cryptography support. Extensive peripheral set with DACs Application-specific AVR megaAVRs with special features not found on the other members of the AVR family, such as LCD controller, USB controller, advanced PWM, CAN etc. FPSLIC™ (AVR with FPGA) FPGA 5K to 40K gates SRAM for the AVR program code, unlike all other AVRs AVR core can run at up to 50 MHz 32-bit AVRs
Egy általános AVR felépítése
AVR programozási lehetőségei SPI: csak programozásra használható; mindegyik AVR típushoz használható JTAG: debugger, amely csak ATmega16-tól érhető el
uC PORT lábak I/O láb, PORT egyik bitjeként Interfész kivezetéseként
uC interrupt Esemény hatására jön létre Prioritás van az interruptok közt Belső és külső interruptok
uC Timer egység Számláló kiegészítő regiszterekkel és vezérlő logikával 8/16 bites timer Felhasználása: Egyszerű számláló Frekvencia generátor Külső esemény számláló Órajel osztó PWM
uC timer egység config Clk prescaler Interrupt flags: TIMSK, TIFR Control registers: TCCR1A, TCCR1B, TCCR2 Special function register: SFIOR
uC Watchdog Watchdog timer Túlcsorduláskor reset impulzust generál Kifagyás elleni védelem
Serial Peripheral Interface(SPI) Bus Fizikai felépítés
Serial Peripheral Interface(SPI) Bus Időzítési diagram
Serial Peripheral Interface(SPI) Bus 1 Master – 1 Slave
Serial Peripheral Interface(SPI) Bus 1 Master – Multi Slave
Serial Peripheral Interface(SPI) Bus Megvalósítás AVR-ben
Serial Peripheral Interface(SPI) Bus Használata AVR programozásban
Serial Peripheral Interface(SPI) Bus Használata AVR programozásban
Universal Asynchronous Receiver Transmitter(UART) Kommunikáció felépítése
Universal Asynchronous Receiver Transmitter(UART) Fizikai felépítés
Universal Asynchronous Receiver Transmitter(UART) Felhasználási lehetőségek
Universal Asynchronous Receiver Transmitter(UART) Felhasználási példa (RS232)
Universal Asynchronous Receiver Transmitter(UART) Megvalósítás AVR-ben
Universal Asynchronous Receiver Transmitter(UART) Használata AVR programozásban
Universal Asynchronous Receiver Transmitter(UART) Használata AVR programozásban
Inter-Integrated Circuit(I²C) Bus Felépítése
Inter-Integrated Circuit(I²C) Bus Fizikai felépítés
Inter-Integrated Circuit(I²C) Bus Protocol
Inter-Integrated Circuit(I²C) Bus Felhasználás - hőmérséklet mérés - memória illesztés - általános kommunikáció - ADC/DAC - RTC
Inter-Integrated Circuit(I²C) Bus Használata AVR programozásban
Inter-Integrated Circuit(I²C) Bus Használata AVR programozásban Adatlap 170.oldal (ATmega8)
Pulse Width Modulation (PWM) Elvi működés
Pulse Width Modulation (PWM) Megvalósítás
Pulse Width Modulation (PWM) Felhasználás - motor vezérlés - LED vezérlés: fényerő szabályzás - feszültségszabályozás
Pulse Width Modulation (PWM) Használata AVR programozásban
Pulse Width Modulation (PWM) Használata AVR programozásban #define PULSE_WIDTH 0x40 void pwm_start() { OCR1AL = PULSE_WIDTH; //Load Pulse width OCR1AH = 0; DDRD |= (1<<5); //PortD.5 as o/p TCCR1A = 0x81; //8-bit, Non-Inverted PWM TCCR1B = 1; //Start PWM }
A/D és D/A konverterek link
Kvantálási folyamat
Kvantálási hiba
DAC blokkvázlata
DAC típusok R/2R létra negatív visszacsatolású műveleti erősítővel PWM D/A átalakító
ADC típusok Integráló A/D Dual Slope A/D Szukcesszív Approximációs(SAR) A/D Delta/szigma A/D
Közvetlen A/D
Kompenzációs A/D
Szukcesszív approximácis A/D