ỨNG DỤNG HÀM NGẮT TRONG LẬP TRÌNH CHO HỆ XỬ LÝ NHÚNG pot - Pdf 17


ỨNG DỤNG HÀM NGẮT TRONG LẬP TRÌNH
CHO HỆ XỬ LÝ NHÚNG TS. NGUYỄN THANH HẢI
Bộ môn Kỹ thuật điện tử viễn thông
Khoa Điện – Điện tử
Trường Đại học Giao thông Vận tải Tóm tắt: Hệ xử lý nhúng được sử dụng trong hầu hết các thiết bị điện – điện tử, việc lập
trình cho hệ này có những đặc trưng khác với lập trình cho PC thông thường. Trong bài báo
này xây dựng và phân tích cấu trúc của một chương trình cho hệ nhúng trên cơ sở ứng dụng
hàm ngắt.
Summary: Every year, millions of microprocessors and microcontroller chips are sold
as CPUs for electronic devices (embedded systems), programming for this system differs for
common PCs. The paper analizes some structured of programs for embedded system using
interrupt function.

I. YÊU CẦU CƠ BẢN ĐỐI VỚI HỆ XỬ LÝ NHÚNG
Một hệ thống thông thường thể hiện mối quan hệ giữa các đầu vào biết trước và đầu ra
cần đáp ứng. Với hệ thống điều khiển số các đầu vào là các tín hiệu mang dữ liệu số hoặc dữ
liệu từ đầu đo, còn đầu ra là dữ liệu hiển thị hoặc các tín hiệu điều khiển như hình dưới đây:
ĐT
Hiển thị

Dữ liệu vào

- Dung lượng RAM đỏi hỏi, phụ thuộc vào từng bài toán cụ thể mà ta có thể lựa chọn RAM
cho phù hợp. Bộ nhớ bên trong có thể từ 256 byte đến vài KB, bộ nhớ ngoài từ vài chục KB đến
vài MB.
- Dung lượng FLASH hoặc ROM: Đây là nơi lưu giữ mã chương trình.
- Số lượng đòi hỏi ngắt làm việc theo sự kiện.
- Tốc độ vi xử lý, đảm bảo thời gian xử lý ngắt và thực hiện hàm theo vòng lặp chính.
- Thời gian đáp ứng cần thiết, đáp ứng khả năng thực hiện theo hệ thống thời gian thực.
- Các yêu cầu về nguồn cấp và năng lượng tiêu thụ.
- Hệ phát triển phục vụ lập trình và gỡ rối.
ĐT
- Chi phí chế tạo bao gồm chi phí phần cứng, chi phí cho hệ phát triển, chi phí lập trình và
hoàn thiện hệ thống.
II. CẤU TRÚC CHUNG MỘT CHƯƠNG TRÌNH
1. Vòng lặp chính
Chương trình của một hệ thống nhúng, trong trường hợp không sử dụng hệ điều hành, có
cấu trúc như sau:
void Event_1()
{
Command_1(); Delay5s(); // Hàm đợi 5s
Command_2();
}
int main (void)
{
Init_Parameter(); // Hàm khởi tạo biến
while (1)
{
Read_Input(); // Hàm đọc các giá trị cổng vào Event_1(); // Hàm xử lý sự kiện 1

vào một cờ nhớ, tương ứng với trạng thái này với mỗi vòng quét ta kiểm tra đã hết thời gian đợi
chưa. Nếu hết thời gian sẽ xóa cờ nhớ và tiếp tục thực hiện trạng thái tiếp theo của sự kiện đợi,
trong trường hợp chưa hết thời gian đợi ta có thể thực hiện hàm xử lý sự kiện tiếp theo.
Tương ứng với vòng quét chính trên ta thay thế hàm Event_1() như sau:
void Event_1()
{
switch (trang_thai) {
case 0:
Command_1(); trang_thai=1;
break;
case 1:
if(Het_5s) //Kiểm tra đã đủ 5 s
{
Command_2(); trang_thai=0;
}
}
Khi các sự kiện làm việc phụ thuộc vào các yếu tố bên ngoài như các khối cứng Timer,
ADC, PWM hay xung tác động từ ngoài vi xử lý thì chương trình phải đáp ứng các sự kiện này
thông qua hai phương pháp: hoặc là thực hiện vòng lặp để kiểm tra cờ trạng thái sự kiện hoặc
chức năng điều khiển ngắt. Thực hiện chức năng điều kiển ngắt có lợi thế là khả năng đám ứng
tức thời và cấu trúc của chương trình mạch lạc, dễ kiểm soạt.
Khi có một đòi hỏi ngắt từ các khối này, chương trình thực hiện vòng quét chính sẽ tạm
ngừng và thực hiện hàm ngắt trong vùng nhớ vector ngắt tương ứng. Sau khi hàm ngắt thực
hiện xong chương trình sẽ tự động trở về vị trí trong vòng quét chính lúc gọi hàm ngắt.
Với một hệ xử lý nhúng luôn luôn sử dụng chức năng ngắt để đảm bảo yếu tố thời gian
thực.
3. Hệ điều hành thời gian thực (RTOS)

đổi liên tục và cho phép thực hiện hàm ngắt.
ĐT
Bước tiếp theo là xác định chính xác địa chỉ tuyệt đối của hàm ngắt trong bảng Vector ngắt
đã được quy định sẵn. Khi có một đòi hỏi ngắt đến vi xử lý, con trỏ chương trình sẽ chỉ đến địa
chỉ trong bảng Vector ngắt và tại địa chỉ này sẽ có lệnh gọi hàm ngắt tương ứng. Ví dụ hàm ngắt
bộ ADC nằm ở địa chỉ OCB03.
Cuối cùng ta cần xây dựng hàm ngắt để xử lý sự kiện mà ngắt đòi hỏi, vi dụ đối với bộ
biến đổi ADC hàm ngắt sẽ được gọi sau khi thực hiện phép biến đổi xong. Trong hàm này cần
thực hiện các nhiệm vụ sau:
- Chuyển dữ liệu vừa biến đổi xong trong thanh ghi dữ liệu 16 bit vào biến trung gian.
- Xóa các cờ bên trong khối biến đổi
- Ra lệnh thực hiện chuyển đổi tiếp theo
IV. ỨNG DỤNG HÀM NGẮT TRONG CHẾ TẠO THIẾT BỊ GIÁM SÁT HÀNH TRÌNH
VÀ TỐC ĐỘ CHO PHƯƠNG TIỆN VẬN TẢI
1. Xác định các sự kiện đòi hỏi ngắt
Để giám sát tốc độ và hành trình phương tiện vận tải, thiết bị chế tạo cần thực hiện các nhiệm vụ chính như xác định tọa độ hiện tại (kinh độ, vĩ độ), tốc độ (km/h), thời gian
(giờ/phút/giây – ngày /tháng/năm), ghi dữ liệu vào bộ nhớ an toàn, truyền dữ liệu về trung tâm
qua đường truyền RF/GSM.
Trên cơ sở yêu cầu trên cần lựa chọn và thiết kế các phần cứng ghép nối với vi xử lý trung
tâm như sau:
- Thiết bị thu định vị vệ tinh toàn cầu GPS, cho phép xác định các thông tin như tọa độ, tốc
độ và thời gian hiện tại của phương tiện. Việc truyền dữ liệu thông qua đường truyền theo chuẩn
UART.
- Bộ nhớ dung lượng lớn dạng SDCard/MMC có thể lưu trữ với dung lượng 2GB. Để đọc
và ghi dữ liệu sử dụng kênh truyền SPI.

- Truyền dữ liệu về trung tâm sử dụng Module XE1205 với khoảng cách truyền đạt 400m.

void Timer8c_ISR() // Hàm ngắt Timer
#pragma interrupt_handler Iqr_Rf_ISR
void Iqr_Rf_ISR() // Hàm ngắt ngoài từ XE1205
#pragma interrupt_handler SPIS1_ISR
void SPIS1_ISR() // Hàm ngắt nhận và truyền dữ liệu qua XE1205
#pragma interrupt_handler SPIM1_ISR
void SPIM1_ISR() // Hàm ngắt nạp tham số cho XE1205
#pragma interrupt_handler GM682c_RX_ISR
void GM682c_RX_ISR() // Hàm ngắt trao đổi dữ liệu với Module GSM
V. KẾT LUẬN
Sử dụng hàm ngắt khi lập trình cho hệ nhúng cho phép xử lý đồng thời nhiều sự kiện (nhận
dữ liệu từ GPS, ghi/đọc dữ liệu vào SDCard, truyền dữ liệu với khoảng cách gần RF, truyền dữ
liệu qua mạng di động) với thời gian đáp ứng phù hợp.
ĐT
Để làm việc với hàm ngắt trước tiên phải xem xét đến thứ tự ưu tiên ngắt, sau đó cần khởi tạo
và cho phép hàm ngắt tích cực và cuối cùng là xây dựng thuật toán xử lý của bản thân hàm ngắt.
Vòng quét chính của chương trình có nhiệm vụ đồng bộ và điều phối thứ tự thự hiện các sự kiện.
Thiết bị giám sát hành trình và tốc độ phương tiện vận tải đã được sử dụng để xác định số
chuyến và cung đường vận chuyển tại Công ty cổ phần than Đèo nai, đã mang lại những hiệu
quả. Đồng thời cũng đang được lắp đặt thử nghiệm kiểm soát tốc độ xe khách đường dài tuyến
Hà nội – Đà nẵng.
Thiết bị giám sát hành trình:
• Kiểm soát số chuyến theo từng cung đường.
• Truyền dữ liệu RF.
• Dung lượng bộ nhớ 256MB
• Nguồn cấp 12-24VDC
• Độ chính xác định vị <5m.
Tài liệu tham khảo
[1]. Nguyễn Thanh Hải, Lựa chọn Chip cho bài toán đo lường và điều khiển. Hội nghị đo lường lần thứ 5, 2005.
[2]. Dr. Jürgen Sauermann, Melanie Thelen. Realtime Operating Systems♦


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status