PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   PIC báo unknown (http://www.picvietnam.com/forum/showthread.php?t=5175)

vutranthelan 27-10-2009 11:11 AM

PIC báo unknown
 
Nhờ các bác giúp giùm cái này. Em đang xài con PIC6F877A. Vấn đề là em đang thử test chế độ đếm của timer0. Vì vậy em kích chân RB7 lên 1 rồi delay rồi lại xuống 0, mục đích là tạo ra xung cho timer0 đếm. Sau đó em nối chân RB7 vào chân của timer0 cho nó đếm. Timer0 đếm trong 200ms thì sẽ gửi lên PC.
Code này em nạp bình thường, nhưng khi chạy thì thấy con PIC nóng lên, mạch chạy cũng thế. Sau đó em nạp lại chương trình khác vào thì Winpic800 báo detcted-->UNKNOWN. Thật sự là ko hiểu tại sao nữa???

namqn 27-10-2009 01:03 PM

Trích:

Nguyên văn bởi vutranthelan (Post 30602)
Nhờ các bác giúp giùm cái này. Em đang xài con PIC6F877A. Vấn đề là em đang thử test chế độ đếm của timer0. Vì vậy em kích chân RB7 lên 1 rồi delay rồi lại xuống 0, mục đích là tạo ra xung cho timer0 đếm. Sau đó em nối chân RB7 vào chân của timer0 cho nó đếm. Timer0 đếm trong 200ms thì sẽ gửi lên PC.
Code này em nạp bình thường, nhưng khi chạy thì thấy con PIC nóng lên, mạch chạy cũng thế. Sau đó em nạp lại chương trình khác vào thì Winpic800 báo detcted-->UNKNOWN. Thật sự là ko hiểu tại sao nữa???

Code của bạn ra sao? Nếu bạn thiết lập chân Timer 0 là ngõ ra, và xuất logic ngược với logic của chân RB7 (chân RB7 = '1' còn chân RA4 = '0'), thì con PIC nóng lên là đúng rồi. Khả năng PIC còn sống có lẽ là thấp, do đó WinPic800 báo unknown cũng không có gì là khó hiểu.

Thân,

vutranthelan 27-10-2009 08:34 PM

Trích:

Nguyên văn bởi namqn (Post 30603)
Code của bạn ra sao? Nếu bạn thiết lập chân Timer 0 là ngõ ra, và xuất logic ngược với logic của chân RB7 (chân RB7 = '1' còn chân RA4 = '0'), thì con PIC nóng lên là đúng rồi. Khả năng PIC còn sống có lẽ là thấp, do đó WinPic800 báo unknown cũng không có gì là khó hiểu.

Thân,

Em thiết lập Timer0 ở chế độ đếm. Code (sorry vì phải post code kiểu này, upload file toàn bị báo lỗi):

Code:

#include <16F877A.h>
#FUSES NOWDT                 
#FUSES HS                     
#FUSES NOPUT                 
#FUSES NOPROTECT             
#FUSES NODEBUG                 
#FUSES NOBROWNOUT             
#FUSES NOLVP                   
#FUSES NOCPD                   
#FUSES NOWRT                   
#use delay (clock=20000000) //20Mhz
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=N, bits=8)
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define START_VALUE_TIMER0    55  //tri khoi tao ban dau cua timer0
#define START_VALUE_TIMER1  3035 // 65536 - 3036, tao thoi gian ngat 50ms

int16 j = 0;
int16 flag_timer1;
int16 pulse;

#INT_TIMER0 // ngat timer0 tang bien len 1
void TIMER0_int()
{
      pulse++;
}
#INT_TIMER1 // ngat timer0 tang bien len 1
void timer1_int() // moi lan timer1 tran la 0.05s
{
  if (j == 4){ // chu ki lay mau 0.05 * 4 = 0.2s
      j = 0;
      pulse = pulse*256 + get_timer0();
      flag_timer1 = 1;
      printf(" \t%ld",pulse); // truyen toc do xung dong co 1 ve may tinh
  }
  else
      j++;
}

void init_timer()
{
  setup_timer_0(RTCC_EXT_H_TO_L);
  set_timer0(START_VALUE_TIMER0);
  setup_timer_1(T1_INTERNAL | T1_DIV_BY_4); // moi lan tran timer1 la (65536-3036)*4*4/20000000=50ms
  set_timer1(START_VALUE_TIMER1);
  enable_interrupts(GLOBAL);
  enable_interrupts(INT_TIMER1);
  enable_interrupts(INT_TIMER0);
}

void main()
{
    init_timer(); 
    while(true)
    {
    if (flag_timer1 ==1){
      flag_timer1 = 0;
      output_high(PIN_B7);
      delay_us(1200);
      output_low(PIN_B7);
      delay_ms(18);
    }
    }
  }
}



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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam