Các anh có thể nói cho em biết Atmega16 có mức ưu tiên ngắt không(giống trong 8051),set mức ưu tiên ấy thế nào,trong Atmega16 có thể có ngắt trong ngắt được không?Em cám ơn các anh.
Thông báo
Collapse
No announcement yet.
Mức ưu tiên ngắt trong Atmega16
Collapse
X
-
Mức ưu tiên giảm dần theo chiều tăng dần của địa chỉ interrupt vector, VD: vector interrupt RESET nằm ở địa chỉ 0x00 được ưu tiên cao nhất, kế tiếp là INT0,INT1,...
Nếu xãy ra 2 ngắt cùng một lúc thì ngắt nào được ưu tiên hơn sẻ được "ngắt" trước.
NVT2Tín đồ AVR giáo.
Comment
-
Cám ơn các anh đã trả lời
Cám ơn các anh đã trả lời em.Vậy nếu có một ngắt mức ưu tiên thấp đang được phục vụ,mà xảy ra một ngắt mức cao hơn,thì vdk AVR phục vụ nốt ngắt mức thấp hay lập tức nhảy đến phục vụ ngắt mức cao rồi mới quay trở lại phục vụ nốt ngắt mức thấp.
Comment
-
Bình thường thì chip sẽ thực hiện cho xong ngắt hiện tại rồi mới thực hiện ngắt tiếp theo, tuy nhiên bạn cũng có thể lập trình cho phép một ngắt đang chạy mà nếu có ngắt khác xãy ra thì nó thự hiện ngắt khác xong rồi mới quay lại thực hiện tiếp ngắt đang xãy ra.
NVT2Tín đồ AVR giáo.
Comment
-
Nguyên văn bởi nvt2 Xem bài viếtMức ưu tiên giảm dần theo chiều tăng dần của địa chỉ interrupt vector, VD: vector interrupt RESET nằm ở địa chỉ 0x00 được ưu tiên cao nhất, kế tiếp là INT0,INT1,...
Nếu xãy ra 2 ngắt cùng một lúc thì ngắt nào được ưu tiên hơn sẻ được "ngắt" trước.
NVT2.Cố gắng lên nhé.
Comment
-
Nguyên văn bởi daotoan3Ihut Xem bài viếtBác có biết cách nào để thay đổi tính ưu tiên của ngắt theo ý muốn của mình ko?Điều này hoàn toàn có thể làm được,chẳng qua các bác chưa nghĩ kỹ mà thôi.Cố gắng lên nhé.
Xin tha cho em, nó bị define bởi hardware mà muốn thay đổi thì nói thật từ hồi bập bẹ tới giờ chưa nghe ai nói tới, cả data sheet cũng không hề đề cập tới
Bác đừng trả lời em viết chương trình quản lý để thay đổi mức ưu tiên nhá, cái này mà thuê em viết bằng ASM với giá cao thì em cũng còn phải suy nghỉ lại đấy !
NVT2Tín đồ AVR giáo.
Comment
-
trich:
"Bác có biết cách nào để thay đổi tính ưu tiên của ngắt theo ý muốn của mình ko?Điều này hoàn toàn có thể làm được,chẳng qua các bác chưa nghĩ kỹ mà thôi.Cố gắng lên nhé."
để làm được điều này có lẽ nên bảo nhà sản xuất thiết kế lại phần cứng thôi.chứ dùng phần mềm thì bó cả tay lẫn chân luôn.bác nên dọc lại datasheet
Comment
-
Nguyên văn bởi manhga Xem bài viếttrich:
"Bác có biết cách nào để thay đổi tính ưu tiên của ngắt theo ý muốn của mình ko?Điều này hoàn toàn có thể làm được,chẳng qua các bác chưa nghĩ kỹ mà thôi.Cố gắng lên nhé."
để làm được điều này có lẽ nên bảo nhà sản xuất thiết kế lại phần cứng thôi.chứ dùng phần mềm thì bó cả tay lẫn chân luôn.bác nên dọc lại datasheet
Ngắt có mức ưu tiên cao hơn có nghĩa là nếu có hai ngắt xãy ra cùng một lúc thì ngắt đó được thực hiên trước thôi, mà điều này thì hiếm khi xãy ra do đó vấn đề thay đổi mức ưu tiên không quan trọng tuy nhiên nếu muốn đặt một ngắt nào đó lên ưu tiên cao nhất trong khi đối với AVR, nó không phải là ngắt có mức ưu tiên cao nhất thì chỉ cần trong các đoạn chương trình phục vụ ngắt khác vui lòng kiểm tra xem thằng đó có ngắt hay không mà nhường task lại cho nó (trong trường hợp phải dùng nhiều nguồn ngắt trong chương trình) hoặc cho phép AVR phục vụ ngắt khác trong khi đang phục vụ ngắt bằng lệnh "sei"(trong trường hơp chỉ có 2 nguồn ngắt). Việc này theo NVT2 nghỉ không quan trọng lắm.
Ý tưởng cá nhân thôi nhé, mọi người có ý kiến xin đóng góp !
NVT2Tín đồ AVR giáo.
Comment
-
Nguyên văn bởi manhga Xem bài viếtcó một cách khác là khi mà ta muốn ngắt thấp chèn ngắt cao là tại thời điểm đó ta cấm tất cả các ngắt có muc ưu tiên cao hơn nó sau khi thực hiện xong ngắt thấp thì lại cho phép các ngắt cao hon hoat đông
NVT2Tín đồ AVR giáo.
Comment
-
Nguyên văn bởi TP_Electro Xem bài viếtKhông hiểu làm sao để AVR đang thực thi trong một ngắt mà lúc đó có 1 tín hiệu ngắt khác xảy ra thì nó tạm dừng ngắt đang thực thi để nhảy đến yêu cầu tín hiệu ngắt vừa xảy ra trong ngắt được nhỉ??? Bác nvt2 ??
Comment
-
Nguyên văn bởi htc2k14 Xem bài viếtApplication note -> bác tham khảo phần 1 rồi thực hành từ mục 2.2 nested interrupt.
Ok, cảm ơn bác, mình hiểu rồi nó khác 8051 là khi vào ngắt nó tự động clear bit (i)ngắt toàn cục để các disable tất cả các ngắt. Nếu mà vừa nhảy đến ngắt cấp 1 mình set bit i luôn thì ngắt cấp 2 có thể chạy được và khi nhảy đến ngắt cấp 2 nó lại clear i nên khi nó thục thi xong ngắt cấp 2 nó quay lại ngắt cấp 1 và thực thi cho đến hêt ngắt cấp 1 rồi thoát. Phải ko bác nhỉ? Mình gì đang học c cho AVR có dùng ngắt timer và ADC nhưng sơ ngắt ADC nó ảnh hưởng đến pwm. Giờ biết thì ko lo nữa rồi.
Comment
-
Nguyên văn bởi TP_Electro Xem bài viếtMình thiếu bổ sung thêm là sau khi thực hiện xong cái ngắt sau(cấp 2) nó quay về lại cái ngắt trước (cấp 1). Thanks bác.
Ok, cảm ơn bác, mình hiểu rồi nó khác 8051 là khi vào ngắt nó tự động clear bit (i)ngắt toàn cục để các disable tất cả các ngắt. Nếu mà vừa nhảy đến ngắt cấp 1 mình set bit i luôn thì ngắt cấp 2 có thể chạy được và khi nhảy đến ngắt cấp 2 nó lại clear i nên khi nó thục thi xong ngắt cấp 2 nó quay lại ngắt cấp 1 và thực thi cho đến hêt ngắt cấp 1 rồi thoát. Phải ko bác nhỉ? Mình gì đang học c cho AVR có dùng ngắt timer và ADC nhưng sơ ngắt ADC nó ảnh hưởng đến pwm. Giờ biết thì ko lo nữa rồi..
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Giúp về vấn đề đảo chiều động cơbởi nguyendinhvanCó nhiều cách, nhiều phương án làm được như thế. Động cơ nào cũng làm được như thế.
Banj có thể dùng động cơ quạt thông gió cũng được. Dĩ nhiên phải lắp thêm vài linh kiện, ch tiết điều khiển cảm biến....
0903252168...-
Channel: Các hệ thống tự động hóa khác
05-08-2025, 20:02 -
-
Trả lời cho Có ai còn xem robocon không? khi cácbởi nguyendinhvanXem làm gì.
Bây giờ nó đang bò lồm cồm, lung tung . Từ các công trường đóng gạch ,lây lan vào từng nhà máy cơ khí. Đến các xưởng sản xuất tư nhân nó cũng bò vào rồi . Và ...
Vài năm nữa thôi, nó sẽ bò vào tận giường ngủ...-
Channel: Tâm tình dân kỹ thuật
05-08-2025, 19:43 -
Comment