Lap Trinh C Cho He Thong Nhung

229
Lp trình C cho hthng nhúng GV: Đào Đức Thnh BM: Kthut đo & THCN

Transcript of Lap Trinh C Cho He Thong Nhung

Page 1: Lap Trinh C Cho He Thong Nhung

Lập trình C cho hệthống nhúng

GV: Đào Đức ThịnhBM: Kỹ thuật đo & THCN

Page 2: Lap Trinh C Cho He Thong Nhung

Thế nào là hệ nhúng???

Hệ uP với phần cứng và phần mềm đượcdùng với hệ máy móc, với một số chức năngđặc biệt nào đó.Một hệ nhúng là một bộ phận của một hệthống lớn: ví dụ trên ô-tô.

Page 3: Lap Trinh C Cho He Thong Nhung

Tại sao lại là C ??Nó là một ngôn ngữ trung gian, có cả đặc điểm củangôn ngữ bậc cao và ngôn ngữ bậc thấp.Rất hiệu quảThông dụng, dễ hiểu.Có các chương trình dịch cho các uP hệ nhúng 8 bit đến 32 bit.Có nhiều nhân viên lành nghề.Sách, các khoá học, ví dụ và các trang web chongôn ngữ này rất nhiều.

Page 4: Lap Trinh C Cho He Thong Nhung

Yêu cầu lập trình C cho MCS51

Đã biết ngôn ngữ lập trình: Jawa, C++, Basic..Có cơ sở về ngôn ngữ C.Sử dụng Keil C Compiler.

Page 5: Lap Trinh C Cho He Thong Nhung

Phần mềm với “Super loop”

Vấn đề:Một môi trường phần mềm tối thiểu cần để tạo

ra một chương trình C cho hệ nhúng là gì?

Page 6: Lap Trinh C Cho He Thong Nhung

Phần mềm với “Super loop”Giải pháp:

void main(void){/* Prepare for task X */X_Init();while(1) /* 'for ever' (Super Loop) */

{X(); /* Perform the task */}

}

Page 7: Lap Trinh C Cho He Thong Nhung

Phần mềm với “Super loop”

Ưu điểm:Ưu điểm chính của “Super loop” là đơn giản. Dễviêt, gỡ rối, kiểm tra, duy trì hoạt động.Hiệu quả cao, thực hiện với phần cứng tối thiểu.“Super loop” rất nhỏ gọn.

Page 8: Lap Trinh C Cho He Thong Nhung

Phần mềm với “Super loop”

Nhược điểm:Nếu ứng dụng yêu cầu độ chính xác thời gian thìnó không đáp ứng được và không mềm dẻo.Lúc nào cũng hoạt động ở công suất tối đa. Tiêuthụ nhiều điện.

Page 9: Lap Trinh C Cho He Thong Nhung

"Hello, Embedded World"

Page 10: Lap Trinh C Cho He Thong Nhung

"Hello, Embedded World"void main(void)

{/* Init the system */C_HEAT_Init();while(1) /* 'for ever' (Super Loop) */

{/* Find out what temperature the user requires (via the user interface) */

C_HEAT_Get_Required_Temperature();/* Find out what the current room temperature is(via temperature sensor) */

C_HEAT_Get_Actual_Temperature();/* Adjust the gas burner, as required */

C_HEAT_Control_Boiler();}

}

Page 11: Lap Trinh C Cho He Thong Nhung

Keil C compiler

Page 12: Lap Trinh C Cho He Thong Nhung

Keil C compiler

Tạo ra một Project với Keil C

Page 13: Lap Trinh C Cho He Thong Nhung

Keil C compilerVùng nhớ:

Bộ nhớ chương trình: codeBộ nhớ dữ liệu trong:

data.idatabdata

Bộ nhớ dữ liệu ngoài:xdatapdata

Bộ nhớ xa (far memory): far

Page 14: Lap Trinh C Cho He Thong Nhung

Keil C compilerBộ nhớ xa (far memory): farBộ nhớ thanh ghi chức năng đặc biệt.

Page 15: Lap Trinh C Cho He Thong Nhung

Keil C compiler

Mô hình tổ chức bộ nhớ:Small: các biến chứa trong bộ nhớ trong (data).Compact: các biến có thể chứa trong 1 trang 256 byte của bộ nhớ ngoài (pdata)Large: các biến chứa trong 64kbyte bộ nhớ ngoài.

Page 16: Lap Trinh C Cho He Thong Nhung

Keil C compiler

Kiểu của bộ nhớ:

Page 17: Lap Trinh C Cho He Thong Nhung

Keil C compiler

Example:char data var1;char code text[] = "ENTER PARAMETER:";unsigned long xdata array[100];float idata x,y,z;unsigned int pdata dimension;unsigned char xdata vector[10][4][4];char bdata flags;

Page 18: Lap Trinh C Cho He Thong Nhung

Keil C compiler

Kiểu của dữ liệu:

Page 19: Lap Trinh C Cho He Thong Nhung

Keil C compiler

Đặt biến vào vị trí bộ nhớ:type memory_space variable_name _at_

constant;

Page 20: Lap Trinh C Cho He Thong Nhung

Keil C compilerstruct link

{struct link idata *next;char code *test;};Struct link list idata _at_ 0x40; /* list at idata 0x40 */char xdata text[256] _at_ 0xE000; /* array at xdata 0xE000 */int xdata i1 _at_ 0x8000; /* int at xdata 0x8000 */

void main ( void ) {link.next = (void *) 0;i1 = 0x1234;text [0] = 'a';}

Page 21: Lap Trinh C Cho He Thong Nhung

Keil C compiler

Con trỏ:char *s; /* string ptr */int *numptr; /* int ptr */long *state; /* Texas */

Page 22: Lap Trinh C Cho He Thong Nhung

Keil C compilerchar * xdata strptr; /* generic ptr stored in xdata */int * data numptr; /* generic ptr stored in data */long * idata varptr; /* generic ptr stored in idata */

Page 23: Lap Trinh C Cho He Thong Nhung

Keil C compiler

char data *str; /* ptr to string in data */int xdata *numtab; /* ptr to int(s) in xdata */long code *powtab; /* ptr to long(s) in code

*/

Page 24: Lap Trinh C Cho He Thong Nhung

Keil C compilerchar data * xdata str; /* ptr in xdata to data char */int xdata * data numtab; /* ptr in data to xdata int */long code * idata powtab; /* ptr in idata to code long */

Page 25: Lap Trinh C Cho He Thong Nhung

Keil C compiler

Hàm: C cho MCS51 có một số mở rộng chohàm như sau:

Chỉ ra một hàm sử dụng như ngắt.Chọn bank thanh ghi.Chọn mô hình bộ nhớ.…..

Page 26: Lap Trinh C Cho He Thong Nhung

Keil C compiler

return_type funcname (args) {small | compact | large} reentrant interrupt n using n

Page 27: Lap Trinh C Cho He Thong Nhung

Keil C compiler

Page 28: Lap Trinh C Cho He Thong Nhung

Các ngoại vi trên chip

Page 29: Lap Trinh C Cho He Thong Nhung

Các cổng và SFR

File Header của SFR chứa các dòng sau:

Gửi số liệu ra P1 như sau:

sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;

unsigned char Port_data;Port_data = 0x0F;P1 = Port_data; /* Write 00001111 to Port 1 */

Page 30: Lap Trinh C Cho He Thong Nhung

Các cổng và SFRunsigned char Port_data;P1 = 0xFF; /* Set the port to ‘read mode’ */Port_data = P1; /* Read from the port */

Page 31: Lap Trinh C Cho He Thong Nhung

Các cổng và SFRSử dụng các biến sbit:

#define LED_PORT P3#define LED_ON 0 /* Easy to change the logic here */#define LED_OFF 1...sbit Warning_led = LED_PORT^0; /* LED is connected to pin 3.0 */...Warning_led = LED_ON;... /* delay */Warning_led = LED_OFF;... /* delay */Warning_led = LED_ON;... /* etc */

Page 32: Lap Trinh C Cho He Thong Nhung

Các cổng và SFR

Ví dụ đọc viết các byte:

Page 33: Lap Trinh C Cho He Thong Nhung

Các cổng và SFRvoid main (void){unsigned char Port1_value;/* Must set up P1 for reading */P1 = 0xFF;while(1){/* Read the value of P1 */Port1_value = P1;/* Copy the value to P2 */P2 = Port1_value;}}

Page 34: Lap Trinh C Cho He Thong Nhung

Tạo hàm trễ

Page 35: Lap Trinh C Cho He Thong Nhung

Tạo hàm trễ

Page 36: Lap Trinh C Cho He Thong Nhung

Tạo hàm trễ

Trễ mềm có thể tạo ra khoảng thòi gian ngắn.Không yêu cầu bộ thời gian cứng.Chạy với bất kỳ CPU nào

Nhưng:Không sử dụng khi đòi hỏi t/g chính xác.Cần chỉnh sửa khi thay CPU, thạch anh hay dịch lại chương trình.

Page 37: Lap Trinh C Cho He Thong Nhung

Đọc các công tắc chuyển mạch

Ứng dụng hệ nhúng cần đọc các công tắcđầu vào:

Page 38: Lap Trinh C Cho He Thong Nhung

Đọc các công tắc chuyển mạch

Ví dụ:

Page 39: Lap Trinh C Cho He Thong Nhung

Đọc các công tắc chuyển mạch

Page 40: Lap Trinh C Cho He Thong Nhung

Đọc các công tắc chuyển mạch

Page 41: Lap Trinh C Cho He Thong Nhung

Đọc các công tắc chuyển mạch

Page 42: Lap Trinh C Cho He Thong Nhung

Đọc các công tắc chuyển mạch

Page 43: Lap Trinh C Cho He Thong Nhung

Đọc các công tắc chuyển mạch

Page 44: Lap Trinh C Cho He Thong Nhung

Đọc các công tắc chuyển mạch

Page 45: Lap Trinh C Cho He Thong Nhung

Đọc các công tắc chuyển mạch

Page 46: Lap Trinh C Cho He Thong Nhung

Bài tập:

Page 47: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 48: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Trong phần này ta xem xét hệ nhúng yêu cầuđộ chính xác về thời gian.Hệ thống hoạt động Real-time.

Page 49: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 50: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Có hai vấn đề:Thời gian trễ không chính xác.Hệ thống chạy nhiều ứng dụng

Ta giải quyết bằng trễ phần cứng và ngắt thòi gianthực

Page 51: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 52: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 53: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 54: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 55: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 56: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 57: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 58: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Cơ chế time-out:

Page 59: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 60: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 61: Lap Trinh C Cho He Thong Nhung

Hệ thời gian thực

Page 62: Lap Trinh C Cho He Thong Nhung

Hệ điều hành cho hệnhúng

Page 63: Lap Trinh C Cho He Thong Nhung

Một chương trình đơn giảnnhất

Page 64: Lap Trinh C Cho He Thong Nhung

Một chương trình đơn giảnnhất

Chỉ thực hiện X() với một thời gian lấy mẫunào đó.

Page 65: Lap Trinh C Cho He Thong Nhung

Yêu cầu cho hệ: Ô-tô

Đo tốc độ 0.5s một lần.Hiển thị quét 40 lần trên 1 s.Tính toán độ mở van tiết lưu 0.5s một lần.Biến đổi t-f 20 lần trên sLấy mẫu độ rung máy 1000 lần trên 1s.Quét bàn phím 200msSensor lấy mẫu 1 lần trên s………

Page 66: Lap Trinh C Cho He Thong Nhung

Yêu cầu cho hệ: Ô-tô

Hệ điều hành.

Page 67: Lap Trinh C Cho He Thong Nhung

Chương trình

Page 68: Lap Trinh C Cho He Thong Nhung

Chwơng trình:

Độ chính xác thời gian.Thời gian không thay đổi.

Page 69: Lap Trinh C Cho He Thong Nhung

Ngắt thời gian ( lõi của hệ điềuhành cho HN)

Page 70: Lap Trinh C Cho He Thong Nhung

Ngắt thời gian ( lõi của hệ điềuhành cho HN)

Page 71: Lap Trinh C Cho He Thong Nhung

Ngắt thời gian ( lõi của hệ điềuhành cho HN)

Page 72: Lap Trinh C Cho He Thong Nhung
Page 73: Lap Trinh C Cho He Thong Nhung

Hệ điều hành

Mạch thời gian tự động nạp lại ( auto reload)

Page 74: Lap Trinh C Cho He Thong Nhung

Hệ điều hành

Có các yêu cầu:Chu kỳ thời gian dài.Không đòi hỏi xử lý từ CPU-> Timer 2

Page 75: Lap Trinh C Cho He Thong Nhung
Page 76: Lap Trinh C Cho He Thong Nhung
Page 77: Lap Trinh C Cho He Thong Nhung
Page 78: Lap Trinh C Cho He Thong Nhung
Page 79: Lap Trinh C Cho He Thong Nhung

Hệ Multi-state vàđiều khiển tuần tự

Page 80: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Hệ Multi-state ( theo thời gian):chuyển giữacác trạng thái chỉ phụ thuộc vào thời gian(đèn giao thông).Hệ multi-state ( theo thời gian/đầu vào): chuyển giữa các trạng thái phụ thuộc vào cảthời gian và đầu vào của hệ (Máy giắt, báotrộm)Hệ multi-state ( theo đầu vào): chuyển trạngthái chỉ phụ thuộc vào đầu vào

Page 81: Lap Trinh C Cho He Thong Nhung

Hệ multi-state ( theo thời gian)

Hệ hoạt động ở hai hay nhiều trạng thái.Mỗi một trạng thái thực hiện bởi gọi một hay nhiều hàm.Chuyển trạng thái được điều khiển bởi thờigian.Chuyển trạng thái có thể thực hiện bằng gọihàm.

Page 82: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 83: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 84: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 85: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 86: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 87: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 88: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 89: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 90: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 91: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 92: Lap Trinh C Cho He Thong Nhung

Hệ multi-state(Timed/Input)

Hệ hoạt động với hay hay nhiều trạng thái.Mỗi một trạng thái thực hiện một hay nhiếuchức năng.Chuyển trạng thái bằng đầu vào hay thờigian hoặc tổ hợp cả hai thứ.Chuyển trạng thái thực hiện nhờ hàm.

Page 93: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Bơm nước trong 10s nếu không thấy nướcthì tắt bơm và nước cạn.Nếu có nước thì bơm trong 45s hay khi bểđầy

Page 94: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Nếu cửa mở nhậy password trong 30s nếukhông báo động.

Page 95: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Ví dụ: Máy giặt

Page 96: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Người dùng lựa chọn chế độ giặtẤn phím start.Cửa đã đóng.Mở van để nước chảy vào thùng giặt.Mở->đóng van của bột giặt.Khi nước đầy đóng van nước.Nếu có giặt nóng bật đun nước, đạt nhiệt độtắt đi

Page 97: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Bật motor quay lồng giặt. Kết thúc chu kỳmotor dừng.Bật bơm xả nước, khi hết nước thì dừng.

Page 98: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 99: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 100: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 101: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 102: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 103: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 104: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 105: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 106: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 107: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 108: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 109: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 110: Lap Trinh C Cho He Thong Nhung

Hệ multi-state

Page 111: Lap Trinh C Cho He Thong Nhung

Sử dụng cổng thôngtin nối tiếp

Page 112: Lap Trinh C Cho He Thong Nhung

RS232

Chuẩn RS-232:Truyền thông tin không đồng bộ.Tốc độ truyền từ 75 -> 115.2kbps

Page 113: Lap Trinh C Cho He Thong Nhung

RS232

Page 114: Lap Trinh C Cho He Thong Nhung

Phần mềmTruyền 9600 bps -> 1 byte truyền 10 bit->

mất 1msNếu truyền như sau mất 40 ms (dài)

Page 115: Lap Trinh C Cho He Thong Nhung

Phần mềmTăng tốc độ truyền -> gặp một số vấn đề

Page 116: Lap Trinh C Cho He Thong Nhung

Phần mềm

Page 117: Lap Trinh C Cho He Thong Nhung

Phần mềmCổng SCI trên chip: (đã học)Thanh ghi: SCON, SBUFClock: tốc độ tràn T1, T2

Tại sao dùng thạch anh 11,0592MHz

Page 118: Lap Trinh C Cho He Thong Nhung

Phần mềmPhần mềm PC:

DOSWindowsActiveX

Page 119: Lap Trinh C Cho He Thong Nhung

Hàm Printf()Gửi số liệu ra cổng UART.Thời gian truyền lâu.Máy có thể bị treo khic chương trình lỗi.

Page 120: Lap Trinh C Cho He Thong Nhung

RS232 và 8051RS 232 là một phần của 8051PC thường có cổng RS232Khoảng cách truyền xa.Có phần cứng cho nên đòi hỏi tải phần mềmít.

Page 121: Lap Trinh C Cho He Thong Nhung

RS232 và 8051Nối P-PKhông có khả năng phát hiện lỗi phần cứng.

Page 122: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 123: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 124: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 125: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 126: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 127: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 128: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 129: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 130: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 131: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 132: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 133: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 134: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 135: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Page 136: Lap Trinh C Cho He Thong Nhung

Hệ điều hành thờigian thực

Page 137: Lap Trinh C Cho He Thong Nhung

Cấu trúc “Super loop”

Page 138: Lap Trinh C Cho He Thong Nhung

Hệ thống:

Page 139: Lap Trinh C Cho He Thong Nhung

Task theo cho kỳTask thực hiện một lần.

Page 140: Lap Trinh C Cho He Thong Nhung
Page 141: Lap Trinh C Cho He Thong Nhung
Page 142: Lap Trinh C Cho He Thong Nhung
Page 143: Lap Trinh C Cho He Thong Nhung

Single task

Page 144: Lap Trinh C Cho He Thong Nhung

Single task

Page 145: Lap Trinh C Cho He Thong Nhung

Hệ điều hành thời gian thực

Thế nào là hệ điều hành thời gian thực.Thực hiện nó với 8051

Page 146: Lap Trinh C Cho He Thong Nhung

Hệ điều hành thời gian thực

RTX-51 hệ điều hành thời gian thực cho8051RTS full và RTX tiny.

Page 147: Lap Trinh C Cho He Thong Nhung

Hệ điều hành thời gian thực

Page 148: Lap Trinh C Cho He Thong Nhung

Hệ điều hành thời gian thực

Page 149: Lap Trinh C Cho He Thong Nhung

Hệ điều hành thời gian thực

Page 150: Lap Trinh C Cho He Thong Nhung

Hệ điều hành thời gian thực

Page 151: Lap Trinh C Cho He Thong Nhung

Hệ điều hành thời gian thực

Page 152: Lap Trinh C Cho He Thong Nhung

Hệ điều hành thời gian thực

Page 153: Lap Trinh C Cho He Thong Nhung

Hệ điều hành thời gian thực

Page 154: Lap Trinh C Cho He Thong Nhung

Hệ điều hành thời gian thực

Page 155: Lap Trinh C Cho He Thong Nhung

Ví dụ:

Đèn giao thông.Banking

Page 156: Lap Trinh C Cho He Thong Nhung

Watchdog

Page 157: Lap Trinh C Cho He Thong Nhung

Watchdog

Watchdog cần có hai đặc điểm sau:Chương trình thực hiện theo chu kỳ, nếu quá chukỳ đó thì gây ra reset.Khi khởi động uC cần phải định rõ nguyên nhângây ra reset ( reset thường hay watchdog).

Page 158: Lap Trinh C Cho He Thong Nhung

Watchdog

Watchdog có ba vấn đề chinh :Lựa chọn phần cứng.Watchdog với mạch reset.Quá trình phục hồi.

Page 159: Lap Trinh C Cho He Thong Nhung

Watchdog

Lựa chọn phần cứng: ta có thể chọn trênchíp hay mạch ngoài. Chọn trên chip có mộtsố ưu điểm sau:

Giảm độ phức tạp của phần cứng -> hệ ổn định.Giảm giá thành.Giảm kích thước.Chỉ có nó mới cho phép phân biệt nguyên nhângây reset.

Page 160: Lap Trinh C Cho He Thong Nhung

Watchdog

Giám sát lỗi chu kỳ thời gian: trong các ứngdụng theo chu kỳ, watchdog timer cho phépphát hiện tràn thời gian như sau:Đặt thời gian tràn của watchdog ở chu kỳ lớn nhấtCác chu kỳ ứng dụng sẽ xoá watchdog trước khitràn.Cho watchdog làm việc.

Page 161: Lap Trinh C Cho He Thong Nhung

Watchdog

Nếu thời gian tràn có thể cho nó phát ra tínhiệu reset để khắc phục lỗi.Reset có thể do một số nguyên nhân….

Page 162: Lap Trinh C Cho He Thong Nhung

WatchdogThao tác phục hồi thực hiện khi hệ thống bịresetNếu reset thường thì hệ thống sẽ chạy vớicầu hình chuẩn.Nếu reset bởi watchdog có 3 cách sau:

Hệ thực hiện như reset thông thường.Giữ hệ thống ở trạng thái reset, có thể hiểu nhưlà “fail-silent recovery”.Chạy hệ với thuật toán khác, “limp home recovery”.

Page 163: Lap Trinh C Cho He Thong Nhung

Watchdog

Lập thời gian cho WatchdogChu kỳ cố định.Chu kỳ thay đổi.

Page 164: Lap Trinh C Cho He Thong Nhung

Watchdog

Program-Flow Watchdog cải thiện ổn định hệthốngCó hai cách thực hiện:Điền đầy vị trí không sử dụng bằng lệnh NOP.Đặt “PC Error Handler” vào phần cuối của bộ nhớ

Page 165: Lap Trinh C Cho He Thong Nhung

Watchdog

Page 166: Lap Trinh C Cho He Thong Nhung

Watchdog

Tăng tốc độ đáp ứng:Sử dụng lệnh long jump.Đặt ct xử lý lôic tại địa chỉ đó.

Page 167: Lap Trinh C Cho He Thong Nhung

Hệ đa vi xử lý

Page 168: Lap Trinh C Cho He Thong Nhung

Multi uC

Tại sao sử dụng nhiều uC:Thêm hiệu năng cho CPU, các chức năng phầncứng.Thiết kế theo module.

Page 169: Lap Trinh C Cho He Thong Nhung

Multi uC

Thêm hiệu năng cho CPU và các chức năngphần cứng:uC có thông số sau:

60 chân vào ra.6 bộ thời gian.2 UART.128 kROM512 RAMGiá ….. VNĐ

Page 170: Lap Trinh C Cho He Thong Nhung

Multi uC

Page 171: Lap Trinh C Cho He Thong Nhung

Multi uC

62 chân tín hiệu, 4 bộ timer, 2 UART….Thông tin = 1 dây đảm bảo các Task đồngbộ.Multi task có thể thực hiện

Page 172: Lap Trinh C Cho He Thong Nhung

Multi uC

Page 173: Lap Trinh C Cho He Thong Nhung

Multi uC

Page 174: Lap Trinh C Cho He Thong Nhung

Multi uC

Để thực hiện nhiều uC thì phải giải được cácbài toán:Đồng bộ đồng hồ.Thực hiện truyền số liều giữa các nút.Làm thế nào để một nút có thể đọc lỗi từ nútkhác.

Page 175: Lap Trinh C Cho He Thong Nhung

Multi uC

Đồng bộ đồng hồ:

Page 176: Lap Trinh C Cho He Thong Nhung

Multi uC

Page 177: Lap Trinh C Cho He Thong Nhung

Multi uC

Page 178: Lap Trinh C Cho He Thong Nhung

Multi uC

Truyền số liệu: các Task cần truyền số liệucho nhau

Page 179: Lap Trinh C Cho He Thong Nhung

Multi uC

Page 180: Lap Trinh C Cho He Thong Nhung

Multi uC

Phát hiện mạng hay nút lỗi:

Page 181: Lap Trinh C Cho He Thong Nhung

Multi uC

Trong Slave:Slave cần nhận stick trong khoảng thời gian chínhxác cho trước.Đo thời gian này, nếu nó lớn hơn thòi gian đặttrước thì đã có lỗi xảy ra.Đặt watchdog.

Page 182: Lap Trinh C Cho He Thong Nhung

Multi uC

Trong master:Master yêu cầu các slave trả lời trong thời gianđịnh trước.

Page 183: Lap Trinh C Cho He Thong Nhung

Multi uC

Khi lỗi trong slave: nó duy trì trạng thái an toàn cho đến khi nhận được tính hiệu start từmaster.Lỗi master:

Chuyển sang chế độ an toàn.Khởi động lại mạng.Khởi động lại các slave

Page 184: Lap Trinh C Cho He Thong Nhung

Multi uC

Nhiều uC cho ứng dụng có độ an toàn cao.

Page 185: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 186: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Điều khiển vòng hở:

Page 187: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 188: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Điều khiển vòng kín:

Page 189: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 190: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Thuật toán xử dụng cho điều khiển vòng kínlà thuật toán PID.PID có một số thông số sau:

U(k) setpoin.E(k) sai lệch tai thời điểm lấy mẫu kK hệ số tỉ lệ1/Ti Hệ số tích phân.Td hệ số vi phân.

Page 191: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 192: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 193: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 194: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 195: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 196: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Lựa chọn thông số cho PID:Đặt Ki và Kd về 0.Tăng Kp đến khi hệ bắt đầu dao động.Giảm Kp bằng 1 nửa giá trị trên.Thử nghiệm với giá trị Kd nhỏ để giảm thay đổiđầu ra.Thay đổi Ki giá trị nhỏ để giảm sai lẹch tĩnh.

Page 197: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Tần số lấy mẫu:Tần số lấy mẫu phụ thuộc vào tốc độ thay đổi củatín hiệu.

Page 198: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Phần cứng để thực hiện PID:Thực hiện một vài phép tính số nguyên và sốthực.Thời gian thực hiện thay đổi thông thường nóthực hiện 4 phép nhân, 3 phép cộng và 2 phéptrừVới số thực và với Keil C nó thực hiện 2000 lệnhNó có thể thực hiện cỡ ms với 8051 chạy ởFosc=24MHz

Page 199: Lap Trinh C Cho He Thong Nhung

Điều khiển PID1 ms đáp ứng phần lớn nhu cầu điều khiển (đòihỏi vài trăm mS).Nếu yêu cầu cao hơn thì có Infineon 517 and 509 có phần cứng cho thực hiện phép toán nhanhhơn.

Page 200: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

PID phù hợp với hệ nhiều bộ ĐK 1vào-1 raKhông cho phép ĐK nhiều đầu vào/raDùng thông dụng, hiệu quảdễ thực hiện.Thông số phải điều chỉnh và có thể rất mấtthời gian.

Page 201: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 202: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 203: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 204: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 205: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 206: Lap Trinh C Cho He Thong Nhung

Điều khiển PID

Page 207: Lap Trinh C Cho He Thong Nhung

LIÊN KẾT CÁC uC BẰNG CÔNG TRUYỀN THÔNG

Page 208: Lap Trinh C Cho He Thong Nhung
Page 209: Lap Trinh C Cho He Thong Nhung
Page 210: Lap Trinh C Cho He Thong Nhung

Tuyền thông tin ta có thể dùng cổng thông tin RS-232 và RS485.RS-232:RS-485:

Page 211: Lap Trinh C Cho He Thong Nhung

Truyền số liệu tới 2 hay nhiều uC theo cổng UART

Page 212: Lap Trinh C Cho He Thong Nhung

Cấu trúc của các bản tin truyền giữa M và S

Page 213: Lap Trinh C Cho He Thong Nhung
Page 214: Lap Trinh C Cho He Thong Nhung

Thời gian truyền Stick tuỳ thuộc vào ( M gửi xong bản tin hỏi và S trả lời) tốc độ truyền.

Page 215: Lap Trinh C Cho He Thong Nhung
Page 216: Lap Trinh C Cho He Thong Nhung
Page 217: Lap Trinh C Cho He Thong Nhung
Page 218: Lap Trinh C Cho He Thong Nhung

Mạng sử dụng CAN

Page 219: Lap Trinh C Cho He Thong Nhung

Ta có thể thông tin giữa M và S sử dụng mạng CAN.Bản tin CAN có thể có đến 8 byteCó phần cứng phát hiện và sửa lỗi nên giảm tait cho phần mềmCó thể sử dụng cả Local và phân tánMột số chip 8051 có CAN một số khác phải dùng chip ngoài.

Page 220: Lap Trinh C Cho He Thong Nhung

? CAN

Tốc độ cao: 1 Mbps với chiều dài là 40m và5 kbps tại 10.000mBức điện có 0-8 byte phù hợp với hệ thống nhúngBản tin có thể phát ra ngắt ( nhận xong 8 byte). Không phải từng byte như UART.CAN có ID và mesage fillter.CAN thực hiện đơn giản, giá thành thấp, sửdụng Bus 2 dây hay cáp quang.

Page 221: Lap Trinh C Cho He Thong Nhung

? CAN

Số nút trên Bus là 32.Có thể định các mức ưu tiên cho các bản tin. Stick có ưu tiên cao, Ack ưu tiên thấp.Một số chip có CAN là: Infineon (c505c, c515c), Philips (8xC592, 8xC598) and Dallas (80C390).

Page 222: Lap Trinh C Cho He Thong Nhung
Page 223: Lap Trinh C Cho He Thong Nhung
Page 224: Lap Trinh C Cho He Thong Nhung
Page 225: Lap Trinh C Cho He Thong Nhung

Hai message/tick và tick là 1ms cần tốc độtruyền cỡ 350.000 bps - Khoảng cách là100m.

Page 226: Lap Trinh C Cho He Thong Nhung
Page 227: Lap Trinh C Cho He Thong Nhung
Page 228: Lap Trinh C Cho He Thong Nhung

Bus Wire-OR với khoảng cách 1m

Page 229: Lap Trinh C Cho He Thong Nhung