Ah, câu về ngắt hình như bác BA đã làm ở bên www.diendandientu.com. Hồi mới sơ khai về PIC. Tui áp dụng 1 phát ăn ngay luôn. Khà khà...
Thông báo
Collapse
No announcement yet.
Đố vui về PIC, các câu đố cực vui và cực hay... hehe..
Collapse
This topic is closed.
X
This is a sticky topic.
X
X
-
Nguyên văn bởi tienvnuTrình em còn non lắm bác ơi...em có suy nghĩ thế này không biết có được không???
Thằng Pic nó không PUSH hộ thì trong chương trình ngắt mình đọc PC xong PUSH hộ nó lên stack...
Khó quá...bác gợi ý cái được không???. Gợi ý ít, làm được mới thú
-------------------
Comment
-
Hi, em lại thử một phát
Bắt đầu vào ISR thì bật GIE
Theo em biết thì ko có lệnh PUSH với POP ở PIC thì phải (Em chưa gặp bao giờ)
Lưu ơ nhớ của stack lên một địa chỉ nhớ, rồi xóa luôn ơ nhớ đó trên ngăn xếp(Chống tràn). Mỗi ngắt sẽ tưong ứng với một địa chỉ nhớ
Sau đó vào các chưong trình con trong phục vụ ngắt, tất nhiên ngắt nào ưu tiên cao hơn thì ta dặt nó trứoc
Trước khi thoát khỏi các ngắt, thì lại lưu các ô nhớ tương ứng vào ngăn xếp.
Như vậy thì nó lại trở về "nơi anh đã ra đi"
Hi, kiến thức hạn hẹp, mong được chỉ bảo
Có phải ko anh ChiBang
Comment
-
Nguyên văn bởi beyeuHi, em lại thử một phát
Bắt đầu vào ISR thì bật GIE
Theo em biết thì ko có lệnh PUSH với POP ở PIC thì phải (Em chưa gặp bao giờ)
Lưu ơ nhớ của stack lên một địa chỉ nhớ, rồi xóa luôn ơ nhớ đó trên ngăn xếp(Chống tràn). Mỗi ngắt sẽ tưong ứng với một địa chỉ nhớ
Sau đó vào các chưong trình con trong phục vụ ngắt, tất nhiên ngắt nào ưu tiên cao hơn thì ta dặt nó trứoc
Trước khi thoát khỏi các ngắt, thì lại lưu các ô nhớ tương ứng vào ngăn xếp.
Như vậy thì nó lại trở về "nơi anh đã ra đi"
Hi, kiến thức hạn hẹp, mong được chỉ bảo
Có phải ko anh ChiBang
+Khi bật GIE trong ISR thì đột nhiên một ngắt khác xuất hiện, rồi 1 ngắt khác xuất hiện ...lộn tùng phèo tràn stack... treo ngay chip. Đó là chưa kể việc ngắt thấp lại nhảy vào ngắt cao...
+Cơ chế cất con trỏ chương trình là do PIC tự làm, can thiệp vào đó là tối kỵ. Mình ko nên can thiệp.
Nói vậy thôi, nhưng tui ko làm theo các của bác. Vì quá phức tạp, mệt... và chưa kiểm chứng thực tế. Nếu các bác làm theo cách đó biết đâu lại được ấy nhỉ-------------------
Comment
-
Nguyên văn bởi CHIBANG+Khi bật GIE trong ISR thì đột nhiên một ngắt khác xuất hiện, rồi 1 ngắt khác xuất hiện ...lộn tùng phèo tràn stack... treo ngay chip. Đó là chưa kể việc ngắt thấp lại nhảy vào ngắt cao...
+Cơ chế cất con trỏ chương trình là do PIC tự làm, can thiệp vào đó là tối kỵ. Mình ko nên can thiệp.
Còn trong chương trình ngắt thì các cờ đã đựoc bật, vì vậy theo thứ tự mưc ưu tiên, nó gặp ngắt có mức ưu tiên cao truớc thì sẽ dừng ở đó và thực hiện cái ngắt ư tiên cao hơn đó(Có vẻ vấn đề là ở đây, nếu như thế thi lời gọi ngắt có mức ưu tiên thấp hơn lai đựoc thực hiên hàm ngăt cớ mức ưu tiên cao hơn). Theo em nghĩ giải quyết vấn đề này bằng tạo một cái cờ gì đó: VD như là hỏi xem 1 bit nao đó có phải là 1 ko, nếu ko phải là 1 thì moi setb và thực hiện, còn nếu là 1 rồi thì thoát luôn khỏi cái ngát đó(bit=1 chứng tỏ no dang thục hien ngat do roi).
Như vậy se kó có chuyen ngat thap nhay vao ngat cao
Các bác đọc kĩ bài em môt chút nhé nó hơi rối rắm
Comment
-
Có lẽ phải công lực cao mới hiểu hết ý của bác. Tốt nhất là bác viết ra giải thuật cụ thể = C. Và xem nó có tốn quá nhiều thời gian vào việc xử lý stack ko? và chú ý đền các việc gọi hàm trong main nữa. Và chú ý giả thiết là đang ngắt ưu tiên i, khi gặp ngắt ưu tiên j<i thì bằng mọi giá nó nhảy vào ngắt j ngay. Ví dụ ngắt 4,5,3,1 lần lượt xảy ra thì nó nhảy vào ngắt 4-->3-->1--->5.-------------------
Comment
-
Box này vui !!!
Có hai hôm không online mà mất nhiều nhịp hội ngộ anh em, tiểu đệ trả lời câu 1 của CHIBANG để đỡ nhời đại ca DUYPHI, sở dĩ không trả lời hai câu còn lại vì vutricongbka làm tui cáu, để xem hắn có trả lời được không.
Đại ca 4MD đã mắc ngay lỗi mà CHIBANG đưa ra là ADCON1 là RPBU, em mới nhìn câu hỏi đã nghi ngay, em mà online hôm qua thì ... chẹp chẹp... được dịp tinh tướng. hehe...
Mà các bác trả lời không nghiên cứu Datasheet mới hay chứ.
Còn vụ ngắt để tiểu đệ thử phát, mong CHIBANG cho đáp án sớm, tui chưa làm thật bao giờ. Câu này khoai à nha.
PIC 16 không có chế độ ngắt trong ngắt như trong 8051, mà stack cứng là 8 địa chỉ chứ không khởi tạo được stack pointer như 8051, vấn đề khoai là ở chỗ ấy. Khi vào ngắt GIE được chuyển về 0 để cấm ngắt khi đang trong chương trình xử lý ngắt. Vì vậy trước hết phải set GIE, bản thân ngắt cũng là chương trình con void interrupt, chỉ có điều nó được tự động gọi. Vậy tiểu đệ đưa ra ý tưởng như thế này. Ta lập các chương trình con tương ứng với mỗi ngắt, ví dụ void onchange, void int. Trong chương trình ngắt chính ta kiểm tra các cờ ngắt nếu có cờ ngắt nào thì cho nhảy vào chương trình ngắt tương ứng, khi kết thúc chương trình ngắt "chen ngang" thì nó sẽ nhảy lại chương trình ngắt hiện tại. Tại hạ nghĩa theo C, còn nếu dùng ASM thì dùng label.
Do stack của PIC chỉ có 8 nên cách giải quyết trên còn hạn chế chỉ được khoảng 3 ngắt lồng nhau cùng lúc.
Đại ca CHIBANG như vậy có đúng hông ?
Comment
-
Nguyên văn bởi phamthaihoaQuên, còn vụ ưu tiên ngắt, trong PIC không hề tồn tại khái niệm ưu tiên ngắt, "ưu tiên" ở đây chẳng qua là mình xử lý cờ ngắt nào trước.
Hướng của đại hiệp gần gần sát hướng của tui rồi. Nhưng cái quan trọng là cụ thể = dòng lệnh mới hay. Bằng C nhé.
Chờ tin vui!!!-------------------
Comment
-
Nguyên văn bởi phamthaihoaBox này vui !!!
Đại ca 4MD đã mắc ngay lỗi mà CHIBANG đưa ra là ADCON1 là RPBU, em mới nhìn câu hỏi đã nghi ngay, em mà online hôm qua thì ... chẹp chẹp... được dịp tinh tướng. hehe...
Không phải nhầm chỗ này. Bác Chi Bằng hỏi đúng chỗ mình băn khoăn nên mới trả lời thôi.
Comment
-
Nguyên văn bởi 4MDADCON1 là RPBU ???????
Không phải nhầm chỗ này. Bác Chi Bằng hỏi đúng chỗ mình băn khoăn nên mới trả lời thôi.-------------------
Comment
-
Hi all!
Đệ thì từ hôm qua cứ đinh ninh là kô set được GIE trong ngắt
đệ có suy nghĩ thế này:
Program interrupt
{ GIE=0;
if (IF1)
{ IF1=0;
GIE=1;
program1();
}
if (IF2)
{ IF2=0;
GIE=1;
program2();
}
if (IF3)
{ IF3=0;
GIE=1;
program3();
}
}
vậy thì sẽ chẳng có ưu tiên ngắt gì ở đây cả.
Khi programx() đang chạy mà có một ngắt khác...thì chương trình ngắt sẽ chạy lại từ đầu...và vì cờ ngắt trước đó đã bị xóa, và cờ ngắt mới được set nên nó sẽ chạy chương trình ngắt tương ứng...sau khi chạy xong thì sẽ chạy lại chương trình dang dở của ngắt trước vì trong stack có địa chỉ của lệnh trước.
Chú ý ở đây là không được xảy ra nhiều ngắt lồng nhau như thế ...ví stack có hạn.Last edited by tienvnu; 18-10-2005, 03:27.
Comment
-
Nguyên văn bởi tienvnuHi all!
Đệ thì từ hôm qua cứ đinh ninh là kô set được GIE trong ngắt
đệ có suy nghĩ thế này:
Program interrupt
{
if (IF1)
{ IF1=0;
GIE=1;
program1();
}
if (IF2)
{ IF2=0;
GIE=1;
program1();
}
if (IF1)
{ IF3=0;
GIE=1;
program1();
}
}
vậy thì sẽ chẳng có ưu tiên ngắt gì ở đây cả.
Khi programx() đang chạy mà có một ngắt khác...thì chương trình ngắt sẽ chạy lại từ đầu...và vì cờ ngắt trước đó đã bị xóa, và cờ ngắt mới được set nên nó sẽ chạy chương trình ngắt tương ứng...sau khi chạy xong thì sẽ chạy lại chương trình dang dở của ngắt trước vì trong stack có địa chỉ của lệnh trước.
Chú ý ở đây là không được xảy ra nhiều ngắt lồng nhau như thế ...ví stack có hạn.-------------------
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Phật có dạy là CHÁNH NIỆM (hay CHÍNH gì ấy, ĐT bị... rối loạn ngôn ngữ và trí nhớ, mong lượng thứ!) - CHÁNH NGỮ - CHÁNH HÀNH ĐỘNG, đó là đường hướng tới CHÁNH ĐẠO.
ĐT ngu muội nên cứ áp dụng vào điện tử: phải cố...-
Channel: Điện tử công suất
Hôm qua, 06:16 -
-
Trả lời cho [HELP] mạch cầu H inverter 100vdc to 100v ?bởi ngoctn93Em cũng có nguồn 250 đến 280vdc muốn chuyển sang 100vac bằng mạch cầu H dùng esg002. Có bác nào làm rồi chỉ em hoặc bán em với ạ. Em xin cảm ơn ạ
-
Channel: Điện tử công suất
05-02-2025, 23:00 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi mèomướpCháu thấy chú nhat... viết toàn cái gì gì ấy ạ khó hiểu ghê, chắc mai cháu phải đi hỏi mấy anh chị lớp lớn hơn xem sao ạ. Những việc lớn tầm cỡ thì hông phải ai cũng có đủ kiến thức, thời gian, sức khỏe, tiền bạc, đam mê, kiên...
-
Channel: Điện tử công suất
05-02-2025, 22:11 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Bác bảo ai lớn tờ iếng tiếng?
Hùng là không nhé. Chỉ bảo tận tình chứ không tận diệt.
Yêu kỹ thuật nên vẫn tham gia cho vui thôi. Mấy của nợ này dùng con PIC hai chục ngàn còn ngon luôn....-
Channel: Điện tử công suất
05-02-2025, 21:38 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi vi van phamThôi mà, anh em giúp đỡ nhau, có gì mà lớn tiếng?
Ai không chịu giúp đỡ nhau thì vào đây nhậu với tui. Bà xã hôm nay ngũ sớm tui được tự do, solo buồn quá, Nhathung,Dinhthuong ,Đinh Vặn gì đó tui cân tuốt.-
Channel: Điện tử công suất
05-02-2025, 21:16 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Thằng I Lôn Mút nó sắp đưa người lên sao Hỏa rồi.
Mấy anh em vẫn bàn cái "Một Phát Phải Thôi" thì nẫu quá.
Ngâm cứu cái gì cho đáng đi. Còn tôi nói gì hơi quá thì xin lỗi nhé.-
Channel: Điện tử công suất
05-02-2025, 19:45 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Và tôi thấy cái này như con bò sữa thôi mà. Nếu xét nguyên lý.
Bóp bóp bóp... đến hết thì thôi. Cái mạch thì nguồn sơ đẳng. Con để bóp thì vu nó lại cáo cào cao.
Ắc qui hay pin thì vưỡn giá nào xào nấy. Inverter thì...-
Channel: Điện tử công suất
05-02-2025, 19:33 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Chip hay trở? Chip tôi có vài bịch để từ trước tết, mai giặt.
Trở thì tồn vài cân. Toàn hàng đặt, sai số 1%.
Nhưng ở đây ko buôn bán, chỉ tặng....-
Channel: Điện tử công suất
05-02-2025, 19:14 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Anh hỏi rồi, nên phải bớt chữ sờ, lại viết hoa như có lông.
Hãng bảo: Toàn bọn khôn lỏi, dịch từ "khôn" khó quá nên cho thành "smart".
Còn chuyện liên quan là cái mạch kéo cái ánh sáng về, nạp vào cái...-
Channel: Điện tử công suất
05-02-2025, 19:05 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Nhân đây, xin các bác giúp ĐT với: ở Việt Nam mình có chỗ nào uy tín bán chip trở 1206/3903-390K [chip trở loại tốt, không hoặc ít thay đổi trị số sau thời gian sử dụng] thì chỉ giúp nhé, chứ hiện tại chip 1206/394-390K sau thời gian nó còn...
-
Channel: Điện tử công suất
05-02-2025, 13:55 -
Comment