SEM tanfolyam 4. előadás

Download Report

Transcript SEM tanfolyam 4. előadás

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
–
–
–
•
megaAVR — the ATmega series
–
–
–
–
•
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)
–
–
–
•
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
–
•
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
–
–
–
–
•
0.5–8 kB program memory
6–32-pin package
Limited peripheral set
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 ATmega16tó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