PDA

View Full Version : [Help] [MLABX on Ubuntu] Code bật sáng LED, dịch thành công, Pic16f877A không chạy


habach
04-11-2013, 11:40 PM
Tình hình là mình mày mò suốt cả một ngày, hỏi Google, hỏi Microchip, hỏi nhiều nơi khác nữa mà không thể nào xác định được nguyên nhân ở đâu. Đành phải trình bày với các bác vấn đề như sau:

Mình mua một bộ PIC Kit V3 (Pic16f877A), kèm mạch nạp PicKit2 (Minh Hà banlinhkien.vn)
Máy tính mình chạy Ubuntu, đã cài MLABX IDE v1.95 và XC8 compiler thành công. Đã tạo được project và viết được code như sau:



// PIC16F877A Configuration Bit Settings

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG
#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = ON // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)

#include <xc.h>

#define _XTAL_FREQ 20000000

#include <stdio.h>
#include <stdlib.h>
#include <pic16f877a.h>

int main(int argc, char** argv) {
TRISD=0x00; //Set Port D lam output
PORTD=0xF8; //bat sang 3 den LED tai RD0, RD1, RD2
return (EXIT_SUCCESS);
}


Build không báo lỗi. Cho download xuống PICKit cũng ok, không thấy báo lỗi gì, đèn USB có nháy sáng chứng tỏ đã có giao tiếp, hơn nữa chương trình cũ trên chip đã bị xóa.
NHưng không biết tại sao các LED không chạy như ý đồ :D

Mình mới chân ướt chân ráo với Pic. Không biết làm thế nào nữa. Nhờ các bác chỉ giáo. Đa tạ!

habach
05-11-2013, 11:04 AM
Hôm nay lại tiếp tục mò tìm hiểu thêm. Mình cài đặt thêm Windows để dùng CCS lập trình. Kết quả là chạy thành công đúng ý muốn.

Nhưng Windows không phải là hệ điều hành mình dùng hằng ngày. Mình dùng Ubuntu đã lâu và vẫn tiếp tục sử dụng dài lâu. Nên mình muốn tìm hiểu tại sao cùng code như vậy viết trên CCS trong Windows thì chạy mà dùng MLABX trên Ubuntu thì không chạy??

TRong quá trình mò mẫm mình phát hiện thấy sự khác nhau về mã CONFIGURATIONS giữa hai IDE trên là: khi viết bằng MLABX trên Ubuntu, dịch và nạp xuống PIC, rồi đọc ngược lại mã Config thì thấy nó là: FFF9. Còn dùng CCS trên Windows, mã này là 2F0A.

Việc này vượt quá hiểu biết sơ khai của mình về PIC. Rất mong các bác chỉ cho nguyên nhân tại làm sao và cách khắc phục để code có thể chạy được. Xin đa tạ.

BÁc @falleaf ơi, bác @namqn ới...

habach
05-11-2013, 08:48 PM
Đã tìm ra nguyên nhân: Phải tắt Low-Voltage (Single-Supply) In-Circuit Serial Programming đi, như sau:

#pragma config LVP = OFF