PDA

View Full Version : Nhiều ngắt trong ứng dụng PIC


lestylo
24-08-2006, 01:26 AM
Các bác thân mến ! em mới tìm hiểu về PIC học viết bằng HT PIC có nhiều cái muốn hỏi lắm tuy nhiên trong mục PIC16F877A thì lại viết bằng ASEM em ko hiểu
em muốn hỏi về ngắt trong PIC như sau :
Nếu như trong ứng dụng của mình muốn sủ dụng nhiều ngắt bằng timer
trong khi con PIC trên chỉ có 3 timer 0,1,2 làm thế nào để sử dụng cho đáp ứng đủ cho ứng dụng của mình?????????
Thuật toán bằng C nó thế nào mong các bác chỉ giúp!

lestylo
24-08-2006, 01:33 AM
thêm một vài câu hỏi nữa :
1_ muốn tính chính xác số chu ki lệnh của PIC thực hiện thì làm như nào mấy bác nhỉ?? để xác định đúng khoảng thời gian này thì mình mới có ngắt hoặc delay chẳng hạn
2_và nữa là việc sử dụng Watchdog khi nào ,đặc biệt là trong ngắt ??? em chưa rõ lắm cái vấn đề này

txt
25-08-2006, 11:12 AM
bạn đang muốn sử dụng multi tasking đây mà . Vào site : www.microchipc.com ( có thêm chữ c ) , tham khảo các viết multi tasking. Nghĩa là :chỉ dùng 1 timer , mỗi khi có ngắt , biến a tăng thêm 1 , nếu = max cho trước thì thực hiện tác vụ aa . Cũng tăng biến b .khi b=b+max thì thực hiện tác vụ bb . VD : mỗi 1 ms thực hiện aa, mỗi 10 ms thực hiện bb , cứ thế với các tác vụ cc , dd, . . .

leduy173
28-08-2006, 09:35 PM
Cho em hoi nếu viết theo cách đó thì ngắt timer liên tục xảy ra tùy theo giá trị mình định , như vậy thì có ảnh hưởng mạnh đến chương trình chính của minh ko?có ảnh hương j đến thanh ghi pc hay stack nhiều ko và nếu goi quá nhiều chương trình con thì sẽ tràn stack vậy gọi khoảng bao nhiêu thì tốt nhất và có cách giải quyết nào khác ko!
Cám ơn!!!

namqn
28-08-2006, 10:58 PM
Bạn có thể tự tính toán, hay nhờ vào phần mềm mô phỏng để xác định thời gian còn lại dành cho chương trình chính (sau khi đã xử lý ngắt) giữa những lần ngắt, có ảnh hưởng hay không thì tùy vào bạn viết chương trình có đủ tốt hay không.

Các dòng PIC khác nhau có các mức hỗ trợ ngăn xếp khác nhau, PIC10 không hỗ trợ ngắt, PIC16 hỗ trợ 8 mức ngăn xếp bằng phần cứng (trừ một số PIC16 có nhân 12-bit), PIC18 hỗ trợ 31 mức ngăn xếp bằng phần cứng, PIC24 và dsPIC hỗ trợ ngăn xếp bằng phần mềm (về nguyên tắc chỉ bị giới hạn bởi dung lượng RAM khả dụng của chip).

Hy vọng đã trả lời các câu hỏi của bạn.

Thân,

leduy173
28-08-2006, 11:32 PM
Như anh nói dòng 16F thì phần cứng hỗ trợ khoảng 8 mức ngăn xếp có nghĩa là ta có thể goi chương trinh con lồng nhau cũng khoảng 8 cấp phải không anh???

namqn
28-08-2006, 11:59 PM
Như anh nói dòng 16F thì phần cứng hỗ trợ khoảng 8 mức ngăn xếp có nghĩa là ta có thể goi chương trinh con lồng nhau cũng khoảng 8 cấp phải không anh???
Đúng nếu bạn hoàn toàn không dùng ngắt! Chú ý là 8 cấp khi chương trình đang chạy nhé (nghĩa là nếu bạn gọi các chương trình con lồng nhau đến 8 cấp thì khi có ngắt PIC sẽ bị reset vì tràn stack).

Thân,

leduy173
29-08-2006, 12:35 AM
Như vậy thì khi có ngắt thì các stack của mình cũng tăng lên giống như khi minh goi 1 chương trinh con vậy phải ko anh???Khi tràn stack thi pic sẽ bị reset sao???

namqn
29-08-2006, 12:57 AM
Như vậy thì khi có ngắt thì các stack của mình cũng tăng lên giống như khi minh goi 1 chương trinh con vậy phải ko anh???Khi tràn stack thi pic sẽ bị reset sao???
Có hai điều kiện đối với stack mà các lõi xử lý thường được yêu cầu reset, đó là underflow (stack bị pop khi đã trống) và overflow (stack bị push vào khi đã đầy). Tuy nhiên, với các PIC16 thì khi overflow các ô nhớ cũ nhất của stack sẽ bị ghi đè chứ không gây ra reset. Do vậy việc gọi chương trình con hay chương trình xử lý ngắt nhiều hơn 8 lần chắc chắn sẽ làm chương trình chạy sai.

Thân,

leduy173
29-08-2006, 02:31 AM
h thì em đã hiểu hơn rùi thanks anh namqn nhiều!!!

txt
29-08-2006, 11:38 AM
Nếu dùng trình biên dịch CCS thì nó sẽ nhảy đến các hàm chủ yếu bằng lệnh GOTO , và do đó không tốn stack , trừ phi dùng những hàm như delay , . . thì có tốn . Nói chung nó có đưa ra dự báo mức stack tối đa , nên không phải lo có tràn hay không.Thông thường các hàm built in mà có thể dùng nhiều lần như hàm delay , nhân 32 , float, thì sẽ có tốn stack .

henremix
14-11-2009, 08:18 PM
trong hoc lap trinh ban k the hoi vay duoc ,phai chiu kho ma ngi.mot van de trong lap trinh thi k biet bao nhieu cach giai quyet,moi nguoi thi co y do khac nhau k ai giong ai. neu ban da nam chac cac lenh thi lam duoc hay k la do ban,ban bien doi ,sap xep cac cau lenh nhu the nao la do ban vi ban da hieu cac cau lenh roi ma.plc cung vay ban phai ngi roi xe ra thoi,dung nen hoi,chi khi nao k ro phan cung ngoai suc cua ban thi ban co the trao doi voi moi nguoi...ok.chuc ban thanh cong,ban nen viet assembler moi nang cao tu duy duoc,chi co he thong lon moi viet c thoi ok