Bài giảng "Lập trình hệ thống nhúng: chương 5 - Bùi Quốc Bảo" gồm các nội dung sau: Tác vụ chạy đồng thòi, máy trạng thái có chu kỳ khác nhau, khởi tạo scheduler, cập nhật trạng thái tác vụ, thêm tác vụ vào scheduler. . | L P TRÌNH H TH NG NHÚNG BÙI QU C B O Concurrency (Tác v ch y ñ ng th i) M t h th ng có th có 2 hay nhi u tác v ch y ñ c l p nhau. VD: M t h th ng dùng 8051 ñ : B t/T t 1 LED g n vào sau chu kỳ 500 ms. Cho 3 LED vàng-xanh-ñ l n lư t sáng-t t sau chu kỳ 500 ms Chia 2 tác v trên thành 2 máy tr ng thái SM ñ ng b v i chu kỳ 500 ms BM K Thu t ði n T - ðH Bách Khoa 2 1 LED SHOW Blink LED Period: 500 ms LEDON Rotate LED LEDOFF Period: 500 ms GREEN_ON YELLOW_ON RED_ON BM K Thu t ði n T - ðH Bách Khoa 3 enum BLState_t {OFF_STATE,ON_STATE} BLState; enum RTState_t {YELLOW_STATE, GREEN_STATE, RED_STATE} RTState; unsigned void char timerFlag = 0; TimerISR() { timerFlag = 1; } void } void } BL_Update() { RT_Update() { BM K Thu t ði n T - ðH Bách Khoa 4 2 void main(void) { outputInit(); timerInit(); BLStateInit(); STStateInit(); while (1) { while (!timerFlag); BL_Update(); RT_Update(); timerFlag = 0; } } BM K Thu t ði n T - ðH Bách Khoa 5 Shared variable (bi n dùng chung) Ho t ñ ng c a m t h th ng có th ñư c chia thành nhi u tác v ñ c l p m c dù chúng có liên quan t i nhau. VD: M t h th ng phát hi n chuy n ñ ng s d ng 1 sensor k t n i vào chân . M t chuy n ñ ng ñư c phát hi n khi sensor b ng 1 trong 2 l n lâý m u liên ti p cách nhau 200ms. LED1 (nôí vào ) ñư c nh p nháy sau v i chu kỳ 200ms trong th i gian phát hi n chuy n ñ ng. LED2 (nôí vào ) ñư c b t khi phát hi n chuy n ñ ng và t t 10s sau khi chuy n ñ ng không còn b phát hi n. BM K Thu t ði n T - ðH Bách Khoa 6 3 Shared variable (bi n dùng chung) ! ! S0 S1 mnt = 0 mnt = 1 ! !mnt mnt !mnt && (cnt < 50) mnt mnt T0 S2 !mnt T1 T2 cnt = 0 cnt++ !mnt && !(cnt < 50) BM K Thu t ði n T - ðH Bách Khoa 7 Shared variable (bi n dùng chung) Chú ý: Ch có 1 tác v ghi vào bi n chung. Nhi u tác v có th cùng ñ c m t bi n chung. VD V máy tr ng thái cho h th ng làm vi c sau: B t lò ñ t b ng cách set .