PDA

View Full Version : help me!!!! pic 18f4431 + mikroC


roi
16-12-2008, 10:24 PM
Mình đang làm đồ án, sử dụng con pic 18f4431 để điều rộng xung, mình viết bằng mikroC. Rắc rối mình gặp phải là khi thử cho xuất LED với đoạn lệnh:
void main()
{
TRISB = 0;
PORTB = 0;
while(1)
{
PORTB = 1 - PORTB;
delay_ms(1);
}
}
thì LED nhấp nháy với thời gian khoảng 1 giây. Mình nghĩ có lẽ vì mình chưa chọn đúng chế độ sử dụng thạch anh ngoài ( 20Mhz ) nên có một nguồn dao động nội nào đó làm việc chứ không phải thạch anh mình đang dùng. àh, giờ mới nhớ ra con chip mình tính toán cực kì chậm. Là lỗi này phải không? bạn nào đã từng làm qua hướng dẫn giúp mình cách sửa lỗi với. Chương trình mình đã xong rồi, chỉ còn bị chỗ này mà tìm mãi trong datasheet vẫn không biết làm sao cho đúng. 4 ngày nữa phải nộp rồi. hic. Help me!!! Help me!!! SOS.
Thanks for all your help!

roi
16-12-2008, 10:38 PM
Anh Nam đang online phải ko? May quá, giúp em với. Em đang chẳng biết hỏi ai vì hầu như mọi người thích sử dụng CCS hơn MikroC. Thanks anh!

namqn
17-12-2008, 12:02 AM
Mình đang làm đồ án, sử dụng con pic 18f4431 để điều rộng xung, mình viết bằng mikroC. Rắc rối mình gặp phải là khi thử cho xuất LED với đoạn lệnh:
void main()
{
TRISB = 0;
PORTB = 0;
while(1)
{
PORTB = 1 - PORTB;
delay_ms(1);
}
}
thì LED nhấp nháy với thời gian khoảng 1 giây. Mình nghĩ có lẽ vì mình chưa chọn đúng chế độ sử dụng thạch anh ngoài ( 20Mhz ) nên có một nguồn dao động nội nào đó làm việc chứ không phải thạch anh mình đang dùng. àh, giờ mới nhớ ra con chip mình tính toán cực kì chậm. Là lỗi này phải không? bạn nào đã từng làm qua hướng dẫn giúp mình cách sửa lỗi với. Chương trình mình đã xong rồi, chỉ còn bị chỗ này mà tìm mãi trong datasheet vẫn không biết làm sao cho đúng. 4 ngày nữa phải nộp rồi. hic. Help me!!! Help me!!! SOS.
Thanks for all your help!
Lâu rồi tôi không dùng mikroC nên cũng không nhớ rõ. Bạn có thể chụp màn hình thiết lập cấu hình của bạn lên không (chụp tất cả các phần cấu hình)? PIC18F4431 có 7 từ cấu hình, tôi đã biết nhiều người gặp các hành vi khó hiểu của PIC vì thiết lập không đầy đủ các từ cấu hình. Ví dụ dưới đây là cấu hình điển hình của tôi cho PIC18F4431 (để bạn có khái niệm về những field cần thiết lập):
#pragma config OSC = HS
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRTEN = ON
#pragma config BOREN = ON
#pragma config BORV = 27
#pragma config WDTEN = OFF
#pragma config WINEN = OFF
#pragma config WDPS = 32768
#pragma config T1OSCMX = OFF
#pragma config HPOL = HIGH
#pragma config LPOL = HIGH
#pragma config PWMPIN = ON
#pragma config MCLRE = ON
#pragma config EXCLKMX = RD0
#pragma config PWM4MX = RD5
#pragma config SSPMX = RD1
#pragma config FLTAMX = RD4
#pragma config STVREN = ON
#pragma config LVP = OFF
#pragma config DEBUG = OFF
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CP2 = OFF
#pragma config CP3 = OFF
#pragma config CPB = OFF
#pragma config CPD = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRT2 = OFF
#pragma config WRT3 = OFF
#pragma config WRTB = OFF
#pragma config WRTC = OFF
#pragma config WRTD = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTR2 = OFF
#pragma config EBTR3 = OFF
#pragma config EBTRB = OFF

Để xuất thông tin ra các port I/O của PIC18 thì bạn nên dùng thanh ghi LATx thay vì PORTx. Quy tắc đơn giản: xuất ra LATx, đọc từ PORTx.

Thân,

roi
18-12-2008, 08:58 PM
Em cảm ơn anh đã dành thời gian đọc bài và giúp em, em đã làm được rồi ạ. Có lẽ hôm trước em chưa set mấy thanh ghi về 0. Em cũng hoàn thành đề tài rồi, nhưng không biết cách post lên diễn đàn thế nào. À, anh cho em hỏi nhé. Em làm biến tần, dùng opto PC817 cách li từ PIC ra IRAMX(tần số tối đa là 20Khz) nhưng khi em cài đặt cho hoạt động ở tần số khoảng 5kHz thì đèn sáng rất yếu. Có phải do opto không thể đáp ứng được tần số lớn không ạ? Nếu vậy thì em có thể tìm mua loại OPTO nào chịu được tần số lớn hơn? Em cảm ơn anh nhiều!

namqn
18-12-2008, 11:40 PM
Em cảm ơn anh đã dành thời gian đọc bài và giúp em, em đã làm được rồi ạ. Có lẽ hôm trước em chưa set mấy thanh ghi về 0. Em cũng hoàn thành đề tài rồi, nhưng không biết cách post lên diễn đàn thế nào. À, anh cho em hỏi nhé. Em làm biến tần, dùng opto PC817 cách li từ PIC ra IRAMX(tần số tối đa là 20Khz) nhưng khi em cài đặt cho hoạt động ở tần số khoảng 5kHz thì đèn sáng rất yếu. Có phải do opto không thể đáp ứng được tần số lớn không ạ? Nếu vậy thì em có thể tìm mua loại OPTO nào chịu được tần số lớn hơn? Em cảm ơn anh nhiều!
Theo datasheet của PC817:
http://sharp-world.com/products/device/lineup/data/pdf/datasheet/pc817x_e.pdf

thời gian tăng/giảm điển hình là 3 - 4 us (xấu nhất có thể đến 18 us), với điều kiện thử nghiệm đã nêu trong datasheet. Nếu điều kiện làm việc của mạch khác với điều kiện thử nghiệm, các thời gian tăng/giảm này có thể lớn hơn nữa. Cần chú ý rằng CTR (Current Transfer Ratio) thực tế của các optocoupler biến động khá nhiều, và có thể nhỏ hơn nhiều so với giá trị trong datasheet.

Với tần số 5 kHz, mỗi chu kỳ chỉ có 200 us, nếu thời gian tăng/giảm của optocoupler là khoảng 20 us thì tôi không nghĩ rằng bạn có nhiều thời gian để hiện thực các giải thuật. Không rõ bạn tạo ngõ ra 1 pha hay 3 pha.

Nếu ở VN thì có lẽ tôi dùng 6N136 (lâu rồi tôi không rõ thị trường linh kiện ở VN ra sao).

Thân,

roi
23-12-2008, 12:33 PM
Em làm biến tần 3 pha. Lần đầu tiếp xúc với linh kiện thực tế nên không có kinh nghiệm. Cảm ơn anh về mọi sự giúp đỡ, hy vọng sẽ được tham khảo ý kiến của anh nhiều hơn. Chúc anh luôn khỏe và thành công!

nhatson.elec
23-12-2008, 11:25 PM
Ở việt nam opto cao tốc có thể kiếm 6n137