1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Lập trình hệ thống nhúng với ngôn ngữ C.

246 946 3

Đ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

Tài liệu được dịch từ bản Tiếng Anh: : Programming embeed system I, Michael J,Pont, University Of Leicester, 20022006. Bạn có thể tải về trực tiếp bản dịch tại đây :http:adf.ly1eGwpGBạn có thể down bản gốc tại : http:adf.ly1eGxkH

Lập Trình Hệ Thống Nhúng 10 tuần học ngôn ngữ c Michael J Pont University of Leicester Thông tin chi tiết: http://www.le.ac.uk/engineering/mjp9/ Bản quyền tác giả © Michael J Pont, 2002-2006 Bạn tải trực tiếp đây: http://adf.ly/1eGwpG Tài liệu chép phân phối tự do,miễn thông báo quyền tất Bản dịch đầu tay thiếu sai sót Rất mong nhận góp ý bạn Mọi thắc mắc dịch xin vui lòng gửi tới : doanhau198@gmail.com tranthien.pro@gmail.com Atienganh.blogspot.com Atienganh.blogspot.com No book no knowledge Mục lục CHƯƠNG 1: XIN CHÀO”THẾ GIỚI NHÚNG” .4 KHÁI QUÁT KIẾN THỨC : TẠI SAO DÙNG NGÔN NGỮ C? - THE 8051 MICROCONTROLLER CẤU TRÚC “SIÊU VÒNG LẶP” .9 ĐỌC (VÀ VIẾT) CÁC CHÂN 12 CÁCH TẠO VÀ SỬ DỤNG BIẾN SBIT 14 TẠO HÀM TRỄ BẰNG PHẦN MỀM 16 CHƯƠNG 2: CƠ SỞ THIẾT LẬP PHẦN CỨNG (RESETS, DAO DỘNG VÀ PORT I/O) 18 TỔNG QUAN : 21 DAO ĐỘNG PHẦN CỨNG 22 VẤN ĐỀ ỔN ĐỊNH 24 RESET PHẦN CỨNG 28 LED NHIỀU THANH LÀ GÌ? 36 ĐIỀU KHIỂN LED ĐƠN 37 CHƯƠNG 3: ĐỌC NÚT BẤM 38 SỰ CẦN THIẾT CỦA ĐIỆN TRỞ KÉO 47 VÍ DỤ:ĐỌC NÚT BẤM (CODE CƠ BẢN) 51 VÍ DỤ: ĐẾM NHỮNG CHÚ CỪU 57 CHƯƠNG 4: THÊM CẤU TRÚC VÀO CODE CỦA BẠN 63 GIỚI THIỆU 64 VÍ DỤ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI C (O-O C ) 68 DỮ LIỆU CÁC LOẠI BIẾN THÔNG THƯỜNG 75 INTERRUPTS 76 TÓM TẮT: TẠI SAO SỬ DỤNG PROJECT HEADER(TIÊU ĐỀ DỰ ÁN)? 77 THE PORT HEADER (PORT.H) 78 CẤU TRÚC LẠI VÍ DỤ :“HELLO WORLD” 81 CHƯƠNG 5:THỜI GIAN THỰC 98 GIỚI THIỆU 99 HAI THANH GHI BỔ SUNG 104 VÍ DỤ: TẠO HÀM TRỄ PHẦN CỨNG 109 SỰ CẦN THIẾT CHO CƠ CHẾ ‘TIMEOUT’ (THỜI GIAN TRỄ) - VÍ DỤ 112 TẠO LOOP TIMEOUTS 113 VÍ DỤ: NÚT BẤM TIN CẬY HƠN 116 KẾT LUẬN 119 CHƯƠNG 6: TẠO RA MỘT HỆ ĐIỀU HÀNH NHÚNG 121 LỜI GIỚI THIỆU 122 CÁC NGẮT TIMER CƠ BẢN (LÕI CỦA MỘT HỆ ĐIỀU HÀNH NHÚNG) 125 CHƯƠNG TRÌNH CON PHỤC NGẮT (ISR) 126 TIMER TỰ ĐỘNG NẠP LẠI 127 GIỚI THIỆU VỀ SEOS 128 TÁC VỤ, HÀM VÀ LẬP TRÌNH 134 TIẾT KIỆM NĂNG LƯỢNG 138 VÍ DỤ: TIỆT TRÙNG SỮA 141 KẾT LUẬN 155 CHƯƠNG 7: HỆ THỐNG ĐA TRẠNG THÁI VÀ DÃY HÀM 157 LỜI GIỚI THIỆU 158 THI HÀNH MỘT HỆ THỐNG ĐA TRẠNG THÁI (ĐỊNH THỜI GIAN) 160 VÍ DỤ: DÃY ĐÈN GIAO THÔNG 161 VÍ DỤ: KHỦNG LONG MÁY 169 THI HÀNH MỘT HỆ THỐNG ĐA TRẠNG THÁI (ĐẦU VÀO/ĐỊNH THỜI(INPUT/TIMER)) 175 VÍ DỤ: BỘ ĐIỀU CHỈNH CHO MỘT MÁY GIẶT 176 Atienganh.blogspot.com No book no knowledge CHƯƠNG 8: SỬ DỤNG GIAO DIỆN NỐI TIẾP 190 ‘RS-232’ LÀ GÌ? 192 GIAO THỨC RS-232 CƠ BẢN 193 TRUYỀN DỮ LIỆU KHÔNG ĐỒNG BỘ VÀ TỐC ĐỘ BAUD 194 RS-232 CÁC MỨC ĐIỆN ÁP 195 CẤU TRÚC PHẦN MỀM 196 SỬ DỤNG U(S)ART TRÊN CHIP CHO KẾT NỐI RS-232 198 CÁC THANH GHI PORT NỐI TIẾP 199 TẠO RA TỐC ĐỘ BAUD 200 VỀ LỆNH PRINTF()? 203 RS-232 VÀ 8051: BAO GỒM CẢ ĐIỂM MẠNH VÀ ĐIỂM YẾU 204 KẾT LUẬN 216 CHƯƠNG 9: HỆ THỐNG BÁO ĐỘNG NGƯỜI XÂM PHẠM 218 LỜI GIỚI THIỆU 219 SỰ HOẠT ĐỘNG CỦA HỆ THỐNG 220 KẾT LUẬN 238 CHƯƠNG 10: ĐIỀU KHIỂN MỘT ROBOT DI CHUYỂN 239 KHÁI QUÁT CHUNG 240 ROBOT CÓ THỂ LÀM GÌ? 241 ROBOT CHUYỂN ĐỘNG NHƯ THẾ NÀO? 243 ĐIỀU CHẾ ĐỘ RỘNG XUNG 244 PHẦN MỀM PWM 245 Atienganh.blogspot.com No book no knowledge Chương 1: Xin chào”thế giới Nhúng” Atienganh.blogspot.com No book no knowledge Khái quát kiến thức : Chương mở đầu sẽ: • Cung cấp khái quát khóa học • Giới thiệu VĐK 8051 • Cấu trúc phần mềm “siêu vòng lặp” • Mô tả cách sử dụng chân điều khiển • Bạn tạo hàm trễ nào? Và bạn cần nó? Khái quát khóa học Khóa học có liên quan đến thưc phần mềm (và lượng nhỏ phần cứng) cho việc xây dựng hệ thống nhúng sử dụng VĐK Các vi xử lý kiểm tra chi tiết họ 8051 (Bao gồm thiết bị chuẩn thiết bị nhỏ) Tất lập trình ngôn ngữ C Kết thúc khóa học … Kết thúc khóa học, bạn có thể: Thiết kế phần mềm cho xử lý nhúng ứng dụng đơn, sở nhỏ,tiêu chuẩn công nghiệp Thực thiết kế cách sử dụng ngôn ngữ lập trình bậc cao, đại Bắt đầu hiểu vấn đề độ tin cậy,an toàn,làm để thiết kế phần mềm chương trình định có tác động tích cực tiêu cực lên phân vùng Atienganh.blogspot.com No book no knowledge Sách tham khảo Trong suốt khóa học bạn tham khảo sách sau: Embedded C by Michael J Pont (2002) Addison-Wesley [ISBN: 0-201-79523X] Thông tin chi tiết tại: http://www.engg.le.ac.uk/books/Pont/ec51.htm : Atienganh.blogspot.com No book no knowledge Tại dùng ngôn ngữ C? • Đây ngôn ngữ mức giữa, với tính bậc cao: hỗ trợ cho chức modul, tính bậc thấp: truy cập vào phân cứng thông qua trỏ • Hiệu cao • Phổ biến dễ hiểu • Thậm chí người phát triển máy tính để bàn sử dụng Java C++ dễ dàng hiểu cú pháp C • Tốt, trình biên dịch có cho vi xử lý nhúng, (8-bit to 32-bit or more) • Sách, khóa đào tạo, code ví dụ trang wed thảo luận rộng rãi toàn giới Nói chung ngôn ngữ C không ngôn ngữ hoàn hảo để phát triển hệ thống nhúng, lựa chọn tốt (và ngôn ngữ hoàn hảo tạo ra.:-d) Cần biết gì? • Trong suốt khóa học này, giả định bạn có kinh nghiệm lập trình.Ví dụ Java or C++ • Mọi người có tảng lập trình việc học C thật đơn giản Atienganh.blogspot.com -7- No book no knowledge The 8051 microcontroller Tính điển hình 8051: • 32 chân I/O • Bộ nhớ (RAM) - 256 bytes • Nâng cấp lên tới 64 kbytes of ROM (Bộ nhớ flash) • timer/counter 16-bit • chế độ ngắt (2 ngắt ngoài) với mức ưu tiên • Nguồn tiêu thụ thấp Các loại khác họ 8051 thích hợp cho thứ từ hệ thống ôtô hàng không đến điều khiển TV Atienganh.blogspot.com No book no knowledge Cấu trúc “siêu vòng lặp” Vấn đề: Môi trường phần mềm tối thiểu bạn cần để tạo chương trình C gì? Giải quyết: void main(void) { /* chuan bi cho nhiem vu X */ X_Init(); while(1) /* vong lap mai mai */ { X(); /* thuc hien nhiem vu X */ } } Điều quan trọng là: “siêu vòng lặp”, „vòng lặp vô cùng‟ điều cần thiết hệ thống điều hành để quay trở gia trị ban đầu, chương trình trì vòng lặp ngắt nguồn Atienganh.blogspot.com No book no knowledge Ưu nhược điểm siêu vòng lặp” ☺ Ưu điểm vòng lặp đơn giản Điều giúp dễ dàng xây dựng, gỡ lỗi, kiểm tra trì ☺ Vòng lặp có hiệu cao: có tài nguyên phần cứng tối thiểu ☺ Vòng lặp có tính di dộng cao (rất phong phú đa dạng) Nhược điểm:  Nếu chương trình bạn yêu cầu tính xác cao (ví dụ bạn cần có liệu xác tới 2ms), khung vòng lặp không cung cấp xác hay linh hoạt theo yêu cầu  Các vòng lặp hoạt động chế độ nguồn đầy đủ.(full power) Điều không cần thết tất chương trình, ảnh hưởng tới hệ thống nguồn tiêu thụ [Chúng ta thấy chương 6, người lập trình giải vấn đề này.] Atienganh.blogspot.com 10 No book no knowledge /* co phai mat khau co so? */ if ((++Position_G) == 4) { Position_G = 0; Password_G_count = 0; /* kiem tra mat khau */ for (i = 0; i < 4; i++) { if (Input_G[i] == Password_G[i]) { Password_G_count++; } } } if (Password_G_count == 4) { /* mat khau dung */ return 1; } else { /* mat khau sai */ return 0; } } Atienganh.blogspot.com 232 No book no knowledge bit INTRUDER_Check_Window_Sensors(void) { /* chi mot cam bien cua so o day - nang cap de dang */ if (Window_sensor_pin == 0) { /* nguoi la duoc phat hien */ PC_LINK_O_Write_String_To_Buffer("\nWindow damaged"); return 1; } /* mac dinh */ return 0; } /* - */ bit INTRUDER_Check_Door_Sensor(void) { /* cam bien cua don (truy cap hanh trinh) */ if (Door_sensor_pin == 0) { /* co mo cua */ PC_LINK_O_Write_String_To_Buffer("\nDoor open"); return 1; } /* mac dinh */ return 0; } /* - */ void INTRUDER_Sound_Alarm(void) { if (Alarm_bit) { /* canh bao noi voi cac chan */ Sounder_pin = 0; Alarm_bit = 0; } else { Sounder_pin = 1; Alarm_bit = 1; } } Atienganh.blogspot.com 233 No book no knowledge void KEYPAD_Update(void) { char Key; /* quet ban phim o day */ if (KEYPAD_Scan(&Key) == 0) { /* khong co du lieu ban phim – quay lai */ return; } /* muon tim chi so 0, neu du lieu cu khong duoc doc (simple ~circular buffer) */ if (KEYPAD_in_waiting_index == KEYPAD_in_read_index) { KEYPAD_in_waiting_index = 0; KEYPAD_in_read_index = 0; } /* nap du lieu ban phim vao bo dem */ KEYPAD_recv_buffer[KEYPAD_in_waiting_index] = Key; if (KEYPAD_in_waiting_index < KEYPAD_RECV_BUFFER_LENGTH) { /* tang ma khong lam tran bo dem */ KEYPAD_in_waiting_index++; } } bit KEYPAD_Get_Data_From_Buffer(char* const pKey) { /* neu co du lieu moi o bo dem */ if (KEYPAD_in_read_index < KEYPAD_in_waiting_index) { *pKey = KEYPAD_recv_buffer[KEYPAD_in_read_index]; KEYPAD_in_read_index++; return 1; } return 0; } Atienganh.blogspot.com 234 No book no knowledge bit KEYPAD_Scan(char* const pKey) { char Key = KEYPAD_NO_NEW_DATA; if if if if if if if if (K0 (K1 (K2 (K3 (K4 (K5 (K6 (K7 == == == == == == == == 0) 0) 0) 0) 0) 0) 0) 0) { { { { { { { { Key Key Key Key Key Key Key Key = = = = = = = = '0'; '1'; '2'; '3'; '4'; '5'; '6'; '7'; } } } } } } } } if (Key == KEYPAD_NO_NEW_DATA) { /*khong co phim nao duoc bam */ Old_key_G = KEYPAD_NO_NEW_DATA; Last_valid_key_G = KEYPAD_NO_NEW_DATA; return 0; } /* khong co du lieu moi */ /* mot phim duoc bam: debounce boi hai lan kiem tra */ if (Key == Old_key_G) { /*mot phim bam dung duoc phat hien */ /* phai la mot phim bam moi – khong tu dong nap lai */ if (Key != Last_valid_key_G) { /* phim moi! */ *pKey = Key; Last_valid_key_G = Key; return 1; } } /* khong co du lieu moi */ Old_key_G = Key; return 0; } Atienganh.blogspot.com 235 No book no knowledge sEOS_ISR() interrupt INTERRUPT_Timer_2_Overflow { TF2 = 0; /* tu reset co T2 */ /*===== USER CODE - Begin ================================== */ /* goi ham cap nhat RS-232 moi 5ms */ PC_LINK_O_Update(); /* ISR duoc goi sau moi ms - chi muon cap nhat xem co nguoi la khong sau moi 50 ms */ if (++Call_count_G == 10) { /* thoi gian de cap nhat canh bao co ke dot nhap */ Call_count_G = 0; /* goi ham cap nhat intruder */ INTRUDER_Update(); } /*===== USER CODE - End ==================================== */ } Atienganh.blogspot.com 236 No book no knowledge Nâng cấp chỉnh sửa hệ thống Làm để bạn thêm bàn phím „thực‟ ? (xem “Patterns for Time-Triggered Embedded Systems, chương 20) Bạn thêm hình hiển thị LCD ? (xem “Patterns for Time-Triggered Embedded Systems, Chương 22) Bạn thêm nút (node) ? (xem “Patterns for Time-Triggered Embedded Systems, Phần F) Atienganh.blogspot.com 237 No book no knowledge Kết luận Trường hợp nghiên cứu minh họa hầu hết chức ngôn ngữ nhúng C (như thảo luận chuyên đề trước khóa học ) Chúng ta xem xét trường hợp nghiên cứu cuối chuyên đề Atienganh.blogspot.com 238 No book no knowledge Chương 10: Điều khiển robot di chuyển Atienganh.blogspot.com 239 No book no knowledge Khái quát chung Trong phần này, thảo luận việc thiết kế phần mềm để điều khiển robot di động nhỏ Robot “Mr Line” Nó sản xuất “Microrobot NA” http://www.microrobotna.com Atienganh.blogspot.com 240 No book no knowledge Robot làm gì? Robot có cảm biến hồng ngoại thiết bị phát, cho phép phát vạch đen trắng bám theo vách đen http://www.microrobotna.com Atienganh.blogspot.com 241 No book no knowledge Bộ não robot Mr Line điều khiển vi điều khiển họ 8051 ( AT89C2051) Chúng ta sử dụng vi điều khiển có chân tương thích AT89C4051 http://www.microrobotna.com Atienganh.blogspot.com 242 No book no knowledge Robot chuyển động nào? Mr Line có hai motor: việc điều khiển tốc độ tỉ đối hai motor điều chỉnh tốc độ hướng robot di chuyển http://www.microrobotna.com Atienganh.blogspot.com 243 No book no knowledge Điều chế độ rộng xung x V y Time Chế độ làm việc(%) = x x y 100 chu kì = x + y, (trong x y tính giây) Tần số = x y , Chú ý:điền áp trung bình tính băng „chế độ làm việc‟ nhân với điện áp tái Xem cuốn: “Patterns for Time-Triggered Embedded Systems”, Chương 33 Atienganh.blogspot.com 244 No book no knowledge Phần mềm PWM PWM_PERIOD_G PWM_G PWM_position_G if (PWM_position_G < PWM_G) { PWM_pin = PWM_ON; } else { PWM_pin = PWM_OFF; } Xem cuốn: “Patterns for Time-Triggered Embedded Systems”, Chương 33 Atienganh.blogspot.com 245 No book no knowledge Để biết thêm robot Xem tại: http://www.le.ac.uk/engineering/mjp9/robot.htm Kết thúc That brings us to the end of this course! Bản dịch đầu tay thiếu sai sót Rất mong nhận góp ý bạn Mọi thắc mắc dịch xin vui lòng gửi tới : doanhau198@gmail.com tranthien.pro@gmail.com Atienganh.blogspot.com Atienganh.blogspot.com 246 No book no knowledge

Ngày đăng: 25/09/2016, 09:19

Xem thêm: Lập trình hệ thống nhúng với ngôn ngữ C.

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN