Wednesday 28 November 2018

Bài 2. Chế Độ Tắt Nguồn Và Chế Độ Standby

Giới thiệu

Các tính năng tắt nguồn và chế độ Standby được sử dụng để tiết kiệm năng lượng trong các bộ vi điều khiển. 8051 có tính năng tiết kiệm điện tích hợp, rất hữu ích trong các ứng dụng nhúng nơi tiêu thụ điện năng là hạn chế chính.
Logic điều khiển công suất 8051
8051 có hai chế độ tiết kiệm điện,
  • Chế độ Power Down
  • Chế độ Standby

Sự khác biệt giữa Power Down & Idle Mode
Như thể hiện trong hình trên của logic điều khiển công suất 8051, hai bit điều khiển là có, IDL và PD, được sử dụng cho chế độ Standby và Tắt nguồn tương ứng.
Trong chế độ Power Down , đồng hồ dao động được cung cấp cho hệ thống là OFF nghĩa là CPU và các thiết bị ngoại vi không hoạt động ở chế độ này.
Trong Nhàn rỗi Mode, chỉ có đồng hồ cung cấp cho CPU bị ngừng hoạt động, trong khi thiết bị ngoại vi đồng hồ sẽ vẫn hoạt động trong chế độ này.
Do đó điện năng được lưu trong chế độ tắt nguồn nhiều hơn ở chế độ Standby.
Bảng dưới đây cho thấy dòng điện cung cấp cho 8051 bộ điều khiển gia đình ở chế độ Normal (Active), Idle và Power down.
Bộ điều khiển 8051
Tần số dao động hoạt động
Fosc.
Yêu cầu hiện tại ở chế độ Bình thường
Yêu cầu hiện tại ở chế độ Standby
Yêu cầu hiện tại ở chế độ Power Down
AT89S51
12 MHz
25mA
6,5mA
50uA
P89V51RD2
12 MHz
11.5mA
8,5mA
80-90uA
DS80C323
18 MHz
10mA
6mA
Đã bật 0.1uA cho BGR.
Đã tắt 40uA cho BGR.

Theo bảng trên, rõ ràng là mức tiêu thụ điện năng ở chế độ tắt nguồn ít hơn ở chế độ Bình thường hoặc chế độStandby.
8051 có thanh ghi điều khiển công suất để điều khiển công suất. Hãy xem thanh ghi điều khiển công suất.
Đăng ký PCON: Đăng ký điều khiển công suất
PCON (Power control) đăng ký được sử dụng để buộc các vi điều khiển 8051 vào chế độ tiết kiệm năng lượng. Thanh ghi điều khiển công suất 8051 có hai bit chế độ tiết kiệm năng lượng và một bit điều khiển tốc độ truyền nối tiếp.
8051 PCON Đăng ký
Bit 7 - SMOD
       1 = Tốc độ truyền được tăng gấp đôi ở chế độ UART 1, 2 và 3.
       0 = Không ảnh hưởng đến tốc độ Baud.
Bit 3: 2 - GF1 & GF0:
       Đây là những mục đích chung bit cho người dùng.
Bit 1 - PD: Tắt nguồn
       1 = Bật chế độ Power Down. Trong chế độ này, đồng hồ Oscillator đã TẮT và cả đồng hồ CPU và thiết bị ngoại vi đều dừng lại. Đặt lại phần cứng có thể hủy chế độ này.
       0 = Tắt chế độ Tắt nguồn.
Bit 0 - IDL: Không hoạt động
       1 = Bật chế độ Standby. Đồng hồ CPU tắt trong khi mô-đun ngoại vi bên trong như bộ định thời, cổng nối tiếp, ngắt hoạt động bình thường. Ngắt và thiết lập lại H / W có thể hủy chế độ này.
       0 = Tắt chế độ Standby.
Hãy chương trình vi điều khiển AT89C51 để chuyển đổi Pin 0 của cổng 1 và buộc vi điều khiển ở chế độ Chờ (ngủ) bằng ngắt bên ngoài1. Chúng tôi đánh thức vi điều khiển ở chế độ bình thường bằng ngắt ngoài 0.

Các bước lập trình

  1. Bật ngắt toàn cầu và external0 và external1. EA = 1, EXx = 1.
  2. Chọn kiểu ngắt nghĩa là ở đây ngắt trên cạnh rơi được chọn ITx = 0.
  3. Đặt ưu tiên cho ngắt nếu được yêu cầu thông qua thanh ghi IP.
  4. Chế độ ngủ điều khiển cũng có thể bị hủy bằng cách đặt lại pin.
  5. Bật và tắt chế độ rỗi (ngủ) thông qua đăng ký PCON.
Ở đây, chế độ ngủ được kích hoạt trong ISR ngắt 1 bên ngoài và được tắt trong ISR ngắt bên ngoài.

Chương trình cho chế độ Standby 


#include <reg51.h>  /* Include x51 header file */
sbit test = P1^0;        

void delay(k)   /* mSecond Delay function for Xtal 11.0592 MHz */
{
 int i,j;
 for (i=0;i<k;i++)
  for (j=0;j<112;j++);
}

void ExtInt_Init()  /* External interrupt initialize */
{
 IT0 = 1;        /* Interrupt0 on falling edge */
 EX0 = 1;        /* Enable External interrupt0 */
 IT1 = 1;        /* Interrupt1 on falling edge */
 EX1 = 1;        /* Enable External interrupt1 */
 EA  = 1;  /* Enable global interrupt */
 IP = 0x01;  /* Set highest priority for Ext. interrupt0 */
}
           
void External0_ISR() interrupt 0 /* External int0 ISR */
{
 PCON = 0x00;   /* Disable Idle & Power Down mode */
}

void External1_ISR() interrupt 2 /* External int1 ISR */
{
 PCON = 0x01;   /* Enable Idle mode */
     /* Enable Power Down mode by PCON = 0x02; */
}

void main()
{
  ExtInt_Init(); 
 while(1)   /* Toggle P1.0 continuous */
 {
  test = 0;
  delay(30);
  test = 1;
  delay(30);
 }
 
}

Chế độ Power Down

Để bật chế độ Tắt nguồn, đặt PD bit tức là PCON = 0x02. Cũng lưu ý rằng chỉ có phần cứng thiết lập lại có thể hủy bỏ chế độ này.
Lưu ý: theo hướng dẫn sử dụng của gia đình MCS-51 của Intel:
“ Lối thoát duy nhất từ ​​Power Down cho 80C51 là thiết lập lại phần cứng. Đặt lại định nghĩa lại tất cả các SPRS, nhưng không thay đổi RAM trên chip. "
Nhưng theo bảng dữ liệu AT89s51 của Atmel:
“Thoát khỏi chế độ Power-down có thể được khởi tạo bằng cách thiết lập lại phần cứng hoặc bằng cách kích hoạt ngắt ngoài được kích hoạt (INT0 hoặc INT1). Đặt lại định nghĩa lại SFR nhưng không thay đổi RAM trên chip. "
Vì vậy, bộ điều khiển AT89s51 có thể thoát khỏi chế độ tắt nguồn bằng cách thiết lập lại cũng như bằng ngắt ngoài.

No comments:

Post a Comment