PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC > Những câu hỏi thường gặp

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

Những câu hỏi thường gặp Những lỗi cơ bản thường gặp khi làm việc với PIC hoặc những vấn đề cơ bản nhất thường được hỏi trong những năm qua

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 29-05-2009, 02:51 AM   #1
chaulongfight
Nhập môn đệ tử
 
Tham gia ngày: Apr 2008
Bài gửi: 9
:
Giúp config thạch anh 20 MHz. Cần rất gấp...

Chào các bác, hk này em đang làm đồ án về cái AC measurement hiển thị ra LCD. Mọi thứ vẫn rất tôt đẹp. CODE mô phỏng đã chạy được từ lâu. Mấy bữa rồi em bận làm cái đồ án tin với lại có phần hơi chủ quan nên vẫn chưa làm mạch thử. Hôm qua em dự định gắn ra test board thử để cuối tuần làm mạch in. Độ tuần sau là phải nộp sản phẩm rồi. Bỗng dưng xuất hiện một vấn đề như sau:
* Vốn là em định debug từng bước ( chỉ là debug phần cứng như đấu dây, test linh kiện thôi) để sau này gỡ lỗi cho đỡ rối nên em test thử bằng chương trình nhấp nháy một PORT (PORTB), mô phỏng OK. Nhưng khi gắn vô test board thì hắn không chạy. Rõ hơn là mạch dao động không hoạt động ( em đoán thế ). Bởi nếu đấu tiên em cho PORT đó sáng thì gắn vô mạch hắn cứ sáng mãi chứ ko nháy, Còn nếu em cho tắt trứơc sáng sau thì nó cứ tắt mãi.
* Em rất rối, do mặc dù đã thử rất nhiều cách nhưng vẫn không khắc phục được lỗi trên.
* Mạch em đang dùng PIC 16F877A, thạch anh 20 MHZ, em đã cấu hình #FUSE HS mà vẫn không được. Khả năng thạch anh hư là rất hiếm bởi theo em biết thì thạch anh rất khó bị hư vả lại ở nhà em có 2 con 20 MHz đã thử cả 2 con mà vẫn không được.
* Sau đó em thử chuyển sang xài thử con 4 MHz với cấu hình #FUSE XT, năm ngoái đồ án em làm về quang báo dùng con này chạy rất OK. Thế nhưng mọi chuyện vẫn như cũ.
* Em đọc trong datasheet của con PIC thấy có nói là đối với cấu hình sử dụng HS, cũng như XT thì yêu cấu gắn thêm một điện trở Rs để tránh overiding nhưng hắn không nêu rõ giá trị điện trở là bao nhiêu. Em đã thử thay dẫn các giá trị thì thấy như sau: với các trơ 100 Ohm, 220 Ohm đèn sáng mãi, với trở từ 1 KOhm trở lên thì tắt mãi. (Khi em sử dụng trơ 220 Ohm hoặc không gắn thêm trở thì có hiện tượng là nếu em chạm tay vào chân của con thạch anh thì hắn tắt cũng giống như là gắn thêm trở lớn vậy. Em nghĩ cái này là do trở kháng của cơ thể gây ra.)
* Có một hiện tượng khác nữa là nếu em chạm tay váo chân của 2 con tụ thì đèn có nháy mặc dù cơ chế không thất sự chuẩn xác lắm. Cái này giống như là cấu hình hoạt động với Resistor/Capacitor nhưng rõ ràng trong file cấu hình của em sử dụng với high speed crystal.
* Khả năng PIC hư em nghĩ chắc cũng không phải tại ngoài con của em, em còn có 2 con của thằng bạn nữa. Cả 3 con điều có chung hiện tượng trên.
* Em chỉ còn lại 2 nghi vấn là: test board bị lỗi, các chân gắn không chặt nên khi hoạt động với tần số cao gây ra lỗi trên. Thứ 2 là config của em vẫn có lỗi mà em không phát hiện ra.

* Nói ra thì thật là ngại tại cũng đã tiếp xúc với PIC cũng được một thời gian rồi, em nghĩ mình cũgn biết đôi chút về con PIC. Tự dưng giờ làm cái mạch nhấp nhấy cũng không chạy làm em thấy dỡ khóc dỡ cười quá.
* Các bác có cao kiến gì chỉ giúp em với. Chứ nếu chưa chạy thử trên testboard, làm mạch in luôn lỡ hắn không chạy thì chỉ có mà khóc thét. Tại cái mạch in cũng khá phức tạp...
* Cái code thử của em đây:


#include <16F877A.h>
#include "G:\Ebook\CCS\Lib\def_16f877A.h"
#device adc=8

#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Crystal osc >= 4mhz
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

// TODO: USER CODE!!
TRISB = 0x00;
while(true)
{
PORTB = 0xff;
delay_ms(1000);
PORTB = 0x00;
delay_ms (1000);
}
}



* Rất mong nhận được sự phản hồi từ các bác. Thân.
chaulongfight vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ðiều Chỉnh
Xếp Bà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


Múi giờ GMT. Hiện tại là 11:34 AM.


Đượ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