1. Trang chủ
  2. » Cao đẳng - Đại học

BÁO CÁO LAB Môn: Lập trình hệ thống nhúng

25 141 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 0,94 MB

Nội dung

BÁO CÁO LAB, Môn: Lập trình hệ thống nhúng

BÁO CÁO LAB Mơn: Lập trình hệ thống nhúng Sinh viên thực hiện: Trương Thị Thu Diệu – 09DT1 Nguyễn Thị Thái Ngọc – 09DT1 THÁNG 1, 2014 DA NANG UNIVERSITY OF TECHNOLOGY Chương 1: PHÂN TÍCH ĐỀ TÀI LAB 1.1 Mô tả tổng quát: Đề tài lab xây dựng hệ thống thu thập liệu từ cảm biến bên ngồi mơi trường, xử lý thực hiển thị hay cảnh báo liệu thu vượt khỏi vùng quy định Đồng thời gửi liệu qua máy tính thiết lập mạng kết nối để điều khiển, hiển thị cần thiết Cả hệ thống xây dựng hệ điều hành thời gian thực FreeRTOS đơn giản Hệ thống đặt đâu ngồi môi trường để kiểm tra yếu tố cần thiết nồng độ muối, ngồn độ CO2, tốc độ dòng chảy nhiệt độ 1.2 Thiết bị phần mềm cần dùng: - KIT EKI LM3S8962 - Phần mềm IAR IDE cho ARM - Phần mềm hercules 1.3 Các vấn đề cần giải quyết: - Mơ tả nhìn tổng quan hệ thống phần mềm UML - Thực giao tiếp với phần cứng module EKI LM3S8962: nhiệt độ, keypad, OLED hiển thị menu ADC,… - Xây dựng hệ thống hệ điều hành FreeRTOS với tác vụ quản lý task ứng với chức cụ thể hiển thị, tính tốn, cảnh báo,… thông số - Xây dựng giải thuật HTTP cho webserver - Lập trình trang web có khả truy vấn liệu liên tục, đồng thời cập nhật thơng tin từ liệu lên - Viết phần mềm giao diện người dùng LabView 2010… 1.4 Hướng giải vấn đề: - Về giải thuật HTTP cho web server: đề tài áp dụng TCP/IP stack (một giao thức TCP/IP viết C) lwIP Stack hỗ trợ mạnh giao thức TCP, UDP giao thức TCP UDP có HTTP - Các phần cứng tham khảo sơ đồ mạch từ thiết kế đề nghị nhà sản xuất vi điều khiển Texas Instrument code sources - Tìm hiểu cụ thể thao tác với hệ điều hành FreeRTOS để xây dựng task ứng với chức cụ thể - Giao diện phần mềm viết PC với LabView 2010, tài liệu tham khảo lấy từ trang web hãng, 1.5 Phạm vi đề tài: Thực hệ thống với thiết bị: - Module cảm biến nhiệt độ tích hợp sẵn KIT EKI LM3S8962 - Module ADC để xử lý số liệu analog lấy từ cảm biến Module giao tiếp người dùng có hình OLED KIT EKI LM3S8962 để hiển thị Module Keypad cho lựa chọn Thiết bị nhúng web server Tất phần sử dụng vi xử lý dùng ARM Cortex M3 LM3S8962 hãng Texas Instrument Thực lập trình trang web đơn giản Thực phần mềm lập trình LabView 2010 hãng National Instrument giao tiếp với thiết bị giao tiếp người dùng mode menu Chương 2: Cơ sở lý thuyết Chương giới thiệu lý thuyết liên quan, trình bày phương pháp nghiên cứu thực hành cụ thể Đồng thời phân tích, đánh giá, làm rõ lý giải cho lựa chọn 2.1 Vi xử lý ARM Cortex M3 LM3S8962 – Texas Instruments: 2.1.1 Giới thiệu dòng vi xử lý ARM Cortex: Dòng ARM Cortex xử lí hệ đưa kiến trúc chuẩn cho nhu cầu đa dạng công nghệ Không giống nhu chip ARM khác, dòng Cortex lõi xử lí hồn thiện, đưa chuẩn CPU kiến trúc hệ thống chung Cortex-M3 đưa lõi vi điều khiển chuẩn nhằm cung cấp phần tổng quát, quan trọng vi điều khiển bao gồm: - Hệ thống ngắt (interrupt system) SysTick timer (đuợc thiết kế cho hệ điều hành thời gian thực) Hệ thống kiểm lỗi (debug system) Memory map Không gian địa 4Gbyte Cortex-M3 đuợc chia thành vùng cho: Mã chương trình SRAM Ngoại vi ngoại vi hệ thống Cortex-M3 đuợc thiết kế dựa theo kiến trúc Harvard (bộ nhớ chuong trình nhớ liệu tách biệt với nhau), có nhiều bus cho phép thực thao tác song song với nhau, làm tăng hiệu suất chip Dòng Cortex duợc thiết kế hỗ trợ tập lệnh ARM Thumb-2, tập lệnh duợc pha trộn tập lệnh 16 32bit Tập lệnh Thumb-2 duợc thiết kế dặc biệt dành cho trình biên dịch C/C++, ứng dụng dựa Cortex hồn tồn duợc viết ngôn ngữ C mà không cần dến chương trình khởi dộng viết assembler Kiến trúc vi xử lý dùng lõi ARM Cortex M3  Một số ưu điểm ARM Cortex:  Hiệu suất cao: hỗ trợ kiến trúc tập lệnh Thumb-2, nên hiệu 35% so với xử lý ARM7TDMI-S thực thi với tập lệnh ARM  Dễ sử dụng, phát triển ứng dụng nhanh chóng, hiệu quả: Bộ vi xử lý có mơ hình lập trình dựa ngăn xếp đơn giản hố để tương thích với kiến trúc ARM Ngồi tập lệnh ARM thiết kế đặc biệt dành cho trình biên dịch C/C++ nên ứng dụng viết khơng cần thơng qua chương trình assembler (chương trình startup)  Hoạt động sử dụng lượng hiệu hơn: So sánh dòng ARM7 cũ lõi Cortex M3  Đơn vị bảo vệ nhớ (MPU): MPU thành phần tùy chọn vi xử lý Cortex-M3, nâng cao độ tin cậy hệ thống nhúng cách bảo vệ liệu quan trọng hệ điều hành sử dụng khỏi ứng dụng khác, tách biệt độc lập tác vụ thực thi cách không cho phép truy cập vào liệu nhau, vô hiệu hoá quyền truy cập vào số vùng nhớ, cho phép vùng nhớ định nghĩa đọc (read only) phát truy cập nhớ phá vỡ hệ thống  Hỗ trợ lập trình Gỡ lỗi (Debug) theo vết (Trace): Debug hệ thống dựa vi xử lý Cortex-M3 thực thông qua DAP (Debug Access Port), SWD (Serial Wire Debug) sử dụng đường tín hiệu SWJ-D (Serial Wire JTAG Debug) sử dụng giao thức JTAG 2.1.2 Vi xử lý Stellaris ARM Cortext M3 LM3S8962 – Texas Instrument Các dòng vi điều khiển Stellaris – ARM ® ™ Cortex-M3 - mang lại ứng dụng vi điều khiển nhúng hiệu suất cao 32-bit với chi phí tương đương với vi điều khiển kế thừa bit 16bit Một số tính dòng vi xử lý LM3S: - 32-bit RISC - SystemTick Timer 24bit - Tốc độ tối đa 50 MHz - Tích hợp Bộ điều khiển vector ngắt lồng (NVIC): 36 ngắt với tám cấp độ ưu tiên - Hỗ trợ mode Hibernation: điều khiển công suất sử dụng điều chỉnh bên riêng biệt, đồng hồ thời gian thực (RTC) 32bit - Đầy đủ tính giải pháp gỡ rối - … Hỗ trợ tất tính vi xử lý, module truyền thơng bản: SSI, I2C, UART Dòng LM3S8xxx TI trang bị module giao tiếp CAN Ethernet  Controller Area Network (CAN)  CAN giao thức phiên 2.0 A/B  Tốc độ bit lên đến Mbps  32 tin với nhận dạng mask cá nhân  Ngắt mask  Vơ hiệu hố chế độ tự động gửi lại cho ứng dụng Time-Triggered CAN (TTCAN)  Lập trình kiểm tra ngược cho chế độ tự kiểm tra  Cho phép lập trình FIFO lưu trữ nhiều đối tượng nhắn tin  Kèm theo giao diện CAN bên ngồi thơng qua tín hiệu CAN Tx CAN Rx  10/100 Mbps Ethernet Controller  Phù hợp với đặc điểm kỹ thuật IEEE 802,3-2002  Nhiều chế độ hoạt động Song công bán song công 100 Mbps Song công bán song công 10 Mbps Chế độ tiết kiệm điện giảm cơng suất xuống  Cấu hình cao Lập trình địa MAC Lựa chọn hoạt động LED Hỗ trợ chế độ pha tạp Điều khiển loại bỏ lỗi CRC Người dùng cấu hình ngắt  IEEE 1588 Giao thức Thời gian xác - cung cấp thời gian xác cao cho gói cá nhân Sơ đồ khối vi xử lý LM3S8962 Sơ đồ khối vi xử lý LM3S8962 2.2 Module cảm biến nhiệt độ ADC tích hợp KIT EKI LM3S8962: Module ADC Stellaris có đặc điểm sau: - kênh ngõ vào Có cấu hình cho ngõ vào analog khác ngõ vào analog đơn Có cảm biến nhiệt độ nội chip Tốc độ lấy mẫu đạt đến 500.000 mẫu/ 1s Có cách lấy mẫu: ss0 đến ss3 - Bộ chuyển đổi sử dụng nguồn điện áp 3V Sơ đồ khối ADC: Sơ đồ lấy mẫu ADC: Vậy sử dụng cảm biến nhiệt độ nội KIT EKI LM3S8962 Giá trị ngõ analog đưa qua module ADC tích hợp sẵn module để hiển thị giá trị OLED KIT Sau qua ADC nhiệt độ độ C tính: ulTemp_ValueC = ((1475 * 1023) - (2250 * giá trị đo ADC0)) / 10230; Và độ F: ulTemp_ValueF = ((ulTemp_ValueC * 9) + 160) / 5;  Nhiệt độ hiển thị OLED để thơng báo cho người dùng 2.3 Tìm hiểu hệ điều hành FreeRTOS: 2.3.1Định nghĩa hệ điều hành thời gian thực RTOS: Là hệ thống có: - Lịch trình thực thi theo thời gian Quản lý tài nguyên hệ thống Cung cấp tảng để phát triển ứng dụng 2.3.2 Các thành phần RTOS: - Các đối tượng RTOS Bộ lịch trình (Scheduler): Là tập thuật toán để xác định tác vụ ( Task) thực thi Đối tượng (Object):Là cấu trúc đặc biệt (Kernel) giúp người lập trình tạo ứng dụng Dịch vụ (Service):Là điều khiển mà Kernel ( lõi) thực thi đối tượng ( object): chia thời gian ( Timing), Ngắt( interrupt), Đáp ứng ( handling) quản lý tài nguyên hệ thống ( resource management) 2.3.3 Các đối tượng (Objects) RTOS: - Tasks: Là luồng ( thread) thực thi tồn độc lập “ cạnh tranh” để dành quyền thực thi Semaphores:Là đối tượng bắt kiện để đồng tasks, tăng giảm Message Queues:Là kiểu cấu trúc liệu dùng để đồng hóa trao đổi thông tin Tasks Real-time embedded applications:Là kết nối đối tượng Kernel để giải vấn đề thời gian thực đồng thời, đồng bộ,và trao đổi liệu 2.3.4 Giải thuật cho lịch trình theo chế độ ưu tiên: Giải thuật lịch trình theo độ ưu tiên Hầu hết Real – time Kernel sử dụng giải thuật lịch trình thay theo độ ưu tiên ( preemptive priority- based scheduling) làm mặc định Các task thực thi thời điểm task có độ ưu tiên cao so với task khác trạng thái sẵn sàng Real –Time Kernel hỗ trợ 256 cấp độ ưu tiên, với độ ưu tiên cao 255 độ ưu tiên thấp Một số Kernel ngược lại với 255 độ ưu tiên cao độ ưu tiên thâp Với chuyển đổi theo đọ ưu tiên, task phải có độ ưu tiên, task có độ ưu tiên cao chạy Nếu Task có độ ưu tiên cao task chạy trở nên sẵn sàng để chạy kernel lưu lại trạng thái Task chuyển sang Task có độ ưu tiên cao Mặc dù việc phân chia độ ưu tiên Task thực task tạo độ ưu tiên Task thay đổi cách linh động sử dụng Lời gọi kernel cung cấp (Kernel – provided calls) Khả dùng để thay đổi cách linh động cho phép ứng dụng nhúng có độ linh hoạt để ứng xử với kiện bên chúng xuất hiện, tạo hệ thống thời gian thực đáp ứng tốt Lưu ý việc sử dụng không khả thay đổi độ ưu tiên dẫn đến đảo độ ưu tiên ( priority inversion), vùng chết ( deadlock), dẫn đến treo hệ thống ( system failure) 2.3.5 Quản lý task RTOS:  Định nghĩa task: Sơ đồ cấu trúc Task Task luồng thực thi độc lập mà cạnh tranh chiếm quyền thực thi Một ứng dụng chia làm nhiều Tasks đồng thời ( Concurrent Task) để tối ưu khả đáp ứng vào luật thời gian Một Task định nghĩa túy tập tham số cấu trúc liệu Các thành phần Task:Khi tạo ra, Task có tên, ID nhất, độ ưu tiên, block điều khiển Task ( TCB), Stack, Các thủ tục thực thi Task  Các trạng thái task Hình Error! No text of specified style in document.-1: Các trạng thái Task Tại thời điểm, task tồn số trạng thái nhỏ bao gồm: Sẵn sàng ( Ready), Đang thực thi ( Running), Khóa ( Blocked) Khi hệ thống nhúng thời gian thực chạy, task thay đổi từ trạng thái đến trạng thái khác theo quy luật logic trang thái hữu hạn đơn giản ( Finite state machine (FSM)) 2.3.6 Giới thiệu FreeRTOS: FreeRTOS nghiên cứu Richard Barry với tên ban đầu FRTOS07 Mục đích FreeRTOS portable( khả linh động) , open source ( mã nguồn mở) , mini kernel (là hệ điều hành thời gian thực nhỏ) mà thao tác chế độ ưu tiên (Pre-emptive) phối hợp (Cooperative) FreeRTOS hỗ trợ lên đến 27 kiến trúc vi điều khiển khác khác : - Altera Nios II ARM7, ARM9, Cortex M3 AVR, PIC, 8051 SH, H8S, PowerPC, x86 Đề tài sử dụng FreeRTOS đơn giản, dễ ứng dụng, tính phổ biến mã nguồn mở 2.3.7 Các hàm quản lý task FreeRTOS:  Tạo xóa Task:  xTaskCreate portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pvCreatedTask );  Mô tả: Tạo Task thêm vào danh sách task sẵn sàng để thực thi  Tham số: pvTaskCode: Pointer to đến hàm thưc cho Task pcName: Tên mô tả cho Task ( dùng cho mục đích debug hệ thống) Chiều dài tối đa tên định nghĩa configMAX_TASK_NAME_LEN usStackDepth: Là kích thước Stack đặc trưng cho số lượng biến mà Task quản lý pvParameters: Pointer sử dụng tham số việc tạo Task uxPriority: Độ ưu tiên Task pvCreatedTask: Pointer trỏ đến Task tạo  Trị trả về: pdPASS Task tạo thành công  vTaskDelete void vTaskDelete( xTaskHandle pxTask );  Mơ tả: Xóa Task từ RTOS realtime management  Tham số:pxTask poiter đến Task cần xóa  Trị trả về: Khơng trị  Điều khiển Task:  vTaskDelay void vTaskDelay( portTickType xTicksToDelay );  Mô tả: Delay ( block) Task khoảng thời gian kể từ lần cuối hàm gọi ( số ticks mà Task bị block)  Tham số: xTicksToDelay: Số Ticks Task bị block  Trị trả về: Không trị  vTaskDelayUntil void vTaskDelayUntil(portTickType *pxPreviousWakeTime, portTickType xTimeIncrement );  Mơ tả: Block Task chu kì xác định  Tham số: pxPreviousWakeTime Pointer đến biến lưu giá trị lần cuối Task unclocked Biến phải khởi tạo giá trị với giá trị cho lần dùng xTimeIncrement : Là chu kì thời gian Task đươck uncloked sau thời (*pxPreviousWakeTime + xTimeIncrement) Gọi hàm naỳ với mục đích thực thi Task theo chu kì định  Trị trả về: Không trị  uxTaskPriorityGet unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask );  Mô tả:Đọc giá trị độ ưu tiên Task  Tham số: pxTask : biến Handle Task cần đọc  Trị trả về: Độ ưu tiên Task cần gọi  vTaskPrioritySet void vTaskPrioritySet(xTaskHandle pxTask, unsigned portBASE_TYPE uxNewPriority );  Mô tả: Cài đặt độ ưu tiên cho Task  Tham số: pxTask : Handle Task set độ ưu tiên Nếu NULL set độ ưu tiên Task gọi ( Task tại) uxNewPriority : Độ ưu tiên cho Task  Trị trả vể: Không trị  vTaskSuspend void vTaskSuspend( xTaskHandle pxTaskToSuspend );  Mơ tả: Suspend ( xem thêm chương 1) Task mà không quan tâm đến độ ưu tiên Task  Tham số: pxTaskToSuspend : Handle Task bị suspend  Trị trả về: Không trị  vTaskResume void vTaskResume( xTaskHandle pxTaskToResume );  Mô tả: Resume Task, dùng với xTaskSuspend  Tham số: pxTaskToResume : Task Resume:  Trị trả về: Không trị  xTaskResumeFromISR portBASE_TYPE xTaskResumeFromISR( xTaskHandle pxTaskToResume );  Mô tả:Resume Task từ ISR  Tham số: pxTaskToResume: Handle Task Resume  Trị tra về: pdTRUE trị việc resuming có tác dụng lên context switch, ngược lại pdFALSE  Các tiện ích khác cho Tasks xTaskGetCurrentTaskHandle() xTaskGetStackHighWaterMark() xTaskGetTickCount() xTaskGetTickCountFromISR() xTaskGetSchedulerState() xTaskGetNumberOfTasks() vTaskList() vTaskStartTrace() ulTaskEndTrace() vTaskGetRunTimeStats() vTaskSetApplicationTag() xTaskCallApplicationTaskHook() uxTaskGetStackHighWaterMark()  Tham khảo thông tin FreeRTOS: Ngoài hàm nêu trên, người sử dụng tìm thơng tin cụ thể hỗ trợ trang web thức FreeRTOS là: freertos.org Các hàm kể có đường link đến thẻ API Reference trang chủ FreeRTOS Chương 3: THỰC HÀNH LAB 3.1 Mô tả chung: Mơ hình xây dựng chuẩn hệ thống hiển thị phân tích trạng thái mơi trường Nó sử dụng kiến trúc ngơn ngữ bậc cao để module hóa task để chúng thực chạy mãi Tín hiệu ngõ vào hệ thống nồng độ muối, CO2, tốc độ dòng chảy lấy từ giá trị random ngõ vào nhiệt độ lấy từ module cảm biến nhiệt độ nội chip Xem tất liệu thu thập từ số vùng địa lý cụ thể mặt đất đại dương Sau thu thập, giá trị tín hiệu ngõ vào xử lý tính tốn để so sánh đưa cảnh báo phù hợp nêu liệu vượt khỏi vùng an toàn - Sử dụng board ARM Cortex-M3 v7M để thực hệ thống - Xây dựng hệ thống thông qua việc quản lý task: Remote Communication Task: cung cấp giao tiếp với trình duyệt web dựa ứng dụng PC Ứng dụng hỗ trợ cho việc truyền thông chiều hệ thống điều khiển hệ thống hiển thị ngồi mơi trường - u cầu task này: phải hỗ trợ việc hiển thị liệu đo đạcv tính tốn trả từ hệ thống lên PC Command Task: task nhận giải thích câu lệnh từ communication task sau đưa trực tiếp đến hệ thống phụ để thực yêu cầu cảu task Đồng thời định dạng liệu yêu cầu để gửi communication task thông qua mạng đến hệ thống điều khiển Thermal Image Capture Task: task vẽ ngõ analog từ hình ảnh thu thập từ mơi trường Hệ thống sau chuyển dạng digital, thực FFT liệu digital gửi giá trị tần số đến hệ thống thu thập liệu điều khiển Dữ liệu thu thập dùng để chặn nguy gây ô nhiễm Portable Generator Control Subsystem: task cung cấp tín hiệu để điều khiên nguồn tạo Nếu điện áp giảm, nguồn tạo bị chuyển sau hoạt động tốc độ quay tăng lên để giảm điện áp pin Measure Task: task có nhiệm vụ thu thập liệu đầu vào từ cảm biến, trường hợp ta lấy giá trị random nồng độ CO2, muối, tốc độ dòng chảy lấy giá trị từ cảm biến nhiệt độ nội chip 6 Compute Task: task tạo với mục đích tính giá trị xác nồng độ CO2, tốc độ dòng chảy, nồng độ muối nhiệt độ Vì giả thiết ban đầu, số liệu thu có sai số định thiết bị Display Task: để hiển thị giá trị thông số: nhiệt độ, tốc độ chảy, nồng độ muối, CO2 cảnh báo OLED Warning/Alarm Task: mục đích task so sánh giá trị liệu thu thập với giá trị chuẩn có cảu mơi trường sau đưa tín hiệu cảnh báo cần thiết Annuncaiton Task: task có chức đưa thơng báo tình trạng pin, … 10 Scheldule Task: lập lịch cho việc thực task 11 Keypad Task: làm việc với phím chức hệ thống Nhìn chung lại hệ thống gồm có khối chính: measure, compute, display, annunciation, scheldule 3.2 Kiến trúc phần mềm hệ thống: Hệ thống thu thập hiển thị liệu môi rường tổ chức theo chuỗi tasks theo chức phân tích Các task thực nguồn trạng thái bật Điều cần quan tâm quy định thứ tự ưu tiên cho phù hợp Thông tin liệu task hệ thống phải thay đổi chia sẻ với 3.2.1Tasks Task Control Block (TCB): Như xác định trên, thành phần hệ thống thiết kế theo tasks Mỗi task xem cấu trúc TCB ngôn ngữ lập trình C: struct MyStruct { void (*myTask)(void*); c }; Trong đó: - void (*myTask)(void*): rỏ chương trình mà task thức void (*myTask)(void*): rtor liệu task => Việc tạo TCB hệ điều hành thời gian thực sử dụng hàm API xTaskCreate ( ) quy định Như với yêu cầu hệ thống có tất 11 tasks 3.2.2 Trao đổi liệu task Control Data: - Tất hệ thống chia thông số dạng biến tồn cục Dựa việc phân tích chức task liệu giá trị ngõ vào ta dễ dàng nhận kiểu biến có các task sau: Measure task: Type unsigned int  temperatureRawBuf[8] buffer  flowRateRawBuf[8]  carbonLevelRawBuf[8] buffer  salinityLevelRawBuf[8] buffer Display task: Declare as a measurement temperature Declare as a measurement flow rate buffer Declare as a measurement carbon level Declare as a measurement salinity level Type unsigned int  temperatureRawBuf[8] buffer  flowRateRawBuf[8]  carbonLevelRawBuf[8] buffer  salinityLevelRawBuf[8] buffer Display task: Declare as a measurement temperature Declare as a measurement flow rate buffer Declare as a measurement carbon level Declare as a measurement salinity level Type (To be supplied by engineering)  Keypad status and data initial values  Local Comms status and data initial values Alarm task: Type unsigned char  tempOutOfRange  flrtOutOfRange  carbonLevelOutofRange  salinityLevelOutofRange Type Bool1 initial value initial value initial value initial value      tempHigh initial value FALSE flrtHigh initial value FALSE carbonLevelHigh initial value FALSE salinityLevelHigh initial value FALSE Polar bear proximity detection initial value FALSE Status task: Type unsigned short  batteryState initial value 200 Với cấu trúc liệu: Global int data; struct DataStruct { int* taskDataPtr; typedef struct DataStruct TaskData; TaskData myTaskData; myTaskData.taskDataPtr = &data; }; Với int* taskDataPtr trỏ biến task Từ đó, thấy trỏ liệu cần task là: MeasureData – Holds pointers to the shared variables: temperatureBuf flowRateBuf carbonLevelBuf salinityLevelBuf ComputeData – Holds pointers to the shared variables: temperatureBuf flowRateBuf carbonLevelBuf salinityLevelBuf tempCorrected flowRateCorrected carbonLevelCorrected salinityLevelCorrected DisplayData – Holds pointers to the shared variables: tempCorrected flowRateCorrected carbonLevelCorrected salinityLevelCorrected batteryState WarningAlarmData – Holds pointers to the shared variables: temperatureBuf flowRateBuf carbonLevelBuf salinityLevelBuf batteryState Status – Holds pointers to the shared variables: batteryState KeypadConsoleData – Holds pointers to the variables: Keypad status and data (To be supplied by engineering) (To be updated as necessary) LocalComsData – Holds pointers to the variables: Local Comms status and data (To be supplied by engineering) (To be updated as necessary) … 3.2.3 Xây dựng hàm: Hàm Measure: Với kiểu void* kiểu trả void Hàm dùng để đo nhiệt độ, tốc độ chảy, nồng độ muối, CO2, trạng thái pin,… Trong đó: - Đo nhiệt độ dùng cảm biến nhiệt độ nội chip tiến hành ADC - Các giá trị lại lấy cách tạo random:  Tốc độ dòng chảy: đặt biến đếm ban đầu = 0, lần đếm chẵn tăng 3, đếm lẻ giảm 1, giá trị quy định vùng từ đến 100  Nồng độ cacbon: đặt biến đếm ban đầu = 0, lần đếm chẵn tăng 5, đếm lẻ giảm 2, giá trị quy định vùng từ 40 đến 400  Nồng độ muối: đặt biến đếm ban đầu = 0, lần đếm chẵn tăng 2, đếm lẻ giảm 1, giá trị quy định vùng từ 20 đến 45 - Hàm Compute: Với kiểu void* kiểu trả void Hàm dùng để tính giá trị xác ngõ vào theoc ác công thức cụ thể:     - Nhiệt độ: tempCorrected = + 0.8tempRaw Tốc độ dòng chảy: flowRateCorrected = +2.0flowRateRaw Nồng độ cacbon: carbonLevelCorrected = + 1.2 carbonLevelRaw Nồng độ muối: salinityLevelCorrected = + 0.7 salinityLevelRaw Hàm hiển thị lên OLED: Với kiểu void* kiểu trả void Hàm dùng hàm chuyển đổi kiểu int sang char để hiển thị giá trị ngõ vào cách xác hàm hiển thị lên OLED thư viện ARM - Hàm cảnh báo:  Nhiệt độ: Khi nhiệt độ > < OLED hiển thị thơng báo, đồng thời LED nháy  Tốc độ dòng chảy: Khi tốc độ dòng chảy > < OLED hiển thị thơng báo, đồng thời LED nháy  Nồng độ muối: Khi nồng độ muối > < OLED hiển thị thơng báo, đồng thời LED nháy  Nồng độ cacbon: Khi nồng độ cacbon > < OLED hiển thị thông báo, đồng thời LED nháy - Hàm keypad: nhận mức cao keypad để điều khiển việc chọn task - Hàm LocalComs: Hàm dùng để gửi liệu ngõ vào lên PC nhận tín hiệu điều khiển thơng qua giao tiếp UART Lưu ý set tốc độ baud để giao tiếp - Hàm websever: Hàm dùng để gửi liệu lên trang web nhận tín hiệu điều khiển từ web gửi cho việc chạy task khác hiển thị, tính tốn, … 3.2.4 Lập lịch cho hệ thống: Mỗi task tạo hệ điều hành FreeRTOS lập lịch với thứ tự ưu tiên khác Ứng với thứ tự ưu tiên hệ thống chạy theo trình tự cơng việc: Xác định lựa chọn thông qua keypad Đo đạc giá trị thực Tính tốn giá trị xác Hiển thị giá trị xác lên OLED Xác định tình trạng pin So sánh đưa cảnh báo Nếu task có thứ tự ưu tiên giống thực theo thứ tự tạo task Lưu ý hàm task phải chạy mãi (for{;;}) … Code: file gửi kèm Đánh giá hệ thống: Hệ thống chạy ổn định, module coi task, ghép vào tốt Tuy nhiên dùng IAR giới hạn code nên ghép vài task ứng dụng hiển thị giá trị web 6.Các hướng mở rộng: - Kết nối với sensor bên để thu thập xử lý liệu cách xác Mở rộng ứng dụng cho nhiều sensor, khơng có nồng độ muối, nồng độ CO2, nhiệt độ, tốc độ dòng chảy tình trạng pin ... 5;  Nhiệt độ hiển thị OLED để thông báo cho người dùng 2.3 Tìm hiểu h điều h nh FreeRTOS: 2.3.1Định nghĩa h điều h nh thời gian thực RTOS: Là h thống có: - Lịch trình thực thi theo thời gian... thống: H thống thu thập hiển thị liệu môi rường tổ chức theo chuỗi tasks theo chức phân tích Các task thực nguồn trạng thái bật Điều cần quan tâm quy định thứ tự ưu tiên cho phù h p Thông tin... thị, tính tốn, … 3.2.4 Lập lịch cho h thống: Mỗi task tạo h điều h nh FreeRTOS lập lịch với thứ tự ưu tiên khác Ứng với thứ tự ưu tiên h thống chạy theo trình tự cơng việc: Xác định lựa chọn

Ngày đăng: 28/09/2019, 12:24

TỪ KHÓA LIÊN QUAN

w