PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 24-03-2010, 08:41 AM   #1
lybao_huy
Đệ tử 5 túi
 
Tham gia ngày: Jan 2008
Bài gửi: 97
:
Lỗi trong MPLAB C18

mục đích của đoạn code này là làm nhấp nháy đèn led .
#include <p18cxxx.h>
#pragma config WDT = OFF
#pragma config FOSC = HS
#pragma config CPUDIV = OSC1_PLL2
#pragma config PWRT = ON
#pragma config BOR = ON
#pragma config BORV = 3
#pragma config MCLRE = ON
#pragma config LVP = OFF
void main (void)
{
TRISA=0;
OSCCONbits.SCS0=0; OSCCONbits.SCS1=0;//chọn bộ dao động chính
while(1){
PORTAbits.AN0=1;
delay();//hàm delay tôi không nêu ra ở đây,thời gian delay là 1s;
PORTAbits.AN0=0;
delay();//hàm delay tôi không nêu ra ở đây,thời gian delay là 1s;
}
với cách viết như trên thì nó chạy rất tốt. nhưng khi thay đổi:
OSCCONbits.SCS0=1; OSCCONbits.SCS1=0;//chọn bộ dao động timer1 làm xung hệ thống.
thì nó cũng có thời gian delay như trên(mặc dù tôi không có đặt bất cứ thạch anh vào timer1),tôi tưởng nó bị nhiễu từ bộ dao động chính, nên cho 2 pin của timer1 xuống đất,nhưng kết quả vẫn vậy,tôi không hiểu. có ai giải thích dùm hộ.

Tôi còn có một thắc mắc nữa là:
cũng là đoạn code trên nhưng:
OSCCONbits.SCS0=0; OSCCONbits.SCS1=0;//chọn bộ dao động chính
while(1){
PORTAbits.AN0=~LATAbits.LATA0;//toggle pin A0
delay();
}
đoạn code này cũng chạy tốt.nhưng
while(1){
PORTAbits.AN0=~PORTAbits.AN0;//toggle pin A0
delay();
}
lại không chạy, mặc dù pin A0 nối ra đèn led thông qua một điện trở và không có tụ .

thay đổi nội dung bởi: lybao_huy, 24-03-2010 lúc 09:26 AM.
lybao_huy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2010, 12:05 PM   #2
sit_alone76816
Đệ tử 2 túi
 
Tham gia ngày: Aug 2008
Bài gửi: 38
:
Bạn ơi cho mình hỏi ý nghĩa của đoạn này là gì vậy bạn

#pragma config LVP = OFF

mình còn thấy có đoạn sau nữa, mà không biết ý nghĩa như thế nào ?

#pragma config PBADEN = OFF
#pragma config BOR = OFF
#pragma config PWRT = OFF


Mong bạn giải thích giùm nha bạn. Trân trọng cảm ơn !
sit_alone76816 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2010, 02:45 PM   #3
lybao_huy
Đệ tử 5 túi
 
Tham gia ngày: Jan 2008
Bài gửi: 97
:
các khai báo #pragma

#pragma config LVP = OFF //Single-Supply ICSP Enable bit:
Đoạn này có nghĩa là tắt chế độ lập trình ICSP điện thế thấp(Low-Voltage ICSP programming). Bạn xem tại trang 302 data sheet của PIC8F4550 tại mục : 25.10 Single-Supply ICSP Programming.

#pragma config PBADEN = OFF
Đoạn này có nghĩa là PORTB<4:0> pins are configured as digital I/O on Reset . Tức là các Pins này là chân ra/vào số lúc reset.
#pragma config BOR = OFF
Đoạn này có nghĩa là Brown-out Reset disabled in hardware and software . Tức không có khả năng reset lúc điện thế cấp cho con PIC xuống thấp dưới ngưỡng(có thể làm cháy con PIC).
#pragma config PWRT = OFF
Đoạn này có nghĩa là tắt Power-up Timer Enable bit:

Tất cả những cái này bạn có thể xem tại mục SPECIAL FEATURES OF THE CPU của tất cả các Datasheet của PIC.
Để có thể config những cái này bạn xem trong file hlpPIC18ConfigSet tại C:\MCC18\doc.
lybao_huy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2010, 03:12 PM   #4
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi lybao_huy View Post
mục đích của đoạn code này là làm nhấp nháy đèn led .
#include <p18cxxx.h>
#pragma config WDT = OFF
#pragma config FOSC = HS
#pragma config CPUDIV = OSC1_PLL2
#pragma config PWRT = ON
#pragma config BOR = ON
#pragma config BORV = 3
#pragma config MCLRE = ON
#pragma config LVP = OFF
void main (void)
{
TRISA=0;
OSCCONbits.SCS0=0; OSCCONbits.SCS1=0;//chọn bộ dao động chính
while(1){
PORTAbits.AN0=1;
delay();//hàm delay tôi không nêu ra ở đây,thời gian delay là 1s;
PORTAbits.AN0=0;
delay();//hàm delay tôi không nêu ra ở đây,thời gian delay là 1s;
}
với cách viết như trên thì nó chạy rất tốt. nhưng khi thay đổi:
OSCCONbits.SCS0=1; OSCCONbits.SCS1=0;//chọn bộ dao động timer1 làm xung hệ thống.
thì nó cũng có thời gian delay như trên(mặc dù tôi không có đặt bất cứ thạch anh vào timer1),tôi tưởng nó bị nhiễu từ bộ dao động chính, nên cho 2 pin của timer1 xuống đất,nhưng kết quả vẫn vậy,tôi không hiểu. có ai giải thích dùm hộ.
Ở đây có 2 vấn đề:
- Trong các bit cấu hình ko thấy bạn cho phép clock switching.
- Nếu bạn chịu khó đọc mục oscillator, phần clock switching sẽ thấy:
"The system clock will continue to operate from
the old clock until the new clock is ready."

Timer1 bạn ko lắp thạch anh, tức là ko hoạt động, PIC sẽ ko chuyển sang nguồn dao động timer 1.

Trích:
Tôi còn có một thắc mắc nữa là:
cũng là đoạn code trên nhưng:
OSCCONbits.SCS0=0; OSCCONbits.SCS1=0;//chọn bộ dao động chính
while(1){
PORTAbits.AN0=~LATAbits.LATA0;//toggle pin A0
delay();
}
đoạn code này cũng chạy tốt.nhưng
while(1){
PORTAbits.AN0=~PORTAbits.AN0;//toggle pin A0
delay();
}
lại không chạy, mặc dù pin A0 nối ra đèn led thông qua một điện trở và không có tụ .
- Bạn ko disable tính năng analog trên chân RA0, nhưng vẫn thấy LED sáng, có lẽ bạn đang chạy ở chế độ debug?
Nếu bạn chuyển sang chế độ release thì không có đoạn code nào phía trên làm LED sáng cả!
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2010, 06:16 PM   #5
lybao_huy
Đệ tử 5 túi
 
Tham gia ngày: Jan 2008
Bài gửi: 97
:
Cảm ơn bạn đã giải thích dùm về phần dao động.
bạn có thể giải thích cho tôi sự ảnh hưởng Debug và Release lên code không?.
tôi đã chuyển sang release như bạn nói nhưng nó vẫn thế.
lybao_huy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-03-2010, 08:21 AM   #6
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi lybao_huy View Post
Cảm ơn bạn đã giải thích dùm về phần dao động.
bạn có thể giải thích cho tôi sự ảnh hưởng Debug và Release lên code không?.
tôi đã chuyển sang release như bạn nói nhưng nó vẫn thế.
Khi bạn chọn debug hay release ở cái dropdown list trong MPLAB thì chỉ thay đổi lựa chọn của trình biên dịch, cái này ko ảnh hưởng gì.

Khác biệt là khi bạn dùng ICD2, PICkit2, ICD3, PICkit3 hoặc realICE để hardware debug PIC. Khi đó các tool debug này sẽ tự động cấu hình các chân có tính năng analog trở về digital mà ko cần cấu hình trong code.

Chân RA0 là 1 chân Analog, trước khi sử dụng nó như 1 digital IO để xuất led, bạn phải tắt tính năng analog trên chân này đi.
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-03-2010, 10:11 AM   #7
lybao_huy
Đệ tử 5 túi
 
Tham gia ngày: Jan 2008
Bài gửi: 97
:
Oh, rất tuyệt, tôi cảm ơn bạn nhiều lắm.
cho tôi hỏi nữa nhé:

1- các tool debug này làm thế nào mà tự động cấu hình các chân có tính năng analog trở về digital mà ko cần cấu hình trong code.

2-nên chọn MPLAB C hay HTPIC để lập trình cho PIC, DSPIC.

thay đổi nội dung bởi: lybao_huy, 26-03-2010 lúc 10:20 AM.
lybao_huy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-03-2010, 10:58 AM   #8
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi lybao_huy View Post
Oh, rất tuyệt, tôi cảm ơn bạn nhiều lắm.
cho tôi hỏi nữa nhé:

1- các tool debug này làm thế nào mà tự động cấu hình các chân có tính năng analog trở về digital mà ko cần cấu hình trong code.

2-nên chọn MPLAB C hay HTPIC để lập trình cho PIC, DSPIC.
1 - Các loại chip hỗ trợ hardware debug đều có module debugger ở trong chip.
Các tool debugger giao tiếp với module này để điều khiển hoạt động của chip, do đó nó có thể làm rất nhiều thứ chứ ko chỉ tự cấu hình các chân.

2 - C18, C30 được hỗ trợ đầy đủ trong các bộ thư viện của microchip. Nên nếu sử dụng C18, C30 bạn sẽ thuận tiện hơn khi làm ứng dụng liên quan đến USB, Ethernet, Filesystem, graphic, zigbee....

HTTPIC hiện tại cũng thuộc về Microchip cho nên có thể tương lai cũng đc hỗ trợ nhiều hơn.
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-03-2010, 09:56 PM   #9
const_nos
Đệ tử 2 túi
 
Tham gia ngày: Jul 2008
Bài gửi: 33
:
Nếu bạn cần giúp đỡ thì tạo 1 thread mới
Không được spam câu hỏi trong các thread về chủ đề khác làm loãng nội dung

thay đổi nội dung bởi: bien_van_khat, 26-03-2010 lúc 10:07 PM.
const_nos vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-03-2010, 10:25 PM   #10
thanhphong169
Nhập môn đệ tử
 
Tham gia ngày: Jul 2009
Bài gửi: 3
:
chào các Pro
Mình viết chương trình bằng C18,gặp phải lỗi.
Error - could not find definition of symbol 'ReadADC' in file './ct_dknd_PID.o'.
Errors : 1
Mình đã add cac file.h,.lib,.lkr rồi.Chỉ đường dẫn cho các file này rồi.Nhưng khi dich vẫn bị lỗi.Các pro giúp mình với
thanhphong169 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-03-2010, 11:03 PM   #11
lybao_huy
Đệ tử 5 túi
 
Tham gia ngày: Jan 2008
Bài gửi: 97
:
Bạn thêm file adc.h ở trong C:\MMC18\h bằng cách #include <adc.h> vào đầu chương trình, chứ add nó vào không ăn thua gì đâu.
lybao_huy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-03-2010, 09:54 AM   #12
thanhphong169
Nhập môn đệ tử
 
Tham gia ngày: Jul 2009
Bài gửi: 3
:
Mình đã include <adc.h>,include<18p67j60.h> rồi nhưng mà vẫn bị lỗi như trên.Chẳng hiểu sao nữa.
thanhphong169 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-03-2010, 09:38 PM   #13
lybao_huy
Đệ tử 5 túi
 
Tham gia ngày: Jan 2008
Bài gửi: 97
:
bạn coi lại cái lệnh đọc adc cũng như thiết lập các tham số có phải thuộc 18p67j60 không vì trong thư viện nó có rất nhiều hàm cũng cho ADC nhưng lại không phải cho 18p67j60 mà có thể cho 18p4550, lúc đầu làm bạn nên viết chương trình đơn giản để có thể quản lý .
lybao_huy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-07-2010, 01:08 AM   #14
tranquoclap
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 4
:
Unhappy Các bác giúp em với!Lỗi khi tạo file mới!

Em mới cài MPLAB v 8.30 trên vista,sau khi tạo mới project,nhấn vào file->new thì gặp lỗi như trên hình!Bác nào giúp em với!Trước đó em da cài v 8.50 cũng lỗi giống thế!
Hình Kèm Theo
File Type: jpg loi mplab.jpg (65.0 KB, 5 lần tải)
tranquoclap vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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à 05:26 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