intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Thiết kế hệ thống nhúng (Embedded Systems Design) - Chương 2 (Bài 3): Bộ xử lý chức năng đơn tiêu chuẩn - Thiết bị ngoại vi

Chia sẻ: Thu Minh | Ngày: | Loại File: PDF | Số trang:17

40
lượt xem
8
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Thiết kế hệ thống nhúng (Embedded Systems Design) - Chương 2 (Bài 3): Bộ xử lý chức năng đơn tiêu chuẩn - Thiết bị ngoại vi. Những nội dung chính trong bài này gồm có: Bộ xử lý chức năng đơn, bộ định thời - Timer, bộ đếm - Counters, watchdog timer. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Thiết kế hệ thống nhúng (Embedded Systems Design) - Chương 2 (Bài 3): Bộ xử lý chức năng đơn tiêu chuẩn - Thiết bị ngoại vi

  1. CHƢƠNG Embedded2:Systems CẤU TRÚC PHẦN Design: CỨNG A Unified HỆ THỐNG NHÚNG Hardware/Software Introduction Bài 3: Bộ xử lý chức năng đơn tiêu chuẩn - Thiết bị ngoại vi 1 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  2. Giới thiệu • Bộ xử lý chức năng đơn – Thực hiện các nhiệm vụ tính toán nhất định – Bộ xử lý chức năng đơn chuyên biệt • Thiết kế cho một nhiệm vụ duy nhất – Bộ xử lý chức năng đơn “tiêu chuẩn" • “Off-the-shelf” -- Thiết kế trƣớc cho một nhiệm vụ chung • VD: ngoại vi • Truyền thông nối tiếp • ADC 2 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  3. Timers, counters, watchdog timers • Bộ định thời - Timer: dùng đo khoảng thời gian – Để phát ra các sự kiện đầu ra định thời • VD: giữ cho đèn xanh sáng 10 s timer – Để đo các sự kiện đầu vào 16-bit up Clk 16 Cnt • VD: đo tốc độ xe counter • Dựa trên việc đếm xung đồng hồ Top • VD: giả sử chu kỳ Clk là 10 ns Reset • Và chúng ta đếm đƣợc 20,000 Clk • Nhƣ vậy, 200 microsec đã trôi qua • Bộ đếm 16-bit sẽ đếm tới 65,535*10 ns = 655.35 microsec., độ phân giải = 10 ns • Top: biểu thị đạt đến số đếm cực đại, quay lại 3 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  4. Bộ đếm - Counters • Counter: giống một timer, nhƣng Timer/counter đếm xung trên một tín hiệu đầu vào Clk 2x1 16-bit up 16 Cnt thay vì xung clk mux counter – VD: đếm số ôtô chạy qua một cảm biến Cnt_in Top – Đôi khi ta có thể cấu hình thiết bị nhƣ Reset Mode một timer hoặc counter 4 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  5. Cấu trúc timer khác • Timer theo khoảng 16/32-bit timer – Biểu thị khi khoảng thời gian Clk Bộ đếm tiến 16- bit 16 Cnt1 Timer với một giá trị yêu cầu trôi qua đếm đặt trước – Chúng ta đặt giá trị đếm cuối Bộ đếm tiến 16- Top1 Clk cùng cho giá trị yêu cầu bit 16 Cnt Bộ đếm tiến 16- • Số xung clk = khoảng bit 16 Cnt2 thời gian yêu cầu / chu Reset Top2 kỳ đồng hồ = • Bộ đếm ghép Top Timer với bộ chia • Bộ chia Clk Bộ chia Bộ đếm tiến 16- bit Giá trị đặt trƣớc – Chia xung đồng hồ – Tăng khoảng thời gian, giảm độ phân giải Mode 5 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  6. Ví dụ: Timer tác động Đàn hiển Nút tác /* main.c */ thị động #define MS_INIT 63535 LCD time: 100 ms void main(void){ int count_milliseconds = 0; • Đo khoảng thời gian giữa trạng thái đèn configure timer mode set Cnt to MS_INIT sáng và ngƣời dùng bấm nút wait a random amount of time turn on indicator light – Timer 16-bit, chu kỳ clk là 83.33 ns, counter start timer tăng sau mỗi 6 chu kỳ đồng hồ while (user has not pushed reaction button){ if(Top) { – Độ phân giải = 6*83.33=0.5 microsec. stop timer set Cnt to MS_INIT – Khoảng tg = 65535*0.5 microsec = 32.77 start timer reset Top millisec } count_milliseconds++; – Muốn chƣơng trình đếm millisec., vì vậy } turn light off khởi đầu bộ đếm 65535 – 1000/0.5 = 63535 } printf(“time: %i ms“, count_milliseconds); 6 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  7. Watchdog timer • Phải reset timer sau mỗi khoảng thời gian osc clk overflow overflow to system reset X, nếu không timer sẽ prescaler scalereg timereg or phát ra một tín hiệu interrupt • Sử dụng thông thƣờng: checkreg xác định lỗi, hoặc tự reset /* main.c */ watchdog_reset_routine(){ • Sử dụng khác: main(){ /* checkreg is set so we can load value into timereg. Zero is loaded into scalereg and timeouts wait until card inserted 11070 is loaded into timereg */ – VD: máy ATM call watchdog_reset_routine checkreg = 1 – 16-bit timer, độ phân while(transaction in progress){ scalereg = 0 giải 2 ms if(button pressed){ perform corresponding action } timereg = 11070 – Giá trị timereg = call watchdog_reset_routine 2*(216-1)–X = 131070– } void interrupt_service_routine(){ X eject card /* if watchdog_reset_routine not called every reset screen – Nếu 2 phút, X = < 2 minutes, interrupt_service_routine is } 120,000 ms. called */ } 7 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  8. Truyền thông nối tiếp dùng UARTs • UART: Universal embedded Asynchronous Receiver device 1 1 0 1 Transmitter 0 0 1 1 – Lấy dữ liệu song song và truyền nối tiếp 10011011 10011011 – Nhận dữ liệu nối tiếp và truyền song song Sending UART Receiving UART start bit end bit • Chẵn lẻ: Thêm bít cho các data kiểm tra đơn giản • Bit bắt đầu, bit kết thúc • Baud rate – Độ thay đổi tín hiệu trên giây – Tốc độ bit thƣờng cao hơn 1 0 0 1 1 0 1 1 Baud rate 8 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  9. Điều xung PWM • Phát xung với thời gian cao/thấp nhất định pwm_o • Duty cycle: % thời gian cao clk – Xung vuông: 50% duty cycle • Sử dụng thông thƣờng: điều 25% duty cycle – average pwm_o is 1.25V khiển điện áp trung bình cấp cho thiết bị điện pwm_o – Đơn giản hơn bộ biến đổi clk DC-DC hoặc ADC – Điều khiển tốc độ động cơ 50% duty cycle – average pwm_o is 2.5V. DC, đèn • Sử dụng khác: lệnh đƣợc mã pwm_o hóa, phía thu sử dụng timer để clk giải mã 75% duty cycle – average pwm_o is 3.75V. 9 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  10. Điều khiển động cơ DC với PWM % o f M a x im u m clk_div counter I n p u t V o lt a g e R P M o f D C M o to r clk V o l t a g e A p p l ie d ( 0 – 254) Điều khiển 0 0 0 độ nhanh chậm của 8-bit 2 .5 50 1840 xung đếm counter < comparator pwm_o cycle_high, 3 .7 5 75 6900 pwm_o = 1 counter >= 5 .0 100 9200 cycle_high cycle_high, pwm_o = 0 Mối quan hệ giữa điện áp đặt và tốc độ động cơ DC Cấu trúc bên trong của PWM void main(void){ Chỉ với PWM không thể điều khiển động cơ DC, một cách thực 5V /* controls period */ hiện đƣợc chỉ ra dƣới đây sử dụng PWMP = 0xff; một transistor MJE3055T. /* controls duty cycle */ PWM1 = 0x7f; 5V Từ bộ xử DC lý MOTOR while(1){}; } A B 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  11. Bộ điều khiển LCD E void WriteChar(char c){ Bus thông tin R/W RS = 1; /* indicate data being sent */ RS DATA_BUS = c; /* send data to LCD */ DB7–DB0 EnableLCD(45); /* toggle the LCD with appropriate delay */ 8 } Vi điều khiển Bộ đk LCD CODES RS R /W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 D escr ip tion I / D = 1 c u r s o r m o v e s le ft D L = 1 8 - b it 0 0 0 0 0 0 0 0 0 1 C l e a r s a ll d i s p la y , r e t u r n c u r s o r h o m e I / D = 0 c u r s o r m o v e s r ig h t D L = 0 4 - b it S = 1 w it h d is p la y s h i ft N = 1 2 ro w s 0 0 0 0 0 0 0 0 1 * R etu rn s cu r so r h o m e S / C = 1 d is p la y s h ift N = 0 1 ro w S ets cu r so r m o v e d ir ection an d /or 0 0 0 0 0 0 0 1 I/D S S /C = 0 c u rso r m o v e m e n t F = 1 5 x1 0 d o ts s p e c i fi e s n o t t o s h i ft d i s p l a y R / L = 1 s h ift t o r ig h t F = 0 5 x7 d o ts O N / O F F o f a l l d i s p la y ( D ) , c u r s o r 0 0 0 0 0 0 1 D C B O N / O F F ( C ) , a n d b lin k p o s i t i o n ( B ) R / L = 0 s h ift t o le ft 0 0 0 0 0 1 S /C R /L * * M o v e c u r s o r a n d sh i ft s d i s p l a y S e t s in t e r fa c e d a ta l e n g th , n u m b e r o f 0 0 0 0 1 DL N F * * d i s p l a y l in e s , a n d c h a r a c t e r fo n t 1 0 W R IT E D A T A W r it e s D a ta 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  12. Bộ điều khiển phím bấm N1 N2 N3 k_pressed N4 M1 M2 M3 M4 4 key_code key_code Bộ điều khiển phím bấm N=4, M=4 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  13. Bộ điều khiển động cơ bƣớc • Động cơ bƣớc: quay một góc cố Sequence 1 A + B + A’ - B’ - định khi cung cấp một tín hiệu 2 - + + - “bƣớc” 3 - - + + 4 + - - + – Ngƣợc lại, động cơ DC chỉ quay 5 + + - - khi có công suất đặt vào Vd 1 MC3479P 15 16 Vm A’ 2 B • Hoạt động quay đạt đƣợc bằng A 3 4 14 13 B’ cách cung cấp một tuần tự điện GND GND 5 12 Bias’/Set 6 11 Phase A’ áp cho các cuộn dây Clk O|C 7 8 10 9 CW’/CCW Full’/Half Step • Bộ điều khiển sẽ thực hiện chức Red A năng này White Yellow A’ B Black B’ 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  14. Động cơ bƣớc với bộ điều khiển (driver) /* main.c */ void main(void){ Bộ điều khiển sbit clk=P1^1; sbit cw=P1^0; */turn the motor forward */ MC3479P cw=0; /* set direction */ 8051 clk=0; /* pulse clock */ void delay(void){ CW’/CCW int i, j; delay(); 10 P1.0 clk=1; CLK for (i=0; i
  15. Động cơ bƣớc không bộ điều khiển (driver) 8051 /*main.c*/ /* counter clockwise movement */ sbit notA=P2^0; if(dir==0){ P2.4 GND/ +V sbit isA=P2^1; for(y=0; y=0; z - 4){ P2.3 sbit isB=P2^3; isA=lookup[z]; P2.2 sbit dir=P2^4; isB=lookup[z-1]; P2.1 notA=lookup[z -2]; P2.0 void delay(){ notB=lookup[z-3]; int a, b; delay( ); for(a=0; a
  16. ADC Vmax = 7.5V 1111 4 4 7.0V 1110 6.5V 1101 3 3 analog output (V) analog input (V) 6.0V 1100 5.5V 1011 2 2 5.0V 1010 4.5V 1001 4.0V 1 1 1000 3.5V 0111 3.0V 0110 time time t1 t2 t3 t4 t1 t2 t3 t4 2.5V 0101 2.0V 0100 0100 1000 0110 0101 0100 1000 0110 0101 1.5V 0011 Digital output Digital input 1.0V 0010 0.5V 0001 0V 0000 Tỷ lệ Tương tự sang số Số sang tương tự 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  17. DAC dùng xấp xỉ nối tiếp Cho một tín hiệu tƣơng tự đầu vào điện áp từ 0 đến 15 volts, và một bộ mã hóa số 8-bit, tính toán mã cho giá trị 5 volts. 5/15 = d/(28-1) d= 85 Encoding: 01010101 Phương pháp xấp xỉ nối tiếp ½(Vmax – Vmin) = 7.5 volts 0 0 0 0 0 0 0 0 ½(5.63 + 4.69) = 5.16 volts 0 1 0 1 0 0 0 0 Vmax = 7.5 volts. Vmax = 5.16 volts. ½(7.5 + 0) = 3.75 volts 0 1 0 0 0 0 0 0 ½(5.16 + 4.69) = 4.93 volts 0 1 0 1 0 1 0 0 Vmin = 3.75 volts. Vmin = 4.93 volts. ½(7.5 + 3.75) = 5.63 volts 0 1 0 0 0 0 0 0 ½(5.16 + 4.93) = 5.05 volts 0 1 0 1 0 1 0 0 Vmax = 5.63 volts Vmax = 5.05 volts. ½(5.63 + 3.75) = 4.69 volts 0 1 0 1 0 0 0 0 ½(5.05 + 4.93) = 4.99 volts 0 1 0 1 0 1 0 1 Vmin = 4.69 volts. 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
3=>0