Các chân I / O không sử dụng nên được cấu hình như thế nào trên ATMega328P để tiêu thụ điện năng thấp nhất?


15

Tôi đang cố gắng giảm sức mạnh hết mức có thể trong một bo mạch Arduino mà tôi đã tạo ra. Làm thế nào các chân đầu vào không sử dụng nên được cấu hình? Đã có một vài câu trả lời ( ở đây , ở đây ) cho vấn đề này, nhưng tôi đang tìm hiểu cụ thể về ATMega328P.

  1. Đặt pin thành đầu vào, ổ pin cao để tham gia kéo lên bên trong
  2. Đặt pin thành đầu vào, ổ pin thấp
  3. Đặt pin thành đầu vào, kéo lên bên ngoài
  4. Đặt pin thành đầu vào, kéo xuống bên ngoài
  5. Đặt pin thành đầu ra thấp
  6. Đặt pin thành đầu ra cao
  7. Đặt pin thành đầu ra thấp, kéo xuống bên ngoài

Câu trả lời:


12

Sau khi đào qua bảng dữ liệu , tôi thấy điều này:

14.2.6 Chân không được kết nối

Nếu một số chân không được sử dụng, nên đảm bảo rằng các chân này có một mức xác định. Mặc dù hầu hết các đầu vào kỹ thuật số bị tắt ở chế độ ngủ sâu như được mô tả ở trên, nên tránh các đầu vào nổi để giảm mức tiêu thụ hiện tại ở tất cả các chế độ khác khi đầu vào kỹ thuật số được bật (Chế độ đặt lại, Chế độ hoạt động và Chế độ chờ).

Phương pháp đơn giản nhất để đảm bảo mức xác định của pin không sử dụng, là cho phép kéo lên bên trong. Trong trường hợp này, pull-up sẽ bị vô hiệu hóa trong khi thiết lập lại. Nếu mức tiêu thụ điện năng thấp trong khi thiết lập lại là quan trọng, nên sử dụng kéo hoặc kéo xuống bên ngoài. Không nên kết nối trực tiếp các chân không sử dụng với VCC hoặc GND, vì điều này có thể gây ra dòng điện quá mức nếu chân vô tình được cấu hình làm đầu ra.

cập nhật liên quan đến bình luận / câu hỏi:

Theo bảng 14-1, điện trở kéo lên chỉ hoạt động khi thỏa mãn các điều kiện sau:

  1. Pin được đặt làm đầu vào (bit DDxn ở mức logic thấp)
  2. PORTxn được đặt logic cao
  3. PUD là logic thấp

Cách duy nhất bạn sẽ nhận được dòng điện đáng kể chạy qua điện trở kéo lên là nếu pin gặp mức thấp khi bật kéo lên. Điều này có nghĩa là Atmel rối tung lên (không chắc) hoặc bạn có pin được cấu hình làm đầu vào với chức năng kéo lên và pin được kết nối bằng cách nào đó với mặt đất.

Phần 14.2.5thảo luận về kích hoạt đầu vào kỹ thuật số và chế độ ngủ. Tóm lại, đầu vào kỹ thuật số được kẹp xuống đất ở đầu vào của Bộ kích hoạt Schmitt để ngăn mức nổi trong khi ở chế độ ngủ, trừ khi pin được cấu hình là ngắt ngoài. Tôi không thể biết đầu ra kỹ thuật số có bị tắt trong chế độ ngủ hay không. Có vẻ như nó không bị vô hiệu hóa theo hình 14-2, mặc dù tôi sẽ không quá ngạc nhiên nếu có. Đặt cược tốt nhất là sử dụng một điện trở kéo lên bên trong hoặc bên ngoài.


cảm ơn, bạn có nghĩ rằng điều này tốt hơn là thiết lập một đầu ra, về mặt sức mạnh được sử dụng? Có bất kỳ dòng chảy thông qua kéo lên nội bộ? Thiết bị sẽ ở chế độ ngủ xuống trong phần lớn thời gian.
geometrikal

cập nhật câu trả lời. Tôi không nghĩ rằng bạn sẽ có quá nhiều vấn đề với việc nó là đầu ra, nhưng đặt cược tốt nhất là lấy lời khuyên của Atmel.
hellowworld922

10
  1. Đặt pin thành đầu vào, ổ pin ở mức cao để tham gia kéo lên bên trong : Tôi nghĩ rằng điều này nên đọc: " làm cho đầu vào cao bằng cách tham gia kéo lên bên trong ". . Đảm bảo bật tính năng kéo lên là một trong những điều đầu tiên bạn làm sau khi đặt lại. Điều đó đi cho khởi tạo I / O nói chung. Dòng điện duy nhất sẽ là dòng rò của NFE của cặp kéo đẩy và rò rỉ cổng của FET đầu vào. Ít hơn 1 TIẾNG: OK.
  2. Đặt pin thành đầu vào, ổ pin thấp : Không phải là một ý tưởng tốt. Nếu phần mềm chuyển sang chuối và sẽ chuyển pin sang đầu ra cao, bạn sẽ rút ngắn pin, làm hỏng PFET của cặp bổ sung.
  3. Đặt pin thành đầu vào, kéo bên ngoài lên : Giống như 1), chỉ đắt hơn. Nhưng có lợi thế là pull-up sẽ luôn ở đó; bạn có thể quên bật tính năng kéo lên bên trong (bị tắt theo mặc định). Nếu I / O vô tình chuyển sang đầu ra thấp, bạn sẽ có một dòng chảy nhỏ.
  4. Đặt pin thành đầu vào, kéo xuống bên ngoài : Một lần nữa chi phí của điện trở (vâng, tôi biết chúng rẻ, nhưng rẻ + không cần thiết = đắt tiền.) Giống như trong 3) nếu pin sẽ hoạt động ở mức cao.
  5. Đặt pin thành đầu ra ở mức thấp : Có dòng rò cao hơn so với khi được định cấu hình làm đầu vào, nhưng vẫn dưới 1 LờiA, vì vậy không có gì phải lo lắng. Tôi vẫn sẽ cho phép kéo lên nội bộ. Nó sẽ không hoạt động với I / O dưới dạng đầu ra, nhưng nếu nó vô tình được chuyển sang đầu vào thì pin sẽ không nổi.
  6. Đặt pin thành đầu ra cao : Tương tự như 5)
  7. Đặt pin thành đầu ra thấp, kéo xuống bên ngoài : Điện trở kéo xuống là một chi phí không cần thiết: nó sẽ làm cho đầu ra ở mức thấp, vốn đã thấp. Nhưng so với 5) có một lợi thế là bạn chắc chắn rằng pin sẽ không nổi nếu không có ý định chuyển sang đầu vào.

Tôi sẽ đi cho 1): đầu vào với nội bộ kéo lên; không có bộ phận bên ngoài cần thiết. Trong FMEA 5) có thể có giá tốt hơn, nhưng điều đó phụ thuộc vào mức độ bạn ước tính rủi ro mà bạn quên kích hoạt kéo lên nội bộ. Một đánh giá thiết kế phần mềm ngang hàng sẽ cung cấp cho bạn bảo hiểm.


1

Các chân thường không tạo ra một sự khác biệt lớn. Bạn cũng sẽ thấy mỗi pin có một chức năng cụ thể - vô hiệu hóa chức năng của pin

volatile uint8_t timer2sum; // see interrupt handler

void Initialize()
{
    // configure pin for output
    DDR_LED |= LED;

    // set Power Reduction Register
    PRR = (1<<PRTWI)     // turn off TWI
        | (1<<PRTIM0)    // turn off Timer/Counter0
        | (1<<PRTIM1)    // turn off Timer/Counter1 (leave Timer/Counter2 on)
        | (1<<PRSPI)     // turn off SPI
        | (1<<PRUSART0)  // turn off USART (will turn on again when reset)
        | (1<<PRADC);    // turn off ADC

    // select POWER SAVE mode for sleeping, which allows Timer/Counter2 to wake us up
    set_sleep_mode(SLEEP_MODE_PWR_SAVE);

    // configure Timer/Counter2 to wake us up as infrequently as possible
    TCCR2B |= (1<<CS22) | (1<<CS21) | (1<<CS20); // clock at 14400 Hz
    TIMSK2 |= (1<<TOIE2);                        // interrupt on overflow, 56.25 Hz
    timer2sum = 0;                               // see interrupt handler
    sei();                                       // enable interrupts
}

lấy từ http://www.nerdkits.com/l Library / lowpowerexample / người cũng sử dụng cùng loại chip.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.