Vi điều khiển - là trạng thái đầu ra không đổi hoặc ghép kênh?


14

PWM rõ ràng yêu cầu tài nguyên tính toán (và do đó không thể được thực hiện đồng thời với các quy trình khác), nhưng nếu tôi đặt chân là đầu ra 5V hoặc 0V, thì các trạng thái này không đổi hoặc chúng được "làm mới" nhiều lần khi vi điều khiển hoạt động trên các quy trình khác ?

Điều này thật khó để giải thích trong văn bản vì vậy tôi nghĩ về sự tương tự với câu hỏi của tôi. Hãy tưởng tượng tôi có một chiếc cốc trong tay và được hướng dẫn đặt nó lên bàn. Sau đó tôi được hướng dẫn ngồi xuống ghế.

Kính trên bàn là một trạng thái. Tôi có để lại cái ly trên bàn không, hay tôi nhặt nó lên và ngồi xuống và lặp lại rất nhanh để bạn không nhận ra cái ly đã bị tháo ra khỏi bàn?


Hoặc có lẽ đơn giản hơn, liệu vi điều khiển có "quên", nếu bạn sẽ, về các trạng thái của các chân của nó trừ khi bạn lập trình rõ ràng một thay đổi trạng thái?

Hy vọng tôi đã làm điều đó khó hiểu nhất có thể.


4
+1 Câu hỏi thú vị mặc dù tuyên bố đầu tiên của bạn không chính xác và ý tưởng về phần cứng PWM là để bộ xử lý không phải tham gia toàn bộ thời gian. Nhưng hãy để nó theo cách đó và tôi chắc chắn ai đó sẽ có một lời giải thích tốt về cách tất cả hoạt động.
PeterJ

Tôi nghĩ rằng PWM là bộ xử lý đang thay đổi thời gian chu kỳ CAO / THẤP. Theo cách đó, dường như bộ xử lý có liên quan trực tiếp - ít nhất là thời gian mà trạng thái được thay đổi.
sherrellbc

1
Để thay đổi chu kỳ nhiệm vụ từ 10% thành 20%, CPU phải tham gia nhưng chỉ trong một vài chu kỳ để thay đổi một thanh ghi. Đối với PWM phần cứng, nói rằng một khi nó thay đổi thành 20% ngay cả khi tần số PWM phần cứng là 1 MHz thì nó không còn ảnh hưởng đến bộ xử lý.
PeterJ

Bạn có bất kỳ liên kết tốt đến tài liệu về cách vi điều khiển làm việc ở mức thấp hơn? Tôi không hiểu tài liệu tham khảo của bạn để đăng ký nên không thể đánh giá đầy đủ những câu trả lời này.
sherrellbc

1
Không khó hiểu lắm. Cố gắng hơn nữa!
radagast

Câu trả lời:


16

Cách tôi diễn giải câu hỏi không liên quan gì đến PWM, xin lỗi nếu tôi rời khỏi cơ sở, nhưng có vẻ như bạn đã sử dụng nó như một ví dụ.

Khá nhiều loại vi điều khiển và thiết bị có I / O sử dụng chốt / FF để điều khiển mạch đầu ra của chúng. Điều này có nghĩa là, khi bạn đặt trạng thái, nó vẫn ở trạng thái đó. Nó không giống như DRAM khi các số liệu thống kê đầu ra phải liên tục được "làm mới" để giữ nguyên trạng thái của chúng.

Với ví dụ về kính của bạn, tôi chưa bao giờ thấy bất kỳ phần cứng nào sẽ nhặt và đặt kính xuống bàn nhiều lần. Nó sẽ chỉ đặt ly trên bàn và để nó ở đó cho đến khi có yêu cầu thay đổi trạng thái.

Quay trở lại với PWM (chỉ trong trường hợp bạn thực sự hỏi về PWM). Cho dù bạn bitbang nó hay vi điều khiển của bạn có phần cứng chuyên dụng như các bài đăng khác đã nêu, khối I / O chỉ được truy cập và sửa đổi nếu một thay đổi trạng thái được yêu cầu bằng cách chạy mã hoặc thiết bị ngoại vi PWM.


Đây chính xác là câu hỏi của tôi, mặc dù có vẻ như có nhiều vi điều khiển mà tôi không nhận ra rằng tôi không hiểu.
sherrellbc

3
Chỉ cần giữ mũi của bạn trong datasheets, thử nghiệm và đặt câu hỏi. Bạn sẽ nhận được hang của nó.
Kris Bahnsen

11

Bộ vi điều khiển không phải làm mới các đầu ra. Khi chúng được đặt, chúng sẽ giữ trạng thái vô thời hạn (cho đến khi mất điện). Mặc dù trong các bộ xử lý cũ, đồng hồ được yêu cầu duy trì trạng thái của bộ xử lý, bộ xử lý ngày nay là thứ được gọi là hoàn toàn tĩnh. Điều đó có nghĩa là đồng hồ thực sự có thể dừng lại và mọi thứ sẽ ở trong trạng thái hiện tại của nó. Đó là bởi vì tất cả các thanh ghi (bao gồm cả I / O) được tạo bằng cách sử dụng flip-flop.


Và chúng tôi đang đạt được tiến bộ! Cảm ơn có ý nghĩa hơn bây giờ. Cảm ơn bạn!
sherrellbc

10

Hầu hết các bộ vi điều khiển hiện đại đều có thiết bị ngoại vi PWM phần cứng chuyên dụng chăm sóc cho PWM, một sự tương tự rất thô có thể là:

Lõi bộ xử lý nói với thiết bị ngoại vi: "chuyển đổi pin này ở chu kỳ nhiệm vụ 10kHz và 50% cho đến khi tôi nói với bạn khác". Sau đó, cốt lõi là miễn phí để làm những thứ khác. Nó có thể thiết lập một ngắt, tức là yêu cầu thiết bị ngoại vi nói với nó khi có điều gì đó quan tâm xảy ra.
Bạn có thể nghĩ rằng cốt lõi là "ông chủ" và các thiết bị ngoại vi là công nhân chuyên môn. Lõi quản lý toàn bộ chương trình (đọc từng hướng dẫn và hành động theo nó) và "yêu cầu" các thiết bị ngoại vi thực hiện các nhiệm vụ khác nhau và thông báo cho chương trình khi chúng đã hoàn thành chúng.

Tương tự như vậy, nó sẽ giống như một người khác đang cầm ly, bạn hướng dẫn họ đặt nó lên bàn trong khi bạn tự do ngồi trên ghế.

Nếu micro không có thiết bị ngoại vi chuyên dụng, thì nó sẽ phải thực hiện "thủ công" (tức là chính nó) và theo dõi trạng thái chân và thời gian giữa các lần bật. Điều này có nghĩa là rất nhiều chu trình dành riêng cho những thứ khá nguy hiểm được xử lý dễ dàng bởi một thiết bị ngoại vi đơn giản.

Dưới đây là sơ đồ bố trí của một vi điều khiển 8 bit phổ biến, PIC16F690 . Lưu ý các thiết bị ngoại vi được sắp xếp ở phía dưới:

nhập mô tả hình ảnh ở đây


Tôi đã không nhận ra các thành phần ngoại vi như vậy tồn tại. Vì vậy, các thành phần này là bộ xử lý khá nhỏ? Nó có ý nghĩa lớn những thứ như vậy tồn tại.
sherrellbc

Không phải bộ xử lý, không - các thiết bị ngoại vi giống như các khối phần cứng chuyên dụng được thiết kế đặc biệt để thực hiện một tác vụ nhất định. Chẳng hạn, một micro thông thường sẽ có trên các thiết bị ngoại vi trên bo mạch như ADC, PWM, Timers, UART, SPI, v.v.
Oli Glaser

Tôi chắc chắn sẽ nghiên cứu sâu hơn về chủ đề này, mặc dù sự hiểu biết của tôi về các hệ thống này nếu chắc chắn sai lệch. Tôi có ấn tượng rằng uC sẽ thực hiện tất cả các xử lý. Các "hướng dẫn" đưa ra cho các thiết bị ngoại vi phải được diễn giải. Tôi cho rằng đây là nơi tôi không hoàn toàn hiểu được.
sherrellbc

2
Tôi đã thêm một sơ đồ của một vi mô điển hình - một nơi tốt để bắt đầu đọc là biểu dữ liệu, mà tôi cũng liên kết đến.
Oli Glaser

@sherrellbc, đó là nơi khác nhau của bộ xử lý và bộ vi xử lý. Trong một hội tụ, bạn có thể thấy rằng ví dụ: RAM, ROM, ALU, Cổng nối tiếp, v.v ... đều được tích hợp vào cùng một chip. Trong PC, bạn biết rằng bộ xử lý được kết nối bên ngoài với các mạch như vậy.
chwi

5

Bạn đang đưa ra một số giả định không chính xác. Ngoài ra, có, bạn đã làm cho câu hỏi khó hiểu nhất có thể. Nghiêm túc.

PWM có thể được thực hiện đồng thời với các quá trình khác. Nếu được thực hiện trong phần mềm, bạn sử dụng các ngắt hẹn giờ để tạo tín hiệu PWM trên chân GPIO. Các ngắt khác có thể chạy, và quá trình chính là làm những việc không liên quan. Ngoài ra, nhiều MCU có thể thực hiện PWM trực tiếp trong thiết bị ngoại vi hẹn giờ, giải phóng MCU để làm những việc khác.

Đối với các Ghim I / O, chúng được ghép kênh. Nhưng bạn đang kiểm soát cách chúng được ghép kênh, vì vậy đó không thực sự là một vấn đề.


Tôi hiểu nhận xét của bạn về việc ngắt bộ đếm thời gian PWM - điều đó có ý nghĩa. Theo cách này, bộ xử lý chỉ tham gia vào thời điểm nó thay đổi trạng thái đầu ra. Mặc dù, bạn nói rằng các chân I / O được ghép kênh - vì vậy có nghĩa là nếu tôi lập trình bộ điều khiển để xuất ra một chân CAO và sau đó thực hiện một số phép tính không liên quan khác, thì pin có được đặt tạm thời ở mức THẤP trong khi các quy trình đó được thực hiện không?
sherrellbc

@sherrellbc Bạn đang kiểm soát cách các chân được ghép. Thông thường, bạn định cấu hình chúng khi khởi động và không thay đổi chúng sau đó. Vì vậy, nó sẽ không "thấp trong giây lát", trừ khi bạn đặc biệt bảo nó làm điều đó.

Tôi xin lỗi nếu bằng cách thêm ví dụ về PWM, tôi đã làm người đọc bối rối. Mục đích của câu hỏi này là để xác định xem một chân I / O được hướng dẫn được đặt thành CAO được ghép bởi bộ điều khiển hay không (nghĩa là vì nó phải liên tục "làm mới" trạng thái chân và chỉ làm một việc tại một thời điểm). Tuy nhiên, bây giờ tôi nhận ra có nhiều điều đối với vi điều khiển mà tôi không hiểu (thiết bị ngoại vi). Vì vậy, nó cho tôi biết rằng câu trả lời là không, các chân đầu ra được đặt thành trạng thái và vẫn ở trạng thái đó cho đến khi thay đổi liên tục.
sherrellbc

1

Hầu hết các chân I / O trên vi điều khiển là đa chức năng, nhưng tôi sẽ không gọi chúng là ghép kênh.

Ví dụ, một số chân trên một AVR có thể được sử dụng làm đầu vào kỹ thuật số, đầu ra kỹ thuật số hoặc đầu vào tương tự. Thông thường bạn sẽ chọn chức năng mong muốn là một phần của việc khởi tạo chương trình và không thay đổi chức năng này sau đó (mặc dù tôi có thể thấy một số lý do để thay đổi đầu vào tương tự thành đầu vào kỹ thuật số để xem cùng một tín hiệu.)

Đối với đầu ra kỹ thuật số, một khi các chân được đặt thành đầu ra, chúng sẽ giữ giá trị cuối cùng mà bộ xử lý ghi cho chúng - không cần phải "làm mới" chúng theo định kỳ.


Chúng sẽ được ghép kênh nếu bộ xử lý đặt giá trị, loại bỏ giá trị đó, thực hiện các hướng dẫn khác và sau đó lặp lại và đặt lại giá trị ban đầu. Đây là bản chất của câu hỏi của tôi. Tuy nhiên, từ các câu trả lời ở trên, có nhiều loại perihperals khác nhau phù hợp với các chức năng này và bộ xử lý không liên quan gì đến nó cho đến khi được hướng dẫn làm khác; Tôi không có ý kiến ​​về việc này. Rất nhiều điều để học hỏi. Cảm ơn câu trả lời.
sherrellbc

1

Trong một ví dụ đơn giản về thiết bị ngoại vi PWM phần cứng vi điều khiển, bộ đếm 8 bit có thể được kết nối với bộ so sánh kỹ thuật số 8 bit. Bộ vi điều khiển sẽ tải một số vào bộ so sánh và tăng bộ đếm với đồng hồ hệ thống hoặc một số phiên bản chia trước của nó. bộ đếm sau đó sẽ chạy tự do, đếm từ 0 đến 255 và trở về 0 liên tục. Bộ so sánh sẽ có đầu ra cho biết giá trị bộ đếm lớn hơn hay nhỏ hơn giá trị bộ so sánh. Điều này sẽ trở thành đầu ra PWM. Khoảng thời gian của PWM sẽ là bao lâu để bộ đếm hoàn thành một chu kỳ đếm và chu kỳ nhiệm vụ sẽ là phần nào của tổng số được biểu thị bằng giá trị so sánh. Mã vi điều khiển sẽ không có gì để làm ngoại trừ thiết lập phần cứng ban đầu và thay đổi dữ liệu so sánh khi muốn thay đổi pwm. Các PWM sẽ tạo ra một luồng xung PWM liên tục mà không cần bộ xử lý chú ý.

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.