PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 28-05-2006, 04:52 PM   #1
LMT
Nhập môn đệ tử
 
Tham gia ngày: Feb 2006
Bài gửi: 2
:
Học PIC qua những thực nghiệm cụ thể

Minh mới bắt đầu tìm hiểu về vi điều khiển thông qua việc học PIC. Cách học của mình chắc cũng giống như nhiều bạn khác. Đọc qua lí thuyết --> viết code --> cho chạy trên mạch thực tế. Mình nghĩ nếu có một góc để tập trung những thực nghiệm đã làm thì những bài viết ấy sẽ mang tính tham khảo rất có ích cho những người mới bắt đầu học PIC. Hy vọng những bạn mới học PIC ủng hộ, post lên những thực nghiệm mà mình đã làm. Và những senior giàu kinh nghiệm cũng bỏ chút thời gian ghé mắt xem bọn junior đã làm gì để chỉ dẫn cụ thể, rút kinh nghiệm cho junior.
LMT vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-05-2006, 05:13 PM   #2
LMT
Nhập môn đệ tử
 
Tham gia ngày: Feb 2006
Bài gửi: 2
:
Xử lí chattering

Chattering, hay còn gọi hiện tượng "bị dội" là một điều rất cần chú ý khi làm thực nghiệm. Khi mình học về interrupt thông qua bit thứ 0 của portB. Mình làm một bài tập cụ thể như sau: cứ mỗi lần bật-tắt switch (được nối với RB_0) thì 5 cái LED (được nối với portA) sẽ thay đổi kiểu chiếu sáng theo một quy luật nhất định nào đấy.

-Về "quy luật nhất định nào đấy" thì mình sử dụng kỹ thuật tham chiếu bảng để thay đổi giá trị của portA.
-Để mỗi lần bật-tắt switch thì thay đổi giá trị portA mình sử dụng interrupt bằng RB0.

Mục đích của thực nghiệm này là học về interrupt qua RB0 và kỹ thuật tham chiếu bảng.

Mình đã viết chương trình và debug thử trên máy tính. Kết quả rất tốt. Sau đó mình lắp mạch cụ thể và cho chạy thì khi mỗi lần bật-tắt switch thì portA cũng thay đổi giá trị nhưng không theo quy luật mình đã định trước. Mình đã tham khảo kỹ PIC_tutorial bằng tiếng Việt (down được trên diễn đàn này, cái tutorial này hình như của bác nào dịch từ tutorial tiếng Anh, ở phần cuối tutorial này vẫn còn nguyên tiếng Anh) về phần interupt bằng RB0. Thậm chí còn copy y chang code, làm một cái mạch giống y chang như trong tutorial nhưng kết quả chạy trên mạch vẫn loạn xạ ngầu.

Hic,hic, mệt quá, đi ăn cơm. Trong lúc ngồi gặm gạo luộc, nghĩ ngợi lung tung... Rõ ràng là debug trên máy tính đúng như mong đợi. Nhưng chạy trên mạch sai, chứng tỏ mạch có vấn đề. Vậy tại sao mình làm một mạch y chang như trong hướng dẫn vẫn bị sai???........... Ơ-rê-ca, chỉ có thể là nó - chattering. Chính vì chattering mà khi bất-tắt switch, giá trị của RB0 biến đổi loạn xạ làm số lần interupt tăng loạn xạ luôn.

Vậy xử lí chattering như thế nào? Mình sử dụng SR-flip-flop để trị thằng này.
switch_by_SR_flip_flop.JPG

Và tất nhiên, trị xong chattering xong chẳng còn vấn đề gì.

Mình có nghe nói có thể xử lí chattering bằng phần mềm nhưng không rõ cụ thể như thế nào. Mong bác nào biết chỉ bảo cho

Ngoài ra, một kinh nghiệm xương máu nữa là liên quan đến RA4. Thằng RA4 khác với mấy thằng RAx hay RBx khác. Đó là do trong cấu tạo PIC, ở mấy pin của các port đã có sẵn một FET đóng vai trò như một điện trở kéo lên. Riêng ở pin RÃ thì không có cái FET này nên khi nối RÃ với LED thông qua một điện trở thích hợp và set cho RA4 bằng 1, LED sẽ không sáng. Do vậy, cần mắc thêm một điện trở kéo lên ngay tại pin của RA4 để giải quyết vấn đề này.

Nhưng có một điều mình vẫn chưa biết là chức năng TOCKI của RA4 là gì và được sử dụng như thế nào. Mong các bác chỉ bảo

thay đổi nội dung bởi: LMT, 28-05-2006 lúc 05:21 PM.
LMT vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-05-2006, 08:27 PM   #3
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Theo tôi, học theo cách này có hiệu quả nhất về thời gian cũng như kinh nghiệm thực tế.

Hiện tượng 'dội' của nút nhấn/công tắc thường được gọi trong tiếng Anh bằng từ bouncing, và kỹ thuật khắc phục được gọi là debouncing.

Để thực hiện bằng phần mềm, mỗi khi bạn vào ngắt do có tác động vào RB0, bạn dùng một đoạn chương trình để chờ một khoảng thời gian nào đó, sau đó kiểm tra lại trạng thái của chân RB0, nếu trạng thái lúc này là ổn định (nghĩa là sau hai lần đọc liên tiếp, cách nhau một khoảng thời gian nào đó, mà trạng thái là giống nhau) thì bạn có thể xem như nút nhấn/công tắc đã hết dội và có thể thực hiện các thao tác kế tiếp. Tất nhiên đây là một cách khá trực quan, nếu yêu cầu xử lý phức tạp hơn thì chúng ta sẽ cần những thuật toán hiệu quả hơn.

Đối với chân RA4, datasheet thường có nêu rõ từng chức năng khác nhau của chân. Rõ ràng trong datasheet có ghi RA4 khi là ngõ ra sẽ có kiểu OD (open drain-cực máng hở). Còn chức năng T0CKI là ngõ vào cho Timer 0, trong trường hợp bạn muốn dùng một nguồn clock ngoài làm clock cho Timer 0, có thể dùng để đếm các sự kiện bên ngoài.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263

thay đổi nội dung bởi: namqn, 28-05-2006 lúc 08:29 PM.
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Vì sao nên thảo luận về luận văn tốt nghiệp online? falleaf Luận văn tốt nghiệp 19 19-03-2024 08:16 AM
Các đề tài dự kiến của phòng thí nghiệm mở picvietnam falleaf PIC Việt Nam - Chuyên nghiệp 41 22-06-2013 02:15 AM
Nhờ giúp đỡ cho dự án nghiên cứu tiếng Việt namqn Trao đổi ngoài luồng 1 06-07-2007 01:31 PM
luận án tốt nghiệp 111985 Luận văn tốt nghiệp 14 01-04-2007 11:22 PM
Tạo Đề Tài cùng nghiên cứu 111985 Đóng góp ý kiến 1 02-01-2007 08:02 PM


Múi giờ GMT. Hiện tại là 07:58 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam