Trích:
Nguyên văn bởi linhtdh1k49
//
// Hello Embedded World
// Version 2
// Hardware : PIC18F1220
//
#include "p18f1220.h"
main()
{
TRISA = 0;
while(1) {
PORTA = 0xffff;
}
}
Như anh Nam và mọi người thấy, đoạn code này cực kì đơn giản. Nếu em lập trình bên CCS thì không hề có hiện tượng reset VDK . Còn với MPLAB này thì cứ sau một khoảng thời gian thì nó tự động reset.
Đọc hướng dẫn của MPLAB thì nó nói phải vào Configure --> Configuration Bits --> Disable Watchdog timer --> em đã làm như hình vẽ.
Nhưng kết quả vẫn vậy
Bi h em đang phải làm việc với CCS, tuy nhiên em rất trăn trở vấn đề này. MPLAB cũng cho phép ta mô phỏng, nhưng khi kết hợp được với Proteus là tốt nhất. Mong các anh PVN giúp đỡ
|
Với chương trình đơn giản của bạn, tôi thường viết như sau:
Code:
#include <p18cxxx.h>
//Configuration bits
#pragma config OSC = HS
#pragma config FSCM = OFF
#pragma config IESO = OFF
#pragma config PWRT = OFF
#pragma config BOR = ON
#pragma config BORV = 27
#pragma config WDT = OFF
#pragma config WDTPS = 32768
#pragma config MCLRE = ON
#pragma config STVR = ON
#pragma config LVP = OFF
#pragma config DEBUG = OFF
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CPB = OFF
#pragma config CPD = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = OFF
#pragma config WRTC = OFF
#pragma config WRTD = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTRB = OFF
//Main program
void main(void)
{
TRISA = 0;
while(1) {
LATA = 0xFF;
}
}
Tôi thường xuyên xác định tường minh giá trị cho các từ cấu hình, để đảm bảo không có điều gì bất thường trong cấu hình của chip khi thử nghiệm. Bạn thử tạo một project mới với code ví dụ trên (chọn PIC được dùng là PIC18F1220 khi tạo project), biên dịch và nạp vào Proteus xem WDT còn tác động reset PIC nữa hay không.
Ở hình minh họa thứ ba mà bạn đã post, tôi chú ý rằng checkbox "Configuration Bits set in code" vẫn được chọn, như vậy bạn sẽ không thể thay đổi các thiết lập cấu hình trong MPLAB.
Thân,