Thiết kế hệ thống phần mềm nhúng cho vi điều khiển AT90S8535

MỤC LỤC

Cấu trúc của vi mạch AT90S8535

Điều này có nghĩa trong một đơn chu kỳ, một thao tác của bộ ALU đợc thực hiện sẽ lấy hai toán hạng từ hai thanh ghi trong tập thanh ghi, sau khi thao tác đợc thực hiện và kết qua trả sẽ đợc lu trở lại tập thanh ghi trong một chu kỳ đồng hồ. Không gian vùng nhớ I/O bao gồm 64 địa chỉ ($20.$5F) dành cho các chức năng điều khiển thiết bị ngoại vi của àC nh : Các thanh ghi điều khiển, bộ Timer/Couter, bộ chuyển đổi ADC và các chức năng I/O khác.

Tập thanh ghi đa năng của àC AT90S8535

Ngoại trừ 5 lệnh trực tiếp SBCI, SUBI, CPI, ANDI, ORI giữa một hằng số và một thanh ghi và lệnh LDI sử dụng để nạp tức thì hằng dữ liệu, những lệnh này phải sử dụng các thanh ghi của nửa thứ hai trong tập thanh ghi (từ R16.R31). Mặc dù không đợc thực hiện một cách vật lý nh trong SRAM, việc tổ chức bộ nhớ này cung cấp sự linh hoạt lớn trong việc truy nhập tới các thanh ghi, nh các thanh ghi X, Y, Z có thể đợc thiết lập để trỏ tới bất kỳ thanh ghi nào trong tập thanh ghi.

Đặc điểm các bộ nhớ trong của à C AT90S8535

Nếu một thủ tục ngắt truy xuất tới EEPROM trong khi một ngắt khác cũng đang truy xuất EEPROM, thì nội dung của các thanh ghi EEAR và EEDR sẽ bị thay đổi, gây lỗi ngắt truy xuất EEPROM. Nếu dữ liệu hoặc địa chỉ mới đợc ghi vào các thanh ghi vào/ra của EEPROM khi một thao tác ghi đang diễn ra, thì thao tác ghi sẽ bị ngắt và kết quả không đ- ợc xác định.

Các chế độ địa chỉ của à C AT90S8535

Kết quả đợc lu trong thanh ghi d (Rd) c) Địa chỉ I/O trực tiếp. Toán hạng địa chỉ chứa trong 6 bit LSB của từ lệnh, n là địa chỉ của thanh ghi nguồn hoặc đích d) Địa chỉ dữ liệu trực tiếp. 16 bit địa chỉ dữ liệu đợc chứa trong 16 bit LSB của hai từ lệnh. Rd/Rr chỉ rừ thanh ghi nguồn hoặc thanh ghi đớch. e) Địa chỉ dữ liệu tơng đối. Chơng trình đợc tiếp tục thực hiện tại địa chỉ đợc chứa bởi thanh ghi Z (Bộ đếm chơng trình (PC) đợc nạp với nội dung của thanh ghi Z) k) Địa chỉ tơng đối của bộ nhớ chơng trình với lệnh RJMP và RCALL.

Không gian bộ nhớ I/O

Một bit của một thanh ghi trong tập thanh ghi có thể sao chép vào trong bit T bằng lệnh BST và một bit trong T có thể đợc sao chép vào một bit trong thanh ghi của tập thanh ghi bởi lệnh BLD. SP đợc tăng lên 1 byte khi dữ liệu đợc lấy ra khỏi Stack với lệnh POP và nó đợc tăng 2 byte khi một địa chỉ đợc lấy ra từ Stack với lệnh trở về từ chơng trình con RET hoặc lệnh trở về từ một ngắt RETI.

Ngắt và xử lý ngắt trong à C AT90S8535

Nếu một hoặc nhiều điều kiện ngắt xẩy ra khi bit cho phép ngắt chung bị xoá, các cờ ngắt tơng ứng sẽ đợc thiết lập và đợc nhớ cho đến khi bit cho phép ngắt chung đợc thiết lập và các ngắt sẽ đợc thực hiện tuỳ theo cấp u tiên của mỗi ngắt. • Bit 7 - INT1 : Bit cho phép ngắt ngoài mức 1 (External Interrupt Request 1 Enable) Khi bit INT1 đợc thiết lập và bit I trong thanh ghi trạng thái SREG đợc thiết lập, thì chân yêu cầu ngắt mức 1 từ bên ngoài đợc cho phép.

Các chế độ nghỉ của à C AT90S8535

Khi các bit SM1/SM0 đợc đặt là 00, lệnh SLEEP sẽ đa MCU vào chế độ Idle, dừng hoạt động của CPU và cho phép SPI, UARTs, Analog Comparator , ADC, Timer/Counters, Watchdog và hệ thống ngắt tiếp tục hoạt động. Nếu ngắt từ bộ so sánh tín hiệu tơng tự (Analog Comparator) không đợc yêu cầu thì bộ so sánh tín hiệu tơng tự có thể không đợc hoạt động bằng việc thiết lập bit ADC trong thanh ghi ACSR (Analog Comparator Control and Status Register).

Các mạch điều khiển trong à C AT90S8535

Nếu chu kỳ ghi không đợc kết thúc (tức là, ngời sử dụng đa MCU vào trạng thái nghỉ trớc khi bit OCR2UB trở về 0), thiết bị sẽ không bao giờ nhận đợc một tín hiệu so sánh bằng và MCU sẽ bị treo.  Nếu T/C2 đợc sử dụng để đánh thức thiết bị hoạt động trở lại từ chế độ Power Save, phải đề phòng trờng hợp nếu ngời sử dụng muốn quay trở lại chế. độ Power Save: ngắt logic cần một chu kỳ TOSC1 để đợc Reset. Nếu khoảng thời gian giữa quá trình đánh thức và quá trình quay trở lại chế độ Power Save nhỏ hơn một chu kỳ TOSC1 thì ngắt sẽ không xảy ra và thiết bị sẽ không đợc. Nếu ngời sử dụng nghi ngờ khụng rừ khoảng thời gian trớc khi quay trở lại chế độ Power Save đã đủ cha thì có thể sử dụng giải thuật sau để đảm bảo. đủ một chu kỳ TOSC1:. Ghi một giá trị vào thanh ghi TCCR2, TCNT2 hoặc OCR2. Đợi đến khi cờ báo bận cập nhật tơng ứng trong thanh ghi ASSR trở về zero. Chuyển vào chế độ Power Save.  Khi hoạt động không đồng bộ đợc chọn, bộ tạo dao động 32kHz cho T/C2 luôn hoạt động, trừ khi trong chế độ Power-down. Sau một tín hiệu Resset power-up hoặc một tín hiệu wake-up từ chế độ Power-down, ngời sử dụng cần chú ý rằng thực tế bộ tạo dao động có thể mất 1 giây để ổn định. Ngời sử dụng nên đợi ít nhất một giây trớc khi T/C2 hoạt động sau một tín hiệu Resset power- up hoặc một tín hiệu wake-up từ chế độ Power-down. Nội dung của tất cả các thanh ghi của T/C2 đợc xem nh bị mất sau một tín hiệu wake-up từ chế độ Power-down do tín hiệu đồng hồ không ổn định khi khởi tạo mà không cần quan tâm đến bộ tạo dao động có đang hoạt động hay không hặc tín hiệu đồng hồ có đợc áp dụng cho chân TOSC hay không.  Mô tả tín hiệu wake-up trong chế độ Power Save khi bộ đinh thời gian. đợc tính thời gian không đồng bộ: Khi điều kiện ngắt xảy ra, tiến trình wake-up. đợc bắt đầu ở chu kỳ sau của bộ định thời gian. Nghĩa là, bộ định thời gian luôn. đợc tăng ít nhất một trớc khi bộ vi xử lý có thể đọc giá trị bộ đếm. Sau khi đợc. đánh thức, MCU tạm dừng bốn chu kỳ, nó thực hiện thủ tục ngắt và khôi phục lại sự thực hiện lệnh tiếp theo lệnh SLEEP.  Trong hoạt động không đồng bộ, sự không đồng bộ hoá của các cờ ngắt cho bộ dịnh thời không đồng bộ chiếm ba chu kỳ MCU thêm một chu kỳ. của bộ định thời gian. Do đó, bộ định thời gian đợc tăng ít nhất một trớc khi MCU có thể đọc giá trị của bộ định thời gian gây ra việc thiết lập của cờ ngắt. Chân so sánh đầu ra bị thay đổi trên đồng hồ của bộ định thời gian và không đ- ợc đồng bộ hoá với đồng hồ của MCU. b) Mạch kiểm tra tuần tự bộ định thời gian Watchdog Timer. • UBRR = Nội dung của thanh ghi tốc độ của UART (0..255) Với các tần số chuẩn của đồng hồ tinh thể, các tốc độ Baud thờng đợc sử dụng nhất có thể đợc tạo ra bằng việc sử dụng sự thiết lập UBRR nh trong bảng 2.23. Các giá trị của UBRR sinh ra tốc độ Baud thực tế sai khác ít hơn 2% so với tốc độ Baud gốc đợc in chữ đậm trong bảng. Tuy nhiên, không nên sử dụng các tốc độ Baud có mức lỗi lớn hơn 1%. Vì tỷ lệ lỗi càng cao làm cho khả năng chống nhiễu càng thấp. Bảng 2.23 : Sự thiết lập UBRR tại các tần số đồng hồ tinh thể khác nhau. Thanh ghi tốc độ Baud của UART : UBRR. Thanh ghi UBRR là thanh ghi R/W 8 bit xác định tốc độ Baud của UART theo công thức nêu trên. e) Bộ so sánh tín hiệu tơng tự (Analog Comperator).

Hình 2.12 : Sơ đồ khối mạch chia thời gian của T/C2
Hình 2.12 : Sơ đồ khối mạch chia thời gian của T/C2

Module LCD (20x4 characters)

Điều này làm cho thao tác điều khiển hiển thị của module LCD rất linh hoạt, vì ngời sử dụng có thể xuất dữ liệu ra bất kỳ vị trí nào trên màn hình LCD thông qua việc ghi ký tự cần hiển thị vào địa chỉ t-. Để module LCD làm việc theo đúng yêu cầu, cần phải thực hiện khởi tạo cho LCD controller trớc khi thực hiện các thao tác hiển thị dữ liệu.

Bảng 2.34 : Bảng mã ký tự trong CGROM và CGRAM
Bảng 2.34 : Bảng mã ký tự trong CGROM và CGRAM

IC Max232

Giới thiệu chuẩn RS232

Khi PC muốn trao đổi thông tin với các thiết bị ngoại vi thông qua giao diện tuần tự RS232, vấn đề đặt ra là các thiết bị ngoại vi cần phải có một bộ UART đảm nhiệm việc truyền dữ liệu qua giao diện tuần tự. Vì các mức điện áp bên trong các thiết bị ngoại vi chỉ có điện thế từ 0 đến 5V (TTL) hay thấp hơn, nên tín hiệu từ bộ UART của thiết bị ngoại vi ra giao diện RS232 và ngợc lại phải qua bộ chuyển mức tín hiệu.

Hình 2. 35 : Sơ đồ chân và sơ đồ nguyên lý của IC Max232
Hình 2. 35 : Sơ đồ chân và sơ đồ nguyên lý của IC Max232

Cảm biến nhiệt LM335

Ngoài ra, để IC Max232 có thể hoạt động đợc nó cần 4 tụ điện ngoài sử dụng trong bộ bơm điện tích, các tụ này có điện dung 10uF hoặc thấp hơn và đợc nối mạch theo sơ đồ nguyên lý. Khi ghép nối IC Max232 với vi mạch thu phát không đồng bộ vạn năng UART và cổng giao diện nối tiếp RS232, chân tín hiệu TxD của UART có thể.

Một số lý thuyết về chuyển đổi A/D

Khái niệm chung

Qua đặc tuyến truyền đạt của mạch ADC ta thấy, tín hiệu tơng tự UAna đợc chuyển thành tín hiệu bậc thang đều. Gọi tín hiệu tơng tự là SA(UA) và tín hiệu số là SD(UD), khi đó SD đợc biểu diễn dới dạng nhị phân nh sau :. n-1) tuỳ thuộc vào giá trị của kết quả của bộ chuyển đổi A/D.

Một số phơng pháp chuyển đổi AD

    Với phơng pháp này, điện áp vào đợc tích phân trong một khoảng thời gian không đổi Ti, sau khoảng thời gian tích phân đó bộ đếm đợc reset lại và đầu ra của bộ tích phân giảm một cách tuyến tính cho đến khi bằng 0 và bộ đếm dừng lại, quá trình tích phân đợc reset. Vì bộ chuyển đổi A/D đợc tích hợp trên àC AT90S8535, do đó để bộ ADC này có thể hoạt động đợc ta cần đa thêm vào àC một điện 5V (nối qua mạch lọc LC) làm nguồn nuôi cho bộ ADC và một điện áp 2V (đợc phân áp từ nguồn ổn. áp ±5V) làm điện áp chuẩn cho bộ ADC hoạt động.

    Sơ đồ ghép nối à C với module LCD

    Các chân điều khiển RS, R/W và E của LCD controller đợc nối với các chân PD6, PD5 và PD4 của àC, chân PD7 của àC đợc cấu hình là cổng vào để kiểm tra cờ BF (cờ busy) của LCD controller. Chân V0 của LCD controller đợc nối qua biến trở R1 để điều chỉnh độ tơng phản của giao diện LCD.

    Sơ đồ ghép nối à C với module KeyPad

    Để có thể xác định đợc một phím trên bàn phím đợc ấn, đầu tiên thiết lập 4 bit thấp của cổng B ở mức cao để xác định toạ độ hàng của phím, sau đó đảo mức điện áp của cổng B để xác định toạ độ cột của phím đợc ấn. Nh vậy, một phím bất kỳ trên bàn phím sẽ đợc xác định bởi ngắt INT0 của àC.

    Sơ đồ ghép nối à C với cảm biến nhiệt LM335

    Trong àC AT90S8535 đợc tích hợp một bộ UART, mạch thu phát không đồng bộ vạn năng này có thể giao tiếp với PC qua hai đờng tín hiệu TxD (chân PD1) và RxD (chân PD0). Trong ứng dụng ta chỉ cần dùng một bộ chuyển mức từ tín hiệu điện áp TTL sang tín hiệu điện áp RS232.

    Sơ đồ kết nối nguồn nuôi cho vi mạch điều khiển

    Trong chơng trình sử dụng 5 ngắt ngoại trừ ngắt Reset, các ngắt đó là : ngắt bàn phím SCAN_CODE, ngắt cho phép chuyển đổi A/D ENABLE_ADC, ngắt xác định thời gian lặp phím KEY_RATE, ngắt nhận dữ liệu Rx_COMPELET và ngắt kết thúc chuyển đổi A/D END_CONVETER.  Các chơng trình con tính toán và hiển thị kết quả thu đợc từ ADC : MULL_RESULT_CONVER, DIVIDE_TO_GET_TEMPR (thực hiện nhân chia 16 bit để thu đợc kết quả ADC ở số hệ 10), DISPLAY_TEMPR_TO_LCD (hiển thị kết quả của ADC ra giao diện LCD dới dạng 0C hay 0K tuỳ thuộc vào điều kiện. đợc xác định trong chơng trình).

    Hình 4.2 : Lu đồ tổng quát của chơng trình điều khiển
    Hình 4.2 : Lu đồ tổng quát của chơng trình điều khiển

    Lu đồ thuật toán của các chức năng chính

      Trớc khi hiển thị ký tự của phím đợc ấn ra màn hình LCD, chơng trình DISPLAY_KEY, gọi chơng trình con SHOW_CHAR_IN_TxBuff để hiện thị lại 15 ký tự cuối cùng đợc lu trong bộ đệm TxBuff, nếu tổng số ký tự đang có trong bộ đệm TxBuff lớn hơn 15 ký tự. Trong trờng hợp chơng trình không tự động thực hiện đợc kết nối, ngời sử dụng có thể tự thực hiện kết nối khi cần thiết bằng cách gọi chơng trình thực hiện kết nối mới thông qua chức năng Configure\Set port to connect của Menu chính trong chơng trình.

      Hình 4.3 : Lu đồ chơng trình kiểm tra LCD busy
      Hình 4.3 : Lu đồ chơng trình kiểm tra LCD busy

      Một số chức năng chính của chơng trình

      Ngoài các chức năng trên chơng trình cũng cho phép xem lại dữ liệu đợc thu thập từ trớc thông qua chức năng File\View data from list của Menu chơng trình. Chức năng này không chỉ cho phép xem lại dữ liệu mà nó có thể dựng lại.

      Nhận xét và đánh giá

      Kết quả ADC đ- ợc truyền sang máy tính để máy tính thực hiện các thao tác phức tạp nh dựng đồ thị và lu trữ, điều này giúp cho công việc lập trình trở nên đơn giản và đỡ tốn thời gian cũng nh chi phí so với việc thực hiện công việc này trên àC. Nên mặc dù việc thay đổi đại lợng biến đổi ở đầu vào của bộ chuyển đổi A/D trong hệ thống để phù hợp với các ứng dụng thực tế không đòi hỏi nhiều chi phí và thời gian thiết kế lại mạch, nhng chơng trình điều khiển àC và chơng trình trên PC cần có những thay đổi thích hợp.