Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
2,32 MB
Nội dung
LỜI GIỚI THIỆU Từ công nghệ chế tạo loại vi mạch lập trình đời đem đến kỹ thuật điều khiến đại có nhiều ưu điểm so với việc sử dụng mạch điều khiển TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN lắp ráp linh kiện rời kích thước nhỏ, giá thành rẻ, độ làm việc tin cậy, công suất tiêu thụ nhỏ Hàng loạt nhà sản xuất MCU đời Atmel, Philip, Motorola với hàng loạt chip với nhiều tính vô phong phú đa dạng Ngày nay, lĩnh vực điều ứng dụng rộng rãi thiết bị, BÁO CÁO ĐỀkhiển TÀIđãVIđược ĐIỀU KHIỂN AVR sản ÌTÍ ÌT^I kT^i LT^Ì ÌTJ ÌT^I ÌT^i phẩm phục vụ cho nhu cầu sinh hoạt hàng ngày người máy giặt, đồng hồ báo giúp cho đời sống cuả ngày đại tiện nghi KTMT02 Thành viên: nhà sản xuất MCƯ KTMT02 Trong số bit Atmel trở nên quen KTMT02 Võ Đình Chinh MSSV: 07520456 thuộc KTMT02 Phạm Hoài Phước MSSV: 07520292 GVHD: ThS Lê Hoài Nghĩa Thay mặt nhóm Võ Đình Chinh MỤC LỤC &1 - GIỚI THIỆU AVR MCU ATMEL .01 • I - Tổng quan AVR .01 Giới thiệu 01 ưu MCU AVR 01 &2 - ATMEGA16 - KIÉN TRÚC TỎNG QUAN I 05 - ưu điểm 05 II - Kiến trúc 05 Sơ đồ chân 05 Sơ đồ khối 06 Các port xuất nhập 06 I - Input & Ouput 13 &3 - CÁC MODƯLE ĐIÈƯ KHIẺN TRONG ATMEGA16 13 Giới thiệu 13 Cấ u tạo châ n 14 Thiết lập truy xuất 1/0 15 II - Timer & Counter .16 Giới thiệu 16 Cấu trúc định thời bit Timer 16 Mô tả chi tiết ghi định thời 19 Sử dụng timer/counter 21 Các chế độ hoạt động Timer 21 Các bước sử dụngTimer 24 III - Interrupt 25 Giới thiệu 25 Ngắt ATMEGA16 26 Các ghi phục vụ ngắt .27 Thiết lập ngắt 28 IV- ADC 30 Giới thiệu 30 Cấu trúc .30 Các ghi điều khiển ADC 31 Quá trình chuyển đổi ADC 37 Các bươc lập trình điều khiến ADC .38 V- ƯSART 39 Giới thiệu 39 Cấu trúc USART 40 Tạo xung clock cho USART 41 Một số khái niệm liên quan đến USART 42 Các ghi điều khiển USART 44 Sử dụng USART 49 VI-SPI 51 Giới thiệu 51 Cấu trúc SPI 54 Các ghi điều khiển SPI 55 Sử dụng SPI 59 VII - TVVI-I2C 61 Giới thiệu 61 Cấu trúc I2C 64 Các ghi điều khiển I2C 65 Sử dụng TWI-I2C 68 Kết luận 70 &1 GIỚI THIỆU AVR MCU ATMEL I Tổng quan AVR: Giới thiệu: - AVR họ vi điều khiến hãng Atmel sản xuất Atmel cung cấp vi điều khiển phổ biến 8051, AT91 ARM7, Atmeĩ AVR 8-bit RISC, DSP dual-CPU AT57 Atmel AVR32 vi điều khiển lai DSP với tầng pipeline khả thực thi song song AVR chip vi điều khiến bits với cấu trúc tập lệnh đơn giản hóaRISC(Reduced Instruction Set Computer), kiểu cấu trúc thể Ưu MCU AVR: - Ket nối phần cứng cho AVR đơn giản với linh kiện thông dụng điện trở, tụ điện, thạch anh Dòng điều khiến Port lớn không cần dùng điện trở kéo - Thiết kế mạch nạp cho AVR đơn giản giao tiếp qua cổng LPT, COM, USB Hỗ trợ ISP lập trình trực tiếp mạch - Hỗ trợ lập trình ngôn ngữ ASM, c với nhiều công cụ hỗ trợ • Xung Extemal osc lên đến 16Mhz Internal osc 8Mhz • Bộ nhớ chương trình Flash lập trình lại nhiều lần dung lượng lớn ghi xóa 1000 lần Bên cạnh nhớ EEPROM lập trình • 32 Port xuất nhập • bits, 16 bits timer/counter tích hợp PWM • Các chuyển đối Analog - Digital phân giải 10 bits • Analog comparator • Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232) • Giao diện nối tiếp Two -Wire -Serial (tương thích chuấn I2C) Master Slaver • Giao diện nối tiếp Serial Peripheral Interface (SPI) Một số dòng AVR: Nhìn chung AVR có dòng sau: * tinyAVR — the ATtiny series • 1-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 (Muĩtiply 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, AI) • Extended períbrmance features, such as DMA, "Event System", and cryptography support • Extensive peripheral set with DACs * Application specitìc 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 II Một số dòng AVR phổ biến: - AT90S1200 - AT90S2313 - AT90S2323 and AT90S2343 - AT90S2333 and AT90S4433 - AT90S4414 and AT90S8515 - AT90S4434 and AT90S8535 - AT90C8534 - ATtiny 10, ATtiny 11 and ATtiny 12 - ATtinyl5 - ATtiny22 - ATtiny26 - ATtiny28 ATmega8/8515/8535 ATmegalỏ ATmegalổl ATmegal62 ATmegal63 ATmegal69 ATmega32 ATmega323 ATmegal03 ATmega64/l 28/2560/2561 pCCK/TO) (T1) (INT2'AINO) PCQ'AIN1) £5) (l/OSI) (MISO) (SCK) RẼSE” XTAL2 XTAL1 IRXD) (TXD) (INTO) (INT1) (OC1B) (OC1A) (ICP1) 40 39 38 37 36 35 34 33 32 31 30 29 Sơ đồ chân: 28 27 26 25 24 23 22 21 PDIP &2 ATMEGA16 - KIÉN TRÚC TỒNG QUAN 'V-/' TQFP/QFN/MLF II I _ ^53 I ưu điểm: FAO FA1 FA2 RS.3 F%4 FA5 PA3 FA7 AREF GND AVCC (ADCO) (ADC1) (ADC2) (ADC3) (ADC4) (ADC5.I (ADC6) (ADC7) 8000 ặặặạặigĩ522 o.Q.Q.ũ.Q.O>o.a.ũ.o PA4 (ADC4) PA5 (ADC5) PA6 (ADC6) PA7 (ADC7) AREF GND AVCC PC7 (TOSC2) PC6 (TOSC1) PC5 (TDI) PC4 (TDO) - Tốc độ xử lý cao, tiêu thụ điện thấp - Kiến trúc 131 tập lệnh thưc thi hầu hết mồi chu kỳ xung clock PC7 PG5 PC5 PC4 PC3 (TOSC2) (TOSC1) (TDI) (TDO) (TMS) - 32x8 ghi đa dụng - Đạt tốc độ tối đa 16MIPS 16Mhz xung clock - Dung luợng nhớ: 16Kb Flash, 512 EEPROM, lkb Internal SRAm - Khả ghi xóa đạt đến 10000 lần, lưu trữ thời gian dài 20 năm/85°C-100 năm 25°c - Giao tiếp chuẩn JTAG hỗ trợ debug, Lock, Fuse bit - Timer 16 bit, timer 16 bit - kênh PWM - kênh ADC 10 bit - 32 port xuất nhập Sơ đồ khố i: POO - PCT Các Port xuất nhập: a Port A: - Port A bên cạnh Port xuất nhập thông thường bit thiết kế cho ADC chuyến đối tương tự’ số Port A thiết kế với điện trở nội b treo lên mức cao Port B: - Là port xuất nhập thông thường bit c Port C: Sync Register Edge Detector Sơ đồ củakhối: tạo xung clock sau: Figure Figure 69 USARTBIock Diagram 70 Clock Generation Logic, Block Diagram > UBRR rĩ Prescaling Down-Courĩter ruD DDR.XCK rL - UMSEL X C DDR_XCK • txclk: xung đồng hộ truyền • rxclk: xung đồng hồ nhận • xcki: tín hiệu vào từ chân XCK, sử dụng cho hoạt động truyền đồng master • xcko: tín hiệu xung clock ngõ tới chân XCK, sử dụng cho hoạt động truyền đồng • slave • fosc: tần số từ chân XTAL USART bao gồm phần chính: tạo xung clock, truyền nhận Các điều niệm khiến liên đượcquan sử dụng chung phần 3.thanh Mộtghi số khái đến USART: Baud rateclock (tốc cho độ Baud): số bit truyền giây Ví dụ tốc độ - Tạo xung USART: baud tạo 19200 thời gianhồdành cho cho bitbộ truyền 1/19200 ~ - Bộ tạođược xungđặt clock xung đồng truyền nhận 52.083US - Frame (khung truyền): truyền thông nối tiếp mà nối tiếp không 4342 i t R X ad/Write R tial Value ad/Write TC RXCIE X C RAN R TXCIE RAV R/W 0 tial Value R/W R/W tial Value PE U2X R R R RAV RAN 0 RXEN R/W R/W TXEN R/W MPCM J UCSRA UCSZ2 R/W RXB8 R TXB8 J UCSRB R/W R/W R/W Tablekhung 63 cần UMSEL Bit hình truyền sau: 4trong lỗi (PE), parity bit lưu ý 1.độ Parity số bit không sau: phải bit bắt vàliệu chúng ghi ƯCSRB tạo thành bit quylàđịnh độ buộc dài UCSRC UPM1 UPMO quy định USBS UCSZ1 dài ÍÌCPOL ucszo 3liệu I UCSRC truyền/nhận Chúng ta khảo sátta Settings Figure R/W 72 RM/ Frame R/WFormats R/W I* -FRAME -lị bit truyền kết hợp với bit ghi UBRRL thanh1 ghi có • UDRE (USART Data Register Empty) khitạo bitthành bày nghĩa 0chi 0 1 Table 66 ucsz Settings 12 thếkhi loại bit nàyBits khỏi khung truyền ghi liệu UDR trống sẵn sàng cho nhiệm vụ tiết tìm hiểu ghi UCSRC UMSEL DOR 0hoạt 0ghi lỗi 04Size) muốn lượng (UDRE), sử dụng khung bit0vàthanh ƯBRRH có data (FE), bit thấp liệu quy tràn UBRRH (DOR), bởiUCSZ2 khung kiếm dùng, tra truyền parity Mô có bảo tổng số 1truyền số (Character chẵn (6cũng số 1) Neu parity lẻ yêu cầu giághi trị ••Hai UCSZ2 bit UCSZ1 (Chracter UCSZ2 size) bit kết hợp kết với hợp 2định với bit bit khác URSEL adA/Vrite UDRE FE (IDLE) ^ S t / o Ị Ị l ^ l Ị ^ Asỵnchronous Operation 'ị \ l5l l l X l l X l lX l P l/ S P l S P \ (St/IDLE) quy định tốc độ baud Giá trị gán cho ghi UBRR không phảimột Stop bits: stop bits Bit cácbit bitdữ báo cho thiết bị nhận gói truyền hay nhận •- bit RXB8 (Receive Data 8)hoặc gọi liệu USART trongrằng AVR có hỗ Synchronous • HaiOperation bit UPM1 UPM0( Parity Mode) dùng để quy định kiểm tra làtrợ liệu đượckhi stop bits, bị có xong độgấp dàiSau tối tốc đa độ 9nhận bit, khibitthanh ghi liệu • truyền U2Xđã làdữ bitliệu chỉgởi định đôi truyền, thiết setnhận lên 1, UPM1 UPMO Parity Mode pariry Neu UPM 1:0=00, parity không sử dụng (mode tốc độ tốc baud, USART dùng để tính độmang baud Bảng tiến ghiđộ8 bit.chỉ Dođược dữvới liệu bittốc nhận, trị bit0.3đầu truyền sođó, caokhi gấpcó2 gói lần so giá 0 Disabled thông dụng), UPM1:0=01 không sử dụng, UPM1:0=10 parity Reserved hướng dẫn cách tốc truyền độ dựa trị ghi bit UBRR hành kiếm tra khung đế đảm bảo tính xác thứ liệu.chín, Stop chứa ghi UDR, cần có động 1vào bitgiá khác đóng vai trò • MPCM tính bit chọn chếbaud độ hoạt đa xửchính lí (muĩti-processor) chẵn dùng, lẻ đượctrong sử dụng Startđược bit:Even start UPM1:0=11 bit đầu tiênparity truyền frame truyền, bit Enabled, Parity bits làlàcác khung B: truyền, AVR USART c RXD8 UCSRB - bits USART Control and Status Register bit thứbắt chínbuộc này.xuất Enabled, Odd Parity có chức báo cho thiết bị nhận biết có gói liệu Table 64 UPM Bits Settings có thế(Transmit 2Data bits Trong dụ hình 1, cóbit2 stop bitsbit dùng cho • TXB8 Bit 8), vítương tự RXD8, TXB8 USBS Stop Bit(s) truyền tới Ở module USART AVR, đường truyền trạng thái khung stopthông, bit giá bit trị nghỉ (Idle)dùng ngượclúc với đóng vaitruyền.Giá trò bit thứtrị 9của truyền 1-bit cao nghỉ (Idle), muốnkích thực hiệnchế việcđộtruyền • UCPOL (Clock Pority)nếu bit chỉchip cực AVR xung truyềndữ liệu giá trị củaliệu start bit,2-bit giá trị stop bit AVR mức cao (5V) truyền gởi bit start cách đường xuống thông đồng UCPOL=0, dữ“kéo” liệu thay truyền đổi thay đổi ởmức cạnh0 Như UCSZ1 ucszo Character Size UCSZ2 - USART Control - d ĐâyUCSRC ghi quan trọng and điềuStatus khiếnRegister USART.C:Các bit mô tả RXB[7:0] vậy, với AVR bit start mang5-bit giá trị có giá trị điện áp ov (với UDR(Read) chuẩn lên 0 UDR (VVrite) sau: TXB[7:0] 1trị điện áp bit start 6-bitlà ngược lại), start bit bắt buộc phải có RS232 giánhịp, xung UCPOL=l, liệu thay đối cạnh xuống xung ReadAA/rite R/W RAN RAN RAN RAN RAN R/W RAN • USBS (Stop bit Select), bit Stop khung truyền AVR USART • RXCIE Complete bit cho phép ngắt Initial Value(Receive 00 0 0 Interrupt 7-bit 0 Enable) 0 trongNeu khung nhịp bạntruyền sử dụng chế độ truyền thông không đồng bộ, set ghilànhận chủ định khung truyền vàtrị chế truyền Thanh có 11 2yếu bit, USBS=0 Stop bit làđộ bit 1- Thanh 8-bit trình kếtliệu, thúc nhận liệu truyền phương pháp nối - Là ghi làquy 1Việc ghi bit chứa giá nhận phát Table 67 UCPOL Bit Settings Data: data hay liệu cần truyền thông tin mà cần gởi bit 0cócó Reserved ghi địa với UBRRH ghi2 chứa cao ƯSBS=1 sẽlại 2Thực Stop bit dùng tiếp USART chất ghighi (thanh coi thanhbyte ghi TXB Reserved Table đế 65 xác USBS Bittốc Settings dùng lập độvàbaud) Vì thếhiện bit 7thông ghivìnày, tức bit (Transmit không đồng data Buffer) thường RXB được(Reveive thực data Buffer) qua cóngắt, chung địa thếchỉ bit Reserved nhận Data không thiết phải gói bit, với AVR bạn quy định URSEL làđược bit chọn ghi Khighi URSEL=1, ghi Đọc UDR giá1trị đệmdùng liệu nhận, viết giá trịchip vào thường USART nhận liệu 1 thu set 9-bit số lượng bit data 5, 6, 7, (tương tự’ cho hầu hết thiết bị hiếu(Transmit Complete ghi điều khiển UCSRC, bit URSEL=0 UDR •AVR TXC1E Interrupt Enable) Transmitted Data Changed (Output Received of Data Sampled (Input on bit cho phép ngắt hỗ trợ UART khác) Trong truyền thông nối tiếp UART, bit có ảnh hưởng TxDPin) RxD Pin) sử dụng Các ghi e UBRRL vàUBRRH UBRRH -USART Baud tương đương đặtthúc giá trị vào ghibitđệm phát, chuẩn bị đế gởimô UCPOL trìnhghi truyền kết nhỏ (LSB Least Signiíĩcant Bit, bit bên phải) data truyền Rising XCK Edge Falling XCK Edge Rate Register: sau: •tảTrong UDRIE (USART Data Register Empty Interrupt Enable) bit cho phép Falling XCK Edge Rising XCK Edge trước cuối bit có ảnh hưởng lớn (MSB - Most Signiíìcant • UMSEL (USART Mode Select) bit lựa chế độthanh truyền khung truyền sử dụng 5, 69hoặc bit chọn liệu, bit2cao ghi trống 15 14 13ngắt 12 ghi 11 10 liệu UDR Bit, bit bên trái) - thông đồng UBRRH chế độ không đồng vàEnable) không đồng -(Receiver khôngbộđược sửUBRR[11:8] dụng, • UDR RXEN mộtbộ bit Nếu quanUMSEL=0, trọngUBRRL điều khiến nhận UBRR[7:0] Parity bit: parity bit dùng kiếm tra liệu truyền không (một độbạn đồng bộset 5bộ chọn, ngược 2lại UMSEL=1, USART, đề kích hoạt chức nhận dữchế liệu phải bit kích lên RAN RAN RAN RAN adA/Vrite R R R Ryw cách RAN RAN RAN R/W RAN •RANTXENR/W (Transmitter Enable) RAN bit điều khiến phát Set bit lên tương đổi) Có loại parity parity (eventhái parity) lẻ (odd 0 0 0 0 tial Value — Thanh ghi UCSRA chủ yếu chứa chẵn bit trạng bit parity báo trình ghi0 bạn thấpsẽvà cao động quy định Thanh ghi UBRRH 0- Là 0khởi 0bộ phát tốc độ 0USART củabaud parity) Parity chẵn nghĩa sổ lượng số liệu ghi baodữ gồm bittrống parity perating Mode nhận kết thúc (RXC), truyền kết thúc (TXC), báodữ liệu Calculating for dùngEquation chungforđịa ghiEquation UCSRC ta phải set bit RateNgược lại tổng Calculating UBRR số parity lẻ số sốBaud chẵn sổ lượng synchronous (U2X = 0) 1> Value Normal synchronous Double (U2X = 1) sc 10111011 nhị phân, có tất số lẻ Ví dụ, liệu bạn I BRR - f°là Mode BAƯD - ,0SC Speed Mode BAUD » ynchronous Master Mode BAVD m Ị()SC 16( L BRR + 1) Q f 5C ° A 8( L'BRR +• 1) L 46 49 48 4744 4516 BAUD IBRR 2( LBRR + 1) /05c 8BAUD f sc ° 2BALD - BRR - fM(:= 1.0000 MHz Ra te U2X = U2X = 1.8432 MHz U2X U2X fMC = 2.0000 MHz U2X = U2X= - Ví dụ bảng tính tốc độ baud: Table 68 Examples of UBRR Settỉngs for Commonly Useơ Oscillator Frequencies Error Error 25 0.2% 51 0.2% 47 95 51 0.2% 103 0.2% 12 0.2% 25 0.2% 23 47 25 0.2% 51 0.2% -7.0%12 8.5% 0.2% 11 23 12 0.2% 25 0.2% -3.5% 15 -3.5% 16 2.1% 8.5% 8.5% -7.0% -7.0% 12 0.2% 8.5% 8.5% 8.5% 8.5% 8.5% -7.0% 2 8.5% - - - - - Error 11 8.5% - - - - - - - 8.5% - - - - - - - 62.5 kbps 125 kbps - 115.2 kbps - - 230.4 kbps 8.5% 8.5% 125 kbps Error -3.5% 8.5% 8.5% - 250 kbps 0.0% a Khởi tạo USART: - Quá trình khởi tạo USART bao gồm việc thiết lập tốc độ baud, thiết lập - định dạng khung kích hoạt truyền nhận Code Example: void USART_Init( unsigned int baud ) { /* Set baud rate */ ƯBRRH = (unsigned char)(baud»8); UBRRL = (unsigned char)baud; /* Enable receiver and transmitter */ UCSRB = (1«RXEN)|(1«TXEN); /* Set frame íòrmat: 8data, 2stop bit */ UCSRC = (1«URSEL)|(1«USBS)|(3«UCSZ0); } b Truyền liệu: - Bộ truyền USART kích hoạt cách thiết lập bit TXEN ghi UCSRB Khi truyền kích hoạt, chân TxD hoạt động ngõ truyền nối tiếp Tốc độ baud, chế độ hoạt động định dạng khung truyền phải thiết lập trước thực truyền liệuA - Việc truyền liệu thiết lập cách nạp liệu truyền vào đệm truyền Dữ liệu đệm đưa vào ghi dịch ghi dịch sẵn sàng gửi khung Ví dụ hàm truyền USART dựa việc kiểm tra cò UDRE UBRR = Error = 0.0% void USART_Transmit( unsigned char data ) Sử dụng ƯSART: 51 50 Direction, Master SPI Direction, Slave SPI User Detined User Detined User Deíined User Deíined /* Put điều data khiển intobởi buffer Master , sends thetruyền data */thông xảy Master UDR = data; } SPI cách truyền song công (full duplex) nghĩa Slave thời điếm trình truyền nhận xảy đồng thời SPI đôi c Nhận liệu: khinhận đượcUSART gọi chuẩnkích truyền “4 dây” RXEN có đường giao tiếp - Bộ hoạt thông cách đặt bit ghi lên Khi nhận kích hoạt, chân RxD hoạt động ngõ UCRSB chuẩn SCK (Serial MISO Output), vào củanày nhận nối tiếp TốcClock), độ baud, chế(Master độ hoạtInput độngSlave định dạng khung truyền phải thiết lập trước thực truyền liệu - Bộ nhận bắt đầu nhận liệu phát bit start hợp lệ Mồi bit theo sau bit start lấy mẫu tốc độ baud tốc độ đồng hồ XCK, dịch vào ghi dịch nhận phát bit stop Nội dung ghi dịch sau Table 55 SPI Pin Overrides đưa vào đệm Bộ đệm nhận đọc cách đọc UDR Ví dụ sau hàm nhận USART dựa việc kiểm tra cờ kết thúc truyền (RXC): unsigned char USART_Receive( void ) { • SCK: Xung giữ nhịp cho giao tiếp SPI, SPI chuẩn truyền /* Wait for data tođồng be received nên cần*/ đường giữ nhịp, nhịp chân SCK báo while ( !(UCSRA & (1«RXC))); bit liệu đến Đây điểm khác biệt VII SPI: với truyền thông không đồng mà biết chuẩn UART Sự tồn Giói thiệu: chân SCK giúp trình tuyền bị lỗi truyền - SPI (Serial Peripheral Bus)thế chuântốc truyền thôngđộ nối tiếp tốc độ cao hãng Motorola đề xuất Đây kiểu truyền thông Master-Slave, 5352 • MISO- Master Input / Slave Output: chip Master đường Input chip Slave MI so lại Output MISO Master Sĩaves trực tiếp với • MOSI - Master Output / Slave Input: chip Master đường Output chip Sĩave MOSI Input MOSI Master Slaves nối trực tiếp với • ss — Slave Select: ss đường chọn Slave cần giap tiếp, chip Slave đường ss mức cao không làm việc Neu chip Master kéo đường ss Slave xuống mức thấp việc giao tiếp xảy Master Slave Chỉ có đường ss mồi Slave có nhiều đường điều khiến ss Master, tùy thuộc vào thiết kế người dùng - SPI AVR có đặc điểm sau: • Chế độ truyền song công với đường liệu • Điều khiến hai chế độ Master Slave • bit lập trình giá trị khác • Ket thúc trình chuyến đối cờ ngắt • Chế độ ghi tránh xung đột • Thay đối trạng thái nghỉ • Tốc độ truyền đạt đến lần chip Master b Hoạt động: Figure 66 SPI Master-Slave Interconnection 54 MSTR CPOL Read/Write R/W R/W R/W R/W R/W R/W R/W 0 0 0 CPOL DORD SPE ial Value 0 í SPÍẼ CPHA Leading Edge SPR1 SPRO I R/W Trailing Edge Falling SơRising đồ khối: Table 58 Relationship Betvveen SCK SPDR, and the Frequency từ Master lun hay lưu sẵn Rising -Falling Mồi chip Master Slave có ghi Oscillator ghi liệu liệu bits Cứ xung Figure 65 SPI Block Diagram • Bit 7- SPIE (SPI Interrupt Enable) bit cho phép ngắt SPI Nếu bit CPHA Leading Edgedo Master tạo Trailing Edgegiữ nhịp SCK, bit ghi nhịp đường set bit I ghi trạng thái set Sample SPDR truyền cho Master.Setup (sei), ngắt xảy sauSample gói liệu truyền Setup d Table Chế độ truyền nhận dữFunctionality liệu: liệu Master truyền qua Slave đường MOSI, đồng thời 59.của CPOL and CPHA SPR1 SPRO SCK Frequency nhận SPI2X bit 0 • Bit - SPE (SPI Enable) set bit lên phép SPI hoạt ghi liệu chip Slave truyền qua Master động Neu SPIE=0 module SPI dừng hoạt động đường MISO Do gói liệu chip gởi qua lại đồng thời nên 1 • Bit - DORD (Data Order) bit định thứ tự liệu bit 0 trình truyền liệu gọi “song công” truyền nhận đường MISO MOSI, DORD=0 1 - Cực xung giữ nhịp, phase chế độ hoạt động: cực xung giữ SPSR - SPI0 Status Register: bit 1 nhịp (Clock Polarity) gọi tắt CPOL khái niệm dùng trạng Figure 67 SPI Transíer Format with CPHA = sổ3lớn truyền trước (MSB) ngược lại có trọng liệu 10 SPSR tháiỊ^SPỊF^ SPI2X DORD=l, bit LSB truyền trước ad/Write R R R R R củaR chân SCK trạng thái nghỉ R/W Ở trạng thái nghỉ (Idĩe), chân SCK tial Value 0 (Master/Slave 0 Select) •0 Bit 40 - MSTR MSTR =1 chip nhận 4giữ mức 2(CPOL=l) thấp cao (CPOL=0) Phase (CPHA) dùng SPIINTERRUPT INTERNAL - Là 1diện ghi trạng thái module SPI Trong ghi có LSB SPDR Master, ngược lại MSTR=0 Slave REQUEST DATA BUS chip đế mà R/W liệu (sample) theo xung giữ nhịp Dữ ad/VVrite R/W R/Wbit R/Wcách R/W R'W lấy mẫuR/W dụng •SCK vàX(chân sử - CPOL CPHA X X XBit- X X X Undefined X bit xác lập cực xung PB7 8) tial Value liệu Leading Edge Trailing Edge SPI Mode • nhịp Bit 7và - SPIF sample cờ báo SPI, liệu đãkhảo đượcsát truyền giữ cạnh liệu mà gói MISO PB6 (chân 7) Table 56 CPOL Functionality lấy mẫu cạnh lên SCK (CPHA=0) cạnh xuống CPOL = 0, CPHA = Sample (Rising) (Falling) nhận tù’Setup SPI, bit SPIF tự' động set len MOSI PB5 (chân 6) CPOL = 0, CPHA = Setup (Rising) (CPHA=1) Sample Sự kết(Falling) hợp SPOL1và CPHA làm nên chế độ hoạt động • Bit WCOL bít báo va chạm CPOL = 1, CPHA = Sample liệu (Write Coĩision), bit ss -(Falling) PB4 (chân 5)Setup (Rising) SP1 Nhìn chung việc chọn chế độ không ảnh hưởng CPOL = 1, CPHA = Setup (Falling) Sample ta cố tình viết gói liệu AVR set (Rising) lên chúng Table 57 vàoCPHA Functionality 68 SPI Transterkhiển FormatSPI: with CPHA = Figure Các thanhghi ghiđiều liệu SPDR trình truyền nhận trước SPI AVR vận hành ghi bao gồm ghi điều khiến chưa SPCR , ghi trạng thái SPSR ghi liệu SPDR kết thúc •• Bit CPR1:0 bit SPI2X Bit1:0 SPI2X gọihai bit bit nhânkết đôihợp tốc với độ truyền, bittrong kết hợp với ghi tốc độtất giao tiếp SPI, - Là 1SPSR thanhcho ghiphép bit chọn điều khiến hoạt độngtốc củađộSPI gồm bit môđược tả sau: xác lập dựa - Là ghiđộdữnguồn liệu SPI.clock Trênchia chipcho Master, giáchia trị vào ghi tốc xung ghi hệ số SPDR kích trình tuyền thông SPI Trên chip Slave, liệu nhận 56 59 58 55 57 Sử dụng SPI: a Khởi tạo SPI: - Trước truyền nhận SPI cần khởi động SPI, trình khởi động thường bao gồm chọn hướng giao tiếp cho chân SPI, chọn loại giao tiếp: Master hay Slave, chọn chế độ SP1 (SPOL, SPHA) chọn tốc độ giao tiếp Truyền thông SPI khởi xướng chip Master, Master muốn giao tiếp với Slave đó, kéo chân ss Slave xuống mức thấp (gọi chọn địa chỉ) sau viết liệu cần truyền vào ghi liệu SPDR, liệu vừa viết vào SPDR xung giữ nhịp tự động tạo SCK trình truyền nhận bắt đầu Đổi với chip Slave, chân ss bị kéo xuống sẵn sàng cho trình truyền nhận Khi phát xung giữ nhịp SCK, Slave bắt đầu sample liệu đến đường MO SI gởi liệu di MISO - Code Example: void SPIMasterlnit(void) { /* Set MOSI and SCK output, all others in D D R S P l = (l«DD_MOSI)|(l«DD_SCK); /* Enable SP1, Master, set clock rate fck } SPCR = (1«SPE)|(1«MSTR)|(1«SPR0); void SPI Slavelnit(void) { /* Set MI SO output, all others input */ 60 ansmitter ceiver Description The device that initiates and terminates a transmission The Master also generates the SCL clock The device addressed by a Master The device placing data on the bus b Thực trình giao tiếp: The device reading data from the bus Pigure 76 TWI Bus Interconnection - Code Example: void SPI_MasterTransmit(char cData) { /* Start transmission */ SPDR = cData; /* Wait for transmission complete Table 72 TWI Terminology */ while(!(SPSR & (1«SPIF))) } char SPI SlaveReceive(void) { Một giao tiếp I2C gồm có dây: Serial Data (SDA) Serial Clock (SCL) /* Wait complete */ đường truyền xung SDA đường truyềnfordữreception liệu hướng, SCL while(!(SPSR & (1«SPIF))) đồng hồ theo hướng Như hình vẽ trên, thiết bị ngoại vi kết /* Return data register */ n return SPDR; Figure Data Validity ối }vào77 đường I2C chân SDA nối với dây SDA bus, chân VII TWI-I2C: Giói thiệu: - TWI (Two-Wire Serial Intereafce) module truyền thông nối tiếp đồng chip AVR dựa chuẩn truyền thông I2C I2C viết I2Ctắc Atmega 16 có đặc điếm sau: từ Inter-Integrated Circuit truyền hãng điện •của Hoạt động đon giản, hiệu quảlàkết nốichuẩn đơn giản thông với bus •tử Hồ trợ chế độ Master Slave Semiconductor sáng lập xây dựng thành chuẩn năm 1990 •Philips bit địa chọn chế độ Slave •Phiên Nhiều chế độ lựa chọn Master I2C V3.0 phát hành năm 2007 I2C dùng để điều • Tốc độ truyền cực đại có the lên tới 400KHz 62 61 • Chế độ chống nhiễu bus Một số khái niệm I2C: • Master: chip khởi động trình truyền nhận, phát địa thiết bị cần giao tiếp tạo xung giữ nhịp đường SCL • Slave: chip có địa cố định, gọi Master phục vụ yêu cầu tù' Master • SDA- Serial Data: đường liệu nối tiếp, tất thông tin địa hay liệu truyền đường theo thứ tự’ tùng bit Bit có trọng số lớn (MSB) truyền trước nhất, đặc điếm ngược lại với chuân USART • SCL -Serial Clock: đường giữ nhịp nối tiếp I2C chuần truyền thông nối tiếp đồng bộ, cần có đường tạo xung giữ nhịp cho trình truyền/nhận, xung đường giữ nhịp SCL, bit liệu đường SDA lấy mẫu (sample) Dữ liệu nối tiếp đường SDA lấy mẫu đường SCL mức cao chu kỳ giữ nhịp, đường SDA không đổi trạng thái SCL mức cao (trừ START STOP condition) Chân SDA đổi trạng thái SCL mức thấp • START Condition: từ trạng thái nghỉ, SDA SCL mức cao Master muốn truyền liệu Master kéo chân SDA xuống thấp SCL cao • STOP Condition: sau thực truyền/nhận liệu, 63 1 TVVBR7 TVVBRO I TWBR ad/YVrite R/W R/W R/W R/W R/W R7W R;W R/W tial Value 0 0 0 0 CPU Clock írequency [MHz] 16 ad/VVrite tia! Value TWBR 12 TWPS SCL írequency [kHz] 400 72 100 16 Sơ đồkết khối: thúc truyền/nhận mà Master không gởi STOP condition lại gởi 14.4 10 400 84 the TWI100 Module 64Figure thêm 1Overvievv STARTofcondition gọi 14.4 12 10 12 52 10 32 12 3.6 10 10 10 TVVINT R/W R/W 100 (I2C), 0tất thiết-222 bị (chip) Master hay Slave Mỗi 100 100 thiết bị có địa cố định gọi Device address Khi Master 100 Slave đó, trước hết tạo START muốn0giao tiếp với -55 condition gởi địa Device address Slave cần giao TVVSTO R/W -333 Address Packet Format - Định dạng gói địa chỉ: mạng TWI TVVSTA TWEA REPEAT START -28 TWEN - TWIE 0 TWCR tiếp trênR đường vìRA/V xuất khái niệm “gói địa chỉ” R/W truyền, R R/W 0 (Address Packet) Gói địa TWI (I2C) có định dạng bits bit đầu (gọi SLA, gởi liền sau START condition) chứa địa Slave, bit READAVRITE bit ACKb TWCR (TWI Control Register): Ackknowledge (xác nhận) Do bit địa có độ dài bits nên mặt lý thuyết, mạng TWI (I2C) tồn tối đa 27=128 thiết bị - Là ghi bit điềubiệt khiển hoạt động I2C Các bit mô tả có địa riêng sau: Figure 81 Typical Data Transmissỉon / X x~b X I2C: X\ Các ghi điều khiển f • Bit 7- TWINT (TWI Interrupt Flag): bit tự động set lên ASC' MSB AaaaSB R'W ACK ị » TWI kết Ị thúc trình (như phát/nhận START, phát nhận địa ) - Là ghi bit quy định tốc độ phát xung giữ nhịp đuờng SCL • Bit - TWEA (TWI Enable Acknowledge Bit): bit kích hoạt tín chip Master Tốc độ phát xung giữ nhịp đuợc tính theo công thức: hiệumột xác I2C: nhận Đổi với chip Slave, bit set tín hiệu Cấu trúc SCL írequency = ^CỊọckừggụ^ xác nhận ACK gởi trường hợp sau: địa 16+2(TWBR)-4 Master phát trùng khớp với địa Slave; gọi Trong CPU Clock írequency tần số hoạt động AVR, chung TWBR xảy Slave cho phép gọi chung; liệu giá trị thi TWBR TWPS giá trị bits TWPS1 TWPS0 nằm thi trạng thái TWSR Hai bits đuợc gọi bit Slave nhận từ Master Khi set chip chế độ Slave, prescaler, cần thông thường người ta hay set TWPS1:0 =00 để chọn Prescaler (40=1) set bit đế đáp ứng lại Master 66 64 65 STOP TWS6 TWS5 TWS4 TWS3 - ^TWPS0j TWSR ad/VVrite R R R R R R RíW R/W tĩal Value 1 1 0 TWPS1 TVVPSO Prescaler Value 1 0 1 đế báo cho Slave nhận muốn tiếp tục nhận từ 16 Slave TWSR - TWI Status64Register: •4 Bit 53 - TWSTA (TWI START Condition Bit): bit tạo START 1c TWD6 ad/Write R/W tial Value ad.'Write R;W tial Value TWD5 TWD4 TWD3 TWD2 TWD1 TWD0 TWDR R/W R/W R/W chip muốn R/W condition Khi trở thành Master đế thực 1 1 d Là ghi bit trong1 có bit chứa code trạng thái TWI 2 TWA5 TWA4 TWA3 TWA2 TWA1 TVVGCE TVVAO I TWAR bit R/W R/W R;Wgọi, bit R/W RAV R/W set R/wmột START condition tạo cần 1 chọn1prescaler 1 đường truyền đường truyền rỗi Table 73 TWI Bít Rate Prescaler e Chọn prescaler: • Bit - TWSTO (TWI STOP Condition Bit): bit tạo STOP R/W R/W R/W condition cho TWI Khi Master muốn kết thúc gọi, phát STOP condition cách viết giá trị vào bit TWSTO Slave tác động vào bit này, gọi bị lỗi, viết vào TWSTO Slave reset đường truyền trạng thái rỗi ban đầu • Bit - TWWC (TWI Write Coììision Flag): cờ TWINT f thấp túcRegister: TWI bận, viết liệu vào TWDRmức - TWI Data ghi thìcủa lỗi xảy ra, bit nhận, TWWC động - Là thanhdữ ghiliệu (TWDR) liệu TWI Trong trình dữtựliệu nhận set lên TWDR Vì thế, Trong bittrong TWINT cần lưu trình trình truyền gởi, dữdữ liệuliệu, chứa TWDR được chuyển đường SDA mức cao ghi liệu vào ghi TWDR sau xóa e TWAR -giữ TWI Address Register: liệu sẵn sàng • Bit - TWEN (TWI Enable Bit): bit kích hoạt TWI AVR, - Là ghi chứa sàng chip Slave TWEN đượcdevice set lênaddress 1, TWI sẵn hoạt động • Bit - Reserve: không sử dụng • Bit - TWIE (TWI Interrupt Enable Bit): bit cho phép ngắt TWI, Sử dụng khiTVVI-I2C: bit set đồng thời bit I ghi trạng a Quá trình giao tiếp: thái - Truyềnchung liệu từ chủ : TWI xảy bit TWINT set set,đến mộttớngắt • Master xung START 68 67 • Khi nhận ACK Master bắt đầu gửi liệu byte bus kèm theo ACK • Ket thúc trình giao tiếp bit STOP Đọc liệu từ ĩave: • Master tạo xung START • Master gửi địa đến Slave R/W=l xung ACK • Khi nhận ACK Slave bắt đầu gửi liệu byte bus 69 KÉT LUẬN Qua đề tài tìm hiểu MCU AVR nhóm chúng em học thêm nhiều kiến thức Quá trình tìm hiểu nhóm thực số demo nhỏ led đơn, LCD, ADC Tuy nhiên kiến thức nhiều hạn chế nên đề tài chưa mở rộng với ứng dụng thực tế Trong thời gian tới nhóm cố gắng tìm nhieu nhiều úng dụng cụ Em xin gửi lời cám ơn chân thành đến thầy Lê Hoài Nghĩa xin chúc thầy sức khỏe TẢI LIÊU THAM KHẢO: Datasheet Atmel 70 [...]... ghi Interrupt MCUCR chứa sei(); //set bit I cho phep ngat toan cuc TIMER0 COMP Timer/CounterO Compare Match hoạt MODE trên cho các ngắt ngoài MCUCR là một thanh ghi 8 bit nhưng S01E 16 ADC TCCR0=(1«CS01);// Conversion Complete ADC lúc thìngắt: CPU sẽ lưu Register: USARỊ TXC USART Tx Complete $01 c 15 SM2 PORTB=OxOO; S01A 14 thực hiện ngắt USART UDRE USART Data Register Empty a MCUCR - MCU Control $018... Request 0 External Interrupt Request 1 b.INT1 MCUCSR - MCU and Status Register: • Low level - Điện ở chân ngăt xuông mức logicvụ0 V tới vector phucControl vụ ngắt vàáp thức hiện chương trình phục ngắt đó chơ Code Example: TIMER2 COMP Timer,'Counter2 Compare Match • AnyOverflcw change - Bất kì sự thay đổi điện áp từ chân ngắt tới TIMER2 OVFTimer/Counter2 #include TIMER1 CAPT Timer/Counterl •gặp... khiển bởi in r17 PINx - Cấu trúc chân của AVR có thế phân biệt rõ chức năng (vào ra) trạng thái (0 các bô thanh ghi sau: thanh ghi dữ liệu cống PORT, thanh ghi dữ liệu điều 1) từ đó ta có 4 kiểu vào ra cho một chân của avr Khác với 89 là chỉ có 2 khiến cống DDR và cuối cùng là địa chỉ chân vào của cống PIN trạng thái duy nhất (0 1) Đặc biệt nguồn từ chân của AVR đủ khoẻ đế 0x00 a Thanh ghi DDR: điều... ngắt ngoài - Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình 4 3 2 1 0 4 Thiết5lập ngắt sẵnngoài: sàng cho đối ISC2 - trạngJTRF BORF Edữ XTRF liệu của PORFmình I MCUCSRVí dụ: Khi bộ truyền nhận Re3i'Wrìte R.'W R R'W35 Interrupt RA/V RA/V R.'W R.'W Table 0 Sense Control Step 1: chọn chế độ ngắt trong than ghi MCUCR Irutia' Va je 0 0 0 UART Sss B1 Des; 2 Ngắt ngoài Atmega 16: Step... SởPrescaler dĩ có bit Select này làBits): vì ADC AVR có • Bit 2:0quả - ADPS2:0(ADC các trên bit chọn hệ độ số phân chia • Độ phân giải 10 bit giải 10 bit,cho nghĩa là kết quảcũng thu được saucả chuyến đối là 1khác số cótrên độ dài 10 xung ADC, như tất các module AVR, • Sainhịp số tuyến ADC tính: 0.5LSB b ADCSRA (ADC Control andbố Status2 RegisterA): bitđược (tối đa AVR thanh ghiclock data Xung 8 bit đế chứa... USART trong AVR, đường truyền luôn ở trạng thái khung stopthông, bit luôn là giá bit trị nghỉ (Idle)dùng và là trong ngượclúc với đóng vaitruyền.Giá trò bit thứtrị 9của truyền nhưng này được 0 1-bit cao khi nghỉ (Idle), một muốnkích thực hiệnchế việcđộtruyền • UCPOL (Clock Pority)nếu là bit chỉchip cực AVR của xung trong truyềndữ liệu 1 giá trị dữ củaliệu start bit,2-bit giá trị stop bit trong AVR luôn... 6 4 tín hiệu 3 1 0 dừng công việc dạng thực hiện lại - 5 Khi có báo2 ngắt CPU sẽ tạm 1 The rising edge of INTO generates an interrupt request 1 Bit RaaửVVríte Irvtiai Va J0 ũ 6 1 INT1 INTO R:W 0 INT2 RW R R R IVSEL R/W 0 0 0 0 0 2928 2267 IVCE I GICR R/W 0 volatile int8 t val=0 int main(void){ DDRD=0x00; //khai báo PORTD là Input đế sử dụng 2 chân ngắt PORTD=OxFF; //sử dụng MCUCR|=(1«ISC11)|(1«ISC01);... 4 -Các chân khác: X-register Byte X-register Byte Y-register Byte Y-register Byte Z-register Byte Z-register Byte Low sốvcc, AVCC, AREF, XTAL1, XTAL2, RESET Các khối chính: III Block Diagram of the AVR MCU Architecture High Low High Low High - Một 8 bit output toán hạng và một 8 bit cho input kết quả - Hai 8 bit output toán hạng và một 8 bit cho input kết quả • C: Carry Flag -ỳ cờ nhớ Hai 8 bit cho... ghihai chính khiển hoạt động và chứa trạng thái của module • Có chếđiều độ chuyển đổi free run về phía trái trong khi cũng có trường hợp người dùng muốn kết quả ADC ADC Prescaler Selections •Table Có 85 nguồn báo ngắt khi hoàn thành nằm • Bit 7 - ADEN(ADC Enable): viết giá trị 1 vào bit này tức bạn đã cho về phía phải Bit ADLAR sẽ quyết định vị trí của 10 bit kết quả trong 16 phép module ADC được sử... được sử dụng Tuy nhiên khi ADEN=1 không có bitthanh của 2ghi thanh ghi data.ADC: Neu ADLAR=0 kết quả sẽ được hiệu chỉnh về 3 Các điều khiển nghĩa là ADC đã hoạt động ngay, bạn cần set một bit khác lên 1 đế bắt phía phải ghi trên ADCL chứa trọn thanh ADCH Có 4 thanh trong(thanh bộ ADC AVR trong đó8cóbit2 thấp thanhvàghi data ghi chứa dữ đầu quá trình chuyến đối, đó là bit ADSC liệu chứa 2 bit cao trong ... THIỆU AVR MCU ATMEL I Tổng quan AVR: Giới thiệu: - AVR họ vi điều khiến hãng Atmel sản xuất Atmel cung cấp vi điều khiển phổ biến 8051, AT91 ARM7, Atmeĩ AVR 8-bit RISC, DSP dual-CPU AT57 Atmel AVR3 2...MỤC LỤC &1 - GIỚI THIỆU AVR MCU ATMEL .01 • I - Tổng quan AVR .01 Giới thiệu 01 ưu MCU AVR 01 &2 - ATMEGA16 -... nhận ACK Slave bắt đầu gửi liệu byte bus 69 KÉT LUẬN Qua đề tài tìm hiểu MCU AVR nhóm chúng em học thêm nhiều kiến thức Quá trình tìm hiểu nhóm thực số demo nhỏ led đơn, LCD, ADC Tuy nhiên kiến thức