Báo cáo MẠCH ATS sử DỤNG VI điều KHIỂN ATMEGA16

102 255 10
Báo cáo MẠCH ATS sử DỤNG VI điều KHIỂN ATMEGA16

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang CHƯƠNG 1: VI ĐIỀU KHIỂN AVR_ATMEGA16 Loại vi điều khiển họ AVR RISC công ty Atmel sản suất, với kiến trúc RISC (Reduce Instruction Set Computer) 1.1 CÁC ĐẶC ĐIỂM CHÍNH: Kiến trúc RISC với hầu hết lệnh có chiều dài cố định, truy nhập nhớ nạp – lưu trữ 32 nghi đa Có nhiều phận ngoại vi chip, bao gồm: Cổng và/ra số, biến đổi ADC, nhớ EEFROM, định thời, điều chế độ rộng xung (PWM), … Hầu hết lệnh thực chu kỳ xung nhịp Hoạt động với chu kỳ xung nhịp cao, lên đến 20 MHz tuỳ thuộc loại chip cụ thể Bộ nhớ chương trình nhớ liệu tích hợp chip Khả lập trình hệ thống, lập trình cấp nguồn mạch không cần phải nhấc chip khỏi mạch Hỗ trợ cho việc lập trình ngôn ngữ bậc cao – ngôn ngữ C GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 1.2 SƠ ĐỒ CHÂN VI ĐIỀU KHIỂN ATMEGA16 GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 1.3 CÁC ĐẶC TÍNH: Hiệu cao, tiêu thụ lượng Kiến trúc RISC 130 lệnh, hầu hết lênh thực chu kỳ 32 Thanh ghi 8-bit đa Tốc độc thực lên tới 16 triệu lệnh giây với tần số 16 MHz Có nhân, thực thời gian chu kỳ Các nhớ chương trình liệu cố định 16 Kb nhớ flash có khả tự lập trình hệ thống Có thể thực 1.000 lần ghi/xoá 512 bytes EEFROM Có thể thực 100.000 lần ghi /xoá 1Kb SRAM bên Lập trình khoá an ninh phần mềm Ghép nối ngoại vi định thời/ đếm bit với chế độ tỷ lệ định trước chế độ so sánh định thời/ đếm 16 bit với chế độ tỷ lệ định trước riêng biệt, chế độ so sánh chế độ bắt giữ Bộ thời gian thực với tạo dao động riêng biệt kênh PWM kênh, ADC 10 bit Giao diện nối tiếp dây hướng tới byte Bộ truyền tin nối tiếp USART khả trình Giao diện SPI chủ / tớ Watchdog Timer khả trình với tạo dao động bên riêng biệt Các đặc điểm đặc biệt khác Power-on Reset dò Brown-out khả trình Bộ tạo dao động định cỡ bên Các nguồn ngắt bên bên chế độ ngủ: Nhàn rỗi, giảm ồn ADC, tiết kiệm lượng, giảm lượng tiêu thụ, chờ I/O loại: 32 đường I/O khả trình Điện áp hoạt động: 4.5- 5.5 V GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 1.4 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN ATMEG16 Hình 1.4 Sơ đồ khối vi điều khiển Atmega16 GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang ATmega16 vi điều khiển bit dựa kiến trúc RISC Với khả thực lệnh vòng chu kỳ xung clock, ATmega16 đạt tốc độ 1MIPS MHz(1 triệu lệnh /s/MHz) Atmega16 có đặc điểm sau: 16 KB nhớ Flash với khả đọc ghi, 512 byte nhớ EEPROM, 1KB nhớ SRAM, 32 ghi chức chung, 32 đường vào chung, định thời/bộ đếm, ngắt nội ngắt ngoại USART, giao tiếp nối tiếp dây, kênh ADC 10 bit,… Atmega16 hỗ trợ đầy đủ chương trình công cụ phát triển hệ thống như: trình dịch C, macro assemblers, chương trình mô phỏng, sửa lỗi, kit thử nghiệm… Mô tả chân VCC: Điện áp cung cấp số GND: Chân nối đất PORT B: (PB7:0) Port B cổng I/O 8-bit hai chiều với điện trở pull-up bên (được lựa chọn cho bit) Bộ đệm đầu Port B có đặc tính điều khiển cân tín hiệu source sink Khi tín hiệu đầu vào, chân cổng B tiêu thụ dòng điện trở pull-up bên kích hoạt Các chân Port B trạng thái có tín hiệu reset kích hoạt, chí đồng hồ không chạy PORT C: (PC7:0) Port C cổng I/O 8-bit hai chiều với điện trở pull-up bên (được lựa chọn cho bit) Bộ nhớ đệm đầu Port C có đặc tính điều khiển cân tín hiệu source sink Khi tín hiệu đầu vào, chân cổng C tiêu thụ dòng điện trở pull-up bên kích hoạt Các chân Port C trạng thái có tín hiệu reset kích hoạt, chí đồng hồ không chạy PORT D: (PD7:0) Port D cổng I/O 8-bit hai chiều với điện trở pull-up bên (được lựa chọn cho bit) Bộ đệm đầu Port D có đặc tính điều khiển cân tín hiệu source sink Khi tín hiệu đầu vào, chân cổng D tiêu thụ dòng điện trở pull-up bên kích hoạt Các chân Port D trạng thái có tín hiệu reset kích hoạt, chí đồng hồ không chạy GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang AVCC : AVCC chân cấp điện cho cổng A biến đổi A/D Nó nối nội đến VCC trường hợp ADC không sử dụng Nếu ADC sử dụng, phải nối với VCC qua lọc thông thấp AREF:AREF chân tín hiệu tham chiếu analog nối vào biến đổi A/D XTAL1, XTAL2 chân tạo dao động cho vi điều khiển , chân nối với thạch anh RESET : Đây chân reset cứng khởi động lại hoạt động hệ thống 1.5 KIẾN TRÚC CỦA VI ĐIỀU KHIỂN AVR 1.5.1 Cấu trúc tổng quát Hình 1.5.1 Sơ đồ cấu trúc CPU ATmega16 Để tối đa hoá hiệu tính song song, AVR sử dụng kiến trúc Harvard với nhớ riêng biệt BUS cho chương trình liệu Các câu lệnh nhớ chương trình hoạt với đường ống lệnh mức đơn Trong lênh thực hiện, lệnh nạp trước vào từ nhớ chương trình Điều làm cho lệnh thực chu kỳ đồng GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang hồ Bộ nhớ chương trình nhớ In-System Reprogrammable Flash Tập ghi truy cập nhanh bao gồm 32 ghi bit với thời gian ttruy cập chu kỳ đơn Điều cho phép ALU hoạt động chu kỳ đơn Một thao tác điển hình với toán hạng ALU, toán hạng lấy từ tệp ghi để thực hiện, và kết lưu trữ lại tệp ghi chu kỳ đồng hồ số 32 ghi sử dụng ghi trỏ địa gián tiếp 16 bit để vào vùng liệu phục vụ cho tính toán địa hiệu dụng Một trỏ địa sử dụng làm trỏ địa trỏ vào bảng liệu nhớ chương trình Flash Các ghi X, Y Z ALU thực phép toán logíc số học ghi ghi với số Cũng thao tác với thanh ghi đơn ALU Sau thực phép toán số học, ghi trạng thái cập nhật thông tin kết thực Dòng chương trình điều khiển phép nhảy có điều kiện không điều kiện đến lệnh gọi, đến địa trực tiếp không gian địa Hầu hết lệnh AVR thực với liệu 16 bit Mỗi địa nhớ chương trình chứa lệnh 32 bit 16 bit Không gian nhớ chương trình Flash chia thành vùng, vùng chương trình boot vùng chương trình ứng dụng, hai vùng có bit khoá chuyên dụng để bảo vệ cho việc ghi đọc/ghi Lệnh SPM dùng để ghi vào vùng nhớ ứng dụng phải có vùng chương trình boot Trong thực ngắt thường trình, địa trở đếm chương trình (PC) lưu trữ stack Nhìn chung stack định vị SRAM, kích cỡ stack giới hạn kích cỡ toàn SRAM, cách sử dụng SRAM Tất chương trình người sử dụng phải khởi tạo SP thường trình reset (trước thường trình ngắt thược hiện) SP trỏ vào không gian I/O SRAM truy cập cách dễ dàng thông qua chế độ địa khác hỗ trợ kiến trúc AVR Không gian nhớ kiến trúc AVR đồ nhớ thông thường tuyến tính Một module ngắt linh động có ghi điều khiển không gian I/O với thêm vào bit khởi tạo ngắt toàn cục ghi trạng thái Tất ngắt có vector ngắt riêng biệt bảng vector ngắt Các ngắt có mức độ ưu tiên theo vị trí vector ngắt tương ứng Mức có địa thấp có quyền ưu tiên cao Không gian nhớ I/O có 64 địa cho chức ngoại vi CPU ghi điều khiển, SPI, chức I/O khác Bộ nhớ I/O truy cập trực tiếp, vị trí không gian liệu theo chúng tệp ghi, $20-$5F Thêm vào đó, có không gian I/O mở rộng từ $60 đến $FF SRAM, không gian có lệnh ST/STS/STD LD/LDS/LĐ sử dụng GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 1.5.2 ALU– Arithmetic Logic Unit - Đơn vị xử lý số học logic ALU làm việc trực tiếp với ghi chức chung Các phép toán thực chu kỳ xung clock Hoạt động ALU chia lam loại:đại số, logic theo bit Một số phép xử lý kiến trúc cung cấp nhân số có dấu dấu dạng phân số 1.5.3 Thanh ghi trạng thái (SREG - Status Register) Đây ghi trạng thái có bit lưu trữ trạng thái ALU sau phép tính số học logic Các thông tin sử dụng để điều khiển chương trình Trong nhiều trường hợp, điều bỏ cần thiết sử dụng câu lệnh so sánh chuyên dụng, kết nhanh đoạn chương trình ngắn gọn Thanh ghi trạng thái không tự động lưu trữ nhập vào môt chường trình ngắt lưu trữ trở từ ngắt Điều phải quản lý phần mềm Thanh ghi trạng thái AVR – SREG - định nghĩa sau: Hình 1.5.2Thanh ghi trạng thái SREG C: Carry Flag, cờ nhớ (nếu phép toán có nhớ cờ thiết lập ) Z: Zero Flag, cờ zero(nếu kết phép toán 0) N: Nagative Flag(nếu kết phép toán âm) V: Two’s complement overflow indicator(cờ thiết lập tràn số bù 2) H: Half carry Flag ( báo cho thấy mang sang (nhớ) nửa số lệnh số học) T: Bit copy Storage (được sử dụng với lệnh nạp bit BLD (bit load) lưu trữ bit BST (bit store) để nạp lưu trữ bit từ ghi vào ghi khác I: Global Interrupt Enable (cho phép ngắt toàn cục Nếu bit trạng thái logic ngắt phục vụ) Bit cho phép ngắt toàn cục phải đặt ngắt hoạt động Điều khiển hoạt động ngắt riêng biệt thực ghi điều khiển riêng biệt Nếu ghi cho phép ngắt toàn cục xóa, ngắt riêng biệt hoạt động Bit I xóa phần cứng sau ngắt xảy đặt lệnh RETI phép ngắt hoạt động Bit I đặt xóa câu lệnh SEI CLI ứng dụng GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 1.5.4 Các ghi chức chung (General Purpose Register File) Hình 1.5.3 Thanh ghi chức chung Hầu hết lệnh thực với tệp ghi có truy cập trực tiếp tới tất ghi, hầu hết chúng lệnh đơn chu kỳ Mỗi ghi định địa nhớ liệu, bố trí chúng trực tiếp vào 32 vị trí không gian liệu người sử dụng Mặc dù thực theo luật vị trí SRAM, tổ chức nhớ cho phép linh động cao truy cập ghi, ghi trỏ X,Y,Z đặt vào danh mục ghi tệp The X-register, Y-register and Z-register Các ghi R26 R31 có thêm chức ngoài, việc sử dụng ghi đa Các ghi trỏ địa 16 bit cho chế độ địa gián tiếp không gian liệu ghi địa gián tiếp X, Y, Z mô tả như hình: GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 10 Hình 1.5.4 Các ghi X, Y Z Trong chế độ địa khác, ghi địa có chức độ lệch cố định, tự động tăng tự động giảm 1.5.5 Con trỏ ngăn xếp(SP- Stack Pointer) Là ghi 16 bit xem ghi chức đặc biệt bit Có địa ghi chức đặc biệt $3E (trong nhớ RAM $5E) có nhiệm vụ trỏ tới vùng nhớ RAM chứa ngăn xếp Hình 1.5.5 Thanh ghi trỏ ngăn xếp Khi chương trinh phục vụ ngắt chương trình trỏ PC lưu vào ngăn xếp trỏ ngăn xếp giảm hai vị trí Và trỏ ngăn xếp gảm thực lệnh push Ngược lại thực lệnh POP trỏ ngăn xếp tăng thực lệnh RET RETI trỏ ngăn xếp tăng 2.Như trỏ ngăn xếp cần chương trình đặt trước giá trị khởi tạo ngăn xếp trước chương trình gọi ngắt cho GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 88 sbrs r16, jmp chk_m1 sbrs r16, jmp chk_m1 sbr r16, 0b00000001 sts data_range, r16 lds r16, Led2 cbr r16, 0b01000000 sts Led2, r16 RET chk_m1: cbr r16, 0b00000001 sts data_range, r16 lds r16, Led2 sbr r16, 0b01000000 sts Led2, r16 RET ;+++++++++++++++++++++++++++++ Gen_source: ; clr r16 sbis Range, OvG ;=0 > fault jmp Ov_gen_clr jmp Ov_gen_set ;+++ Under_check_gen: sbis Range, UndG;=0 > fault jmp Uv_gen_clr jmp Uv_gen_set ;+++ Source_gen_check: jmp Check_Gen ;+++ Ov_gen_clr: ;jmp test5 clr r16 sts moddelay2c, r16 lds r16, data_range sbrs r16, jmp Under_check_gen ;+++++++++check balance & delay 1/10 lds r16, moddelay1c sbrc r16, jmp OvG_delay1c ldi r16, $5 sts datadelay1c, r16 GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 89 lds r16, moddelay1c sbr r16, 0b00000101 sts moddelay1c, r16 OvG_delay1c: ;+++++ sbrs r16, jmp Under_check_gen cbr r16, 0b00000111 sts moddelay1c, r16 test5: ;+++++++ lds r16, data_range cbr r16, 0b00100000 sts data_range, r16 lds r16, Led2 cbr r16, 0b00001000 sts Led2, r16 jmp Under_check_gen ;++++ Ov_gen_set: ;jmp test6 clr r16 sts moddelay1c, r16 lds r16, data_range sbrc r16, jmp Under_check_gen ;+++++++++check balance & delay 1/10 lds r16, moddelay2c sbrc r16, jmp OvG_delay2c ldi r16, $5 sts datadelay2c, r16 lds r16, moddelay2c sbr r16, 0b00000101 sts moddelay2c, r16 OvG_delay2c: ;+++++ sbrs r16, jmp Under_check_gen cbr r16, 0b00000111 sts moddelay2c, r16 test6: ;++++ lds r16, data_range sbr r16, 0b00100000 sts data_range, r16 GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 90 lds r16, Led2 sbr r16, 0b00001000 sts Led2, r16 jmp Under_check_gen ;+++ Uv_gen_clr: ;jmp test7 clr r16 sts moddelay2d, r16 lds r16, data_range sbrs r16, jmp Source_gen_check ;+++++++++check balance & delay 1/10 lds r16, moddelay1d sbrc r16, jmp UvG_delay1d ldi r16, $5 sts datadelay1d, r16 lds r16, moddelay1d sbr r16, 0b00000101 sts moddelay1d, r16 UvG_delay1d: ;+++++ sbrs r16, jmp Source_gen_check cbr r16, 0b00000111 sts moddelay1d, r16 ;+++ test7: lds r16, data_range cbr r16, 0b01000000 sts data_range, r16 lds r16, Led2 cbr r16, 0b00000100 sts Led2, r16 jmp Source_gen_check ;+++ Uv_gen_set: ;jmp test8 clr r16 sts moddelay1d, r16 lds r16, data_range sbrc r16, jmp Source_gen_check ;+++++++++check balance & delay 1/10 lds r16, moddelay2d GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 sbrc r16, jmp ldi sts lds sbr sts UvG_delay2d: ;+++++ sbrs r16, jmp cbr sts test8: ;+++ lds sbr sts lds sbr sts jmp Trang 91 UvG_delay2d r16, $5 datadelay2d, r16 r16, moddelay2d r16, 0b00000101 moddelay2d, r16 Source_gen_check r16, 0b00000111 moddelay2d, r16 r16, data_range r16, 0b01000000 data_range, r16 r16, Led2 r16, 0b00000100 Led2, r16 Source_gen_check Check_Gen: lds r17, Led1 lds r16, data_range sbrs r16, jmp chk_g1 sbrs r16, jmp chk_g1 sbr r16, 0b00010000 cbr r17, 0b00000010 jmp chk_g2 chk_g1: cbr r16, 0b00010000 sbr r17, 0b00000010 chk_g2: sts data_range, r16 sts Led1, r17 RET ;+++++++++++++++++++++++++++++ ;Kiem tra OpAmp, dieu khien Relay ;.EQU Relay = PORTB ;.equ MOut = ;MainOut ;.equ GOut = ;GenOut ;.equ Rmt = ;RemoteGen GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 92 ;data_range & data_range: ;Mains> Ov,Uv,S=2,1,0 bit ;Gen> Ov,Uv,S= 6,5,4 bit ; chkOpM:;TEST OVER/UNDER VOLT MAIN lds r17, data_range sbrs r17, ;kt bit MainSource jmp chkOp_G ;branch NO ;+++++ lds r16, stsGenButton sbrc r16, jmp chkOp_G_test ;+++++ sbic Relay,GOut ;bit jmp breakR_G ;nhay den Ngat relay GenOut checkR_M: sbic Relay,MOut ;kiem tra trang thai relay MainOut jmp chk_remote ;branch OFF ;============== TMainOn: ;++++ lds r16, moddelay3 ;bit nho sbrc r16, jmp TmainOn_1 lds r16, TmO sts datadelay3, r16 ldi r16, 0b00000101 sts moddelay3, r16 ;++++ Xoa test Rmt lds r16, stsGenButton cbr r16, 0b00000001 ;lay bit0 bao testGenButton sts stsGenButton, r16 TmainOn_1: lds r17, datadelay3 sts t_valueL, r17 call tra_bang ;+++++ lds r16, moddelay3 sbrs r16, RET GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo Trang 93 MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 cbr r16, 0b00000111 sts moddelay3, r16 sbi Relay,MOut lds r16,led2 cbr r16,128 contactor Main sts led2,r16 RET ;============ chk_remote: lds r16, stsGenButton sbrc r16, RET sbic Relay, Rmt RET ;++++ lds r16, moddelay3 sbrc r16, jmp T_rmt lds r16, Tcd sts datadelay3, r16 ldi r16, 0b00100001 sts moddelay3, r16 T_rmt: lds r17, datadelay3 sts t_valueL, r17 call tra_bang ;+++++ lds r16, moddelay3 sbrs r16, RET cbr r16, 0b00100011 sts moddelay3, r16 sbi Relay,Rmt lds r16, led2 sbr r16, 0b00010000 sts led2, r16 RET ;den bao on ;lay bit0 bao testGenButton ; bit nho ;+++++++++++++++ breakR_G: sbis Relay, Gout GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo Trang 94 MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 RET ;++++ lds r17, data_range sbrc r17, jmp T_genOff_1 cbi Relay,GOut lds r16,led1 sbr r16,4 sts led1,r16 RET T_genOff_1: ;++++ lds r16, moddelay3 sbrc r16, jmp T_genOff lds r16, TgOf sts datadelay3, r16 ldi r16, 0b00001001 sts moddelay3, r16 T_genOff: lds r17, datadelay3 sts t_valueL, r17 call tra_bang ;+++++ lds r16, moddelay3 sbrs r16, RET cbr r16, 0b00010011 sts moddelay3, r16 cbi Relay,Gout lds r16,led1 sbr r16,4 sts led1,r16 RET ;+++++++ ;kt bit genMain ;===================================== chkOp_G: lds r16, stsGenButton sbrs r16, jmp chkOp_G_Test lds r16, stsGenButton cbr r16, 0b00000010 testGenButton sts stsGenButton, r16 GVHD: Trương Hoàng Hoa Thám ;den bao off contactor Gen ; bit nho ;den bao off contactor Gen ;lay bit0 bao testGenButton ;lay bit0 bao SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 95 lds r16,Led2 sbr r16,0b00100000 sts led2,r16 chkOp_G_Test:;TEST OVER/UNDER VOLT GEN sbic Relay,MOut jmp alarm_1 jmp cont1 ;+++ alarm_1: cbi Relay,MOut lds r16,led2 sbr r16,128 ;den bao off contactor Main sts led2,r16 ;+++++ cont1: sbis Relay, Rmt jmp cont2 cbi Relay, Rmt lds r16, led2 cbr r16, 0b00010000 sts led2, r16 ;+++++ cont2:; lds r16,stsGenButton ; sbrc r16,0 ; jmp testGen lds r17, data_range sbrc r17, ;kt bit genMain jmp TGenOn clr r16 sts moddelay3, r16 sbis Relay,GOut RET ; branch NO cbi Relay,GOut lds r16,led1 sbr r16,4 ;den bao off contactor Gen sts led1,r16 ; lds r16,stsGenButton ; cbr r16,0 ; sts stsGenButton,r16 RET ;========================= TGenOn: sbis Relay,GOut GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo Trang 96 MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 jmp clr sts ret ;++++ TGenOn_0 r16 moddelay3, r16 lds sbrc jmp lds sts ldi sts r16, moddelay3 TGenOn_0: ; bit nho r16, TgenOn_1 r16, TgO datadelay3, r16 r16, 0b00100001 moddelay3, r16 TGenOn_1: lds r17, datadelay3 sts t_valueL, r17 call tra_bang ;+++++ lds r16, moddelay3 sbrs r16, RET cbr r16, 0b00100011 sts moddelay3, r16 sbi Relay,GOut lds r16,led1 cbr r16,4 sts led1,r16 RET ;den bao on contactor Gen ;+++++++++++++++ ;led2: bit0,>>7=OVM, UVM,OVG,UVG,Tst_OnLoad,Tst, Mains source;Main_On ;Led1:bit1,2= Gen_source, Gen_On testGen: sbis Relay, MOut RET testGen_1: sbis Relay, Rmt jmp testGen_2 lds r16, DataButton sbrc r16, jmp testGen_1 cbi Relay, Rmt GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo Trang 97 MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 lds r16, led2 cbr r16, 0b00010000 sts led2, r16 lds r16, stsGenButton sbr r16, 0b00000001 testGenButton sts stsGenButton, r16 RET testGen_2: lds r16, DataButton sbrc r16, jmp testGen_2 sbi Relay, Rmt lds r16, led2 sbr r16, 0b00010000 sts led2, r16 lds r16, stsGenButton cbr r16, 0b00000001 testGenButton sts stsGenButton, r16 RET ;++++++++++++++++++++++++++++ testLoad: lds r17, data_range sbrs r17, RET testGenOL: lds r16, DataButton sbrc r16, jmp testGenOL lds r16, stsGenButton sbrc r16, ; jmp testGenOL_1 lds r16, stsGenButton sbr r16, 0b00000010 testGenButton sts stsGenButton, r16 lds r16,Led2 cbr r16,0b00100000 sts led2,r16 RET testGenOL_1: GVHD: Trương Hoàng Hoa Thám ;lay bit0 bao ;lay bit0 bao bit0 bao ;kt bit MainSource ; co may phat ;lay SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo Trang 98 MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 lds r16, stsGenButton cbr r16, 0b00000010 testGenButton sts stsGenButton, r16 lds r16,Led2 sbr r16,0b00100000 sts led2,r16 RET ;+++++++++++++++++++++++++++++ Write_EEPROM: cli ;******* ldi XH, $00 ldi XL, $6b ldi r25, $0 ldi r24, $0 ;******* wepr_1: wepr_2: ld r16, X+ sbic EECR, EEWE jmp wepr_2 out EEARL, r24 out EEARH, r25 out EEDR, r16 sbi EECR, EEMWE sbi EECR, EEWE ;******** adiw r25:r24, cpi r24, $4 brne wepr_1 cpi r25, $0 brne wepr_1 ;+++++++ sei RET ;************************* ;**read theo trang, 1trang byte ;r2=trang, byte/page, r4:r5=adress ram ;********* REad_EEPROM: cli GVHD: Trương Hoàng Hoa Thám ;lay bit0 bao ; enable interupt ; set page adress ; hi ram adress ; low ram adress ; r17=hi eepr adress ; r16=low eepr adress ; set ram > eeprom byte ; load ram > r18 ; wait bit EEWE = ; set adress in adress regiter ; r17:r16 ; write r18 > DATA ; set bit EEMWE ; start write ; enable interupt ; enable interupt SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 ;******* ldi ldi ldi ldi ;******* repr_1: XH, $0 XL, $6b r25, $0 r24, $0 Trang 99 ; set page adress ; hi ram adress ; low ram adress ; r17=hi eepr adress ; r16=low eepr adress ; load eeprom > ram byte ; wait bit EEWE = sbic EECR, EEWE jmp repr_1 out EEARL, r24 ; set adress in adress regiter out EEARH, r25 ; r0:r1 sbi EECR, EERE ; start read in r18, EEDR ; read DATA in r2 ;******** st X+, r18 adiw r25:r24, cpi r24, $4 brne repr_1 cpi r25, $0 brne repr_1 ;+++++++ sei ; enable interupt ;+++++++++++++++++++++++ RET ;************* Data_7doan: DB $AF, $0C, $B5, $9D, $1E, $9B, $BB, $0D, $BF, $9F ;0 GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 100 FILE INCLUDE KÈM THEO macro Set_Led_OV lds r16, Led2 cbr R16, 0b00000001 sts Led2, r16 endmacro ;+++++ macro Clr_Led_OV lds r16, Led2 sbr R16, 0b00000001 sts Led2, r16 endmacro ;+++++ macro Out_Led lds r16, Led2 ldi r17, $8 Led_0: rol r16 brcc Led_1 sbi Led_data, InData ; sbi portA, jmp Led_2 Led_1: cbi Led_data, InData Led_2: cbi Led_clk, ClkI nop ; nop sbi Led_clk, ClkI dec r17 brne Led_0 ;++++ lds r16, Led1 ldi r17, $8 Led_3: rol r16 brcc Led_4 sbi Led_data, InData ; sbi portA, jmp Led_5 Led_4: cbi Led_data, InData Led_5: cbi Led_clk, ClkI nop ; nop sbi Led_clk, ClkI dec r17 brne Led_3 ;++++ GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 cbi nop nop sbi ;++++++ Trang 101 Led_clk, ClkO Led_clk, ClkO endmacro ;+++++ macro Wait_1s lds r16, Led2 lds r17, Led1 lds r18, Led1 ror r18 ror r16 ror r17 sts Led1, r17 sts Led2, r16 ;++++++ ldi r16, $01 lop1: ldi r17, $20 lop2: ldi r18, $f0 lop3: dec r18 brne lop3 dec r17 brne lop2 dec r16 brne lop1 endmacro ;+++++ GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 102 KẾT LUẬN: Đồ án hoàn thành đáp ứng yêu cầu xử lý cố điện, thấp áp áp điện lưới để tự động chuyển mạch sử dụng điện máy phát Đáp ứng yêu cầu thực tế lĩnh vực dân dụng công nghiệp Đáp ứng tốt yêu cầu đề tài lập trình hợp ngữ sử dụng vi điều khiển Atmega16 Ưu điểm: giá thành tương đối rẻ công đoạn lắp ráp đơn giản so với mạch ATS cổ điển (sử dụng IC số) Các thông số thời gian trễ điều chỉnh dễ dàng nhờ nút bấm, chương trình cài đặt sẵn Khuyết điểm: Do thời gian hạn hẹp, kiến thức hạn chế, mạch ATS chưa có hệ thống giám sát tần số lưới máy phát, chưa có phận hiển thị volt lưới máy phát Trong thời gian tới, mạch ATS bổ sung tính để đáp ứng yêu cầu cao người sử dụng, danh nghiệp, đơn vị sản xuất lĩnh vực công nghiệp dân dụng GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo ...MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 1.2 SƠ ĐỒ CHÂN VI ĐIỀU KHIỂN ATMEGA16 GVHD: Trương Hoàng Hoa Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16... Thám SVTH: Đặng Hoàng Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang 1.4 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN ATMEG16 Hình 1.4 Sơ đồ khối vi điều khiển Atmega16 GVHD: Trương Hoàng Hoa... Tuấn Trần Thịnh Báo MẠCH ATS SỬ DỤNG VI ĐIỀU KHIỂN ATMEGA16 Trang AVCC : AVCC chân cấp điện cho cổng A biến đổi A/D Nó nối nội đến VCC trường hợp ADC không sử dụng Nếu ADC sử dụng, phải nối với

Ngày đăng: 07/09/2017, 15:24

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan