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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 10-11-2007, 10:20 PM   #1
PSman
Nhập môn đệ tử
 
Tham gia ngày: Nov 2006
Bài gửi: 9
:
PIC 16F877A - thật là gian khổ !

Thật là gian khổ với PIC quá.

Em làm xong board mạch test PIC16F877A, nạp source qua Tiny bootloader đã OK. Làm cái file hex đơn giản nhất trên đời là test port B bằng CCS. Mô phỏng proteus OK. Đổ vào mạch qua TinyBL OK. Nhưng triệu chứng như sau :

- Nếu test đơn giản là cho port B = 0x00 hoặc 0xFF hoặc từng bit riêng thì PIC chạy đúng, Led sáng hoặc tắt đúng. Nhưng mà thêm phần lặp delay để nó nháy led thì PIC chạy nửa chừng rồi treo. Đo áp port B cũng bằng 0V k thay đổi gì cả.

- Nạp hex trực tiếp bằng mạch nạp ngoài (đã nạp firmware bootloader tốt) thì nó vẫn không chạy đúng (nhấp nháy Led).

- Dùng MPLAB biên dịch thử đoạn asm nháy led (của bác ntc), proteus vẫn chạy tốt, nhưng qua mạch thật Led vẫn k chịu nháy.

- Tình hình là cứ đến delay_ms là nó đứng.

Suy luận của em : đã nạp fw bootloader cho PIC và chạy tốt, bật/tắt vài con Led PIC chạy đúng. Vậy chứng tỏ mạch nạp đúng, mạch test đúng, mạch Bootloader đúng.
Vậy hà cớ gì nhấp nháy không được ?

Em đã thử trên 2 con, và phản ứng là như nhau. Sure là PIC không điên.
Thạch anh 20MHz, tụ 33p (chắc k quan trọng).

Mấy bác gỡ dùm em với. Hiện tượng hiếm có

#include <16F877A.h>
#include "def_877A.h"
#device *=16
#device adc=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)

void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);

setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

trisb = 0x00;
trisc = 0x00;
portc = 0x00;
portb = 0xff;

While(1)
{
portb = 0x00; // <-- nếu thay bằng 0xFF thì Port B sáng, 0x00 là Led tắt luôn.
delay_ms(250); //<-- dừng ở đây thì phải (?)
portb = 0xff;
delay_ms(250);
}
}

proteus và hex nằm trong rar bên dưới. Chú thích nhỏ là em lười cắm mass rời cho Led nên cắm nguyên bus vào 1 port c và dập nó xuống đất.
File Kèm Theo
File Type: rar Test PIC 16F877A.rar (14.5 KB, 263 lần tải)

thay đổi nội dung bởi: PSman, 12-11-2007 lúc 05:36 PM.
PSman vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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à 04:50 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