|
Tài trợ cho PIC Vietnam |
dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
|
Ðiều Chỉnh | Xếp Bài |
|
10-01-2007, 07:37 PM | #1 |
PIC Bang chủ
|
Các vấn đề với C30
Khi làm việc với dsPIC, một điều gần như chắc chắn là chúng ta sẽ sử dụng C30. Vì vậy, F mở ra luồng này để các bạn tập trung thảo luận về các vấn đề liên quan đến C30.
Hiện nay, C30 được phát triển ở dạng free, và gần như không còn có một trình dịch nào có thể so sánh được với C30, ở bình diện chung. HTdsPIC chỉ có thể được phát triển bởi một nhóm kỹ thuật viên của HiTech, nhưng C30 sẽ được sự phát triển của cả một cộng đồng và các chuyên gia. Đồng thời, HTdsPIC là một phần mềm có giá khá cao, trong khi đó C30 thì miễn phí (một phần). Chính vì vậy, picvietnam sẽ hỗ trợ phát triển C30. Luồng này được mở ra để các bạn thảo luận tất cả các vấn đề liên quan đến C30. Dưới đây là một file mẫu chuẩn picvietnam đang định đề nghị khi làm việc với C30. F sẽ làm việc cụ thể hơn với anh Nam về form chuẩn này và rất mong các bạn thảo luận về việc xây dựng form mẫu chuẩn cho C30 của picvietnam. Chúc vui Tài liệu tham khảo: [1] C30 Compiler User's Guide [2] Brian W. Kernighan and Dennis M. Ritchie, "The C Programming Language 2nd edition", Prentice Hall
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? thay đổi nội dung bởi: falleaf, 08-11-2007 lúc 05:13 PM. |
21-01-2008, 08:52 PM | #2 |
Nhập môn đệ tử
Tham gia ngày: Jun 2007
Bài gửi: 6
: |
Xin cảm ơn bác Falleaf. Em mới học về Pic và mong tìm hiểu một trình dịch C hoàn chỉnh cho Pic. Qua thông tin mà bác cho biết ở trên thì C30 quả thật là rất bổ ích. Tuy nhiên, em vẫn chưa hiểu là hiện có cả C18 và C30, Sự khác biệt của nó là gì. Em thường làm với chíp AVR tuy nhiên với các dự án đòi hỏi phải có chíp mạnh với yêu cầu về xử lý 16 bít hay 32 bít cũng như việc đảm bảo chất lượng thì dùng Pic vẫn đảm bảo hơn. Vì thế mong bác chỉ bảo thêm.
Em rất cảm ơn. |
21-01-2008, 09:04 PM | #3 | |
Trưởng lão PIC bang
|
Trích:
Cũng thông tin thêm cho bạn là Microchip hiện đã có dòng vi điều khiển/xử lý số 32-bit là PIC32, với trình dịch C32 (cũng được họ cung cấp miễn phí phiên bản Student Edition). Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
21-01-2008, 10:27 PM | #4 |
Nhập môn đệ tử
Tham gia ngày: Jun 2007
Bài gửi: 6
: |
Chân thành cảm ơn bac Namqn. Em vừa vào trang microchip.com và có tìm hiểu được một số vấn đề về PIC với các trình dịch. Về bản Studen mới nhất của C18 là v3.15 hay V3.10 và C30 là bản 3.02. Tuy nhiên em tìm crack trên google chỉ kiếm được đến C18 V3.0 mà thôi. Trong khi em thì lại không có bản C18 3.0. Bác có bản crack hay bản full của C18 và c30 với version gần đây không? Làm ơn gửi cho em được chứ ah. Version khoảng từ 2.0 trở lại đây chẳng hạn.
Em xin cảm ơn bác! |
21-01-2008, 11:23 PM | #5 | |
Trưởng lão PIC bang
|
Trích:
Trang web của Microchip trước đây có phần lưu trữ đầy đủ các phiên bản trước của các trình biên dịch, hiện nay thì nó chỉ còn lưu trữ một vài phiên bản được Microchip đánh giá là đáng được lưu trữ. Bạn xem link dưới đây: http://www.microchip.com/stellent/id...cName=en023073 Tôi có lưu trữ khá nhiều phiên bản của các trình dịch C18 và C30, tuy nhiên không có sẵn ở trong máy. Tôi sẽ tìm thử và upload lên một host free nào đó, và thông báo cho bạn sau. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
19-02-2008, 09:40 AM | #6 |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
em muốn lập trình thử về Dispic nhưng chưa load được c30. bác nào có link thì cho em xin với. em đang cần gấp
|
19-02-2008, 07:46 PM | #7 | |
Trưởng lão PIC bang
|
Trích:
http://www.microchip.com/stellent/id...cName=en010065 Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
28-03-2008, 10:35 PM | #8 |
Đệ tử 1 túi
Tham gia ngày: Dec 2007
Bài gửi: 16
: |
Em muốn sử dụng thư viện xlcd của C30 để giao tiếp với LCD. Đối với các thư viện khác, chẳng hạn thư viện như thư viện Timer, em thấy rằng chỉ cần include vào project của mình 2 file là file (timer.h) và file (libp30f4011-coff.a)( em dùng 30f4011) là có thể gọi được các hàm khởi tạo và điều khiển Timer rồi. Nhưng khi em làm tương tự với thư viện xlcd thì sau khi đã include file xlcd.h( #include <xlcd.h>) và add vào project thư viện (libp30f4011-coff.s) thì vẫn không thể sử dụng được các hàm trong thư viện xlcd( ví dụ: BusyXLCD()). Mong được mọi người giải thích cho cách sử dụng thư viện xlcd. Em cảm ơn.
|
28-03-2008, 11:28 PM | #9 | |
Trưởng lão PIC bang
|
Trích:
Bạn dùng dsPIC30F4011, còn thư viện XLCD thì mặc định sử dụng đến 11 bit của port D, vậy bạn đã chỉnh sửa lại xlcd.h cho phù hợp với phần cứng của bạn chưa? Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
29-03-2008, 10:55 AM | #10 |
Đệ tử 1 túi
Tham gia ngày: Dec 2007
Bài gửi: 16
: |
Em không biên dịch được.
Em đã cop file xlcd.h vào thư mục chứa project của mình và chỉnh sửa nội dụng file này như sau: -Bỏ cặp chỉ lệnh: #if defined(_RD10) ..#endif. Vì 30f4011 không có chân RD10 -Bỏ cặp chỉ lệnh: #if defined(_RD8) && defined(_RD9) && defined(_RD10)... #endif -Thiết lập lại các chân RS,RW,EN, DB0,..DB7 cho phù hợp với mạch của em. Sau đó trong chương trình em đã include file xlcd.h đã chỉnh sửa: Code:
#include "xlcd.h" Nhưng dù em gọi bất kỳ một hàm nào trong thư viện xlcd.h thì đều bị lỗi là undefined reference to `BusyXLCD' (Đây là em lấy ví dụ với việc gọi hàm BusyXLCD()). Mong được mọi người giúp đỡ. Em xin cảm ơn. |
29-03-2008, 08:24 PM | #11 | |
Trưởng lão PIC bang
|
Trích:
http://forum.microchip.com/tm.aspx?m...ibrary񎎨 Tôi đã thử dùng thư viện này, nhưng gặp rắc rối ở phần linking (tôi đã giải quyết được lỗi undefined reference to ...). Tuy nhiên, sau khi đọc hai post trên của Calum, tôi cho rằng không cần phải tìm hiểu thêm. Bạn tham khảo tutorial 3 về dsPIC của tôi, tôi đã viết phần lớn các hàm để điều khiển LCD ký tự (đã có code cho C30). Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
29-08-2012, 12:06 AM | #12 | |
Nhập môn đệ tử
Tham gia ngày: Apr 2009
Bài gửi: 9
: |
Trích:
hiện tại em có làm một ứng dụng sử dụng hàm _Q15cosPI(_Q15) trong thư viện libq.h. Tuy nhiên khi gọi hàm này, trình biên dịch cũng báo lỗi undefined reference to _Q15cosPI(_Q15). Không bít lỗi này là do nguyên nhân gì và khi gặp lỗi này thì cách sửa như thế nào bác nhỉ? Mong bác và các cao thủ chỉ giáo! |
|
29-03-2008, 11:06 AM | #13 |
Đệ tử 1 túi
Tham gia ngày: Dec 2007
Bài gửi: 16
: |
Ngoài ra em thấy rằng phần đầu của file xlcd.h có chú thích về loại lcd được hỗ trợ là P-tec:
Code:
/********************************************************************/ /* Header for XLCD module library functions for */ /* P-tec PCOG1602B LCD controller */ /********************************************************************/ |
29-03-2008, 11:22 PM | #14 |
Đệ tử 1 túi
Tham gia ngày: Dec 2007
Bài gửi: 16
: |
Em đã sử dụng được thư viện xlcd để giao tiếp với lcd SD-DM1602A. Thư viện xlcd được viết ra chỉ hỗ trợ cho một số loại chip sau đây( theo tài liệu dsPIC language tools library):
Code:
• dsPIC30F5011 • dsPIC30F5013 • dsPIC30F6010 • dsPIC30F6011 • dsPIC30F6012 • dsPIC30F6013 • dsPIC30F6014 - Copy file xlcd.h( trong thư mục "Microchip\MPLAB C30\src\peripheral_30F_24H_33F\include") vào thư mục của project. Chỉnh sửa lại file xlcd.h như sau: +Bỏ cặp chỉ lệnh: #if defined(_RD10) ..#endif. (Vì 30f4011 không có chân RD10) +Bỏ cặp chỉ lệnh: #if defined(_RD8) && defined(_RD9) && defined(_RD10)... #endif +Sửa lại phần mã định nghĩa các chân RS,RW,EN, DB0,..DB7 cho phù hợp với mạch của ta. Trong thử nghiệm của em, em chọn RS-RD0, RW-RD1, EN-RD2, DB0..DB7-RB0..RB7. - Include file xlcd.h vào trong file nguồn: Code:
#include "xlcd.h" - Mở các file .c đã nói ở trên và bỏ đi các chỉ lệnh biên dịch có điều kiện như sau: Code:
#ifdef _RD10 -> bỏ ... ... ... #else ->bỏ #warning "Does not build on this target" ->bỏ #endif ->bỏ Code:
#include <p30f4011.h> #include "xlcd.h" _FOSC(CSW_FSCM_OFF & FRC_PLL4); _FWDT(WDT_OFF); _FBORPOR(PBOR_ON & BORV_27 & PWRT_16 & MCLR_DIS); _FGS(CODE_PROT_OFF); int main() { OpenXLCD(EIGHT_BIT & TWO_LINE & SEG1_50_SEG51_100 & COM1_COM16); //Khoi tao lcd PutsXLCD("Hello world"); //Hien thi mot xau tren dong thu nhat SetDDRamAddr(0x40); //Dua con tro ve dau dong thu hai PutsXLCD("30f4011-LCD"); //Hien thi mot xau tren dong thu hai while(1); return 0; } thay đổi nội dung bởi: footballer, 29-03-2008 lúc 11:45 PM. |
13-11-2008, 10:10 AM | #15 |
Đệ tử 3 túi
Tham gia ngày: Apr 2006
Bài gửi: 54
: |
Cho mình hỏi
Code:
/* defines for segment data transfer direction */ #define SEG1_50_SEG51_100 0x39 /* SEG1->SEG50 ,SEG51->SEG100 */ #define SEG1_50_SEG100_51 0x3d /* SEG1->SEG50 ,SEG100->SEG51 */ #define SEG100_51_SEG50_1 0x3b /* SEG100->SEG51,SEG50->SEG1 */ #define SEG100_51_SEG1_50 0x3f /* SEG100->SEG51,SEG1->SEG50 */ /* defines for COM data transfer direction */ #define COM1_COM16 0x3e /* Data transfer direction is COM1 to COM16 */ #define COM16_COM1 0x3f /* Data transfer direction is COM16 to COM1 */ Mình sửa file xlcd.h để giao tiếp 4 bit với LCD như này Code:
/********************************************************************/ /* Header for XLCD module library functions for */ /* P-tec PCOG1602B LCD controller */ /********************************************************************/ #if defined(__dsPIC30F__) #include <p30fxxxx.h> #elif defined(__dsPIC33F__) #include <p33Fxxxx.h> #elif defined(__PIC24H__) #include <p24Hxxxx.h> #endif #ifndef _XLCD_H #define _XLCD_H /* Comment out the following line if 4-bit interface is being used */ #define EIGHT_BIT_INTERFACE /* #defines of the data pins and the corresponding tris pins */ /* The READ_PIN_X #defines must match the corresponding DATA_PIN_X defines */ #define DATA_PIN_7 LATDbits.LATD3 #define DATA_PIN_6 LATDbits.LATD1 #define DATA_PIN_5 LATEbits.LATE8 #define DATA_PIN_4 LATCbits.LATC14 #define READ_PIN_7 PORTDbits.RD3 #define READ_PIN_6 PORTDbits.RD1 #define READ_PIN_5 PORTEbits.RE8 #define READ_PIN_4 PORTCbits.RC14 #define TRIS_DATA_PIN_7 TRISDbits.TRISD3 #define TRIS_DATA_PIN_6 TRISDbits.TRISD1 #define TRIS_DATA_PIN_5 TRISEbits.TRISE8 #define TRIS_DATA_PIN_4 TRISCbits.TRISC14 /* #defines of the control pins and the corresponding tris pins for 30F */ #define E_PIN LATCbits.LATC13 /* PORT for E */ #define RW_PIN LATBbits.LATB8 /* PORT for RW */ #define RS_PIN LATBbits.LATB7 /* PORT for RS */ #define TRIS_E TRISCbits.TRISC13 /* TRIS for E */ #define TRIS_RW TRISBbits.TRISB8 /* TRIS for RW */ #define TRIS_RS TRISBbits.TRISB7 /* TRIS for RS */ #ifdef EIGHT_BIT_INTERFACE #define DATA_PIN_3 LATDbits.LATD3 #define DATA_PIN_2 LATDbits.LATD2 #define DATA_PIN_1 LATDbits.LATD1 #define DATA_PIN_0 LATDbits.LATD0 #define READ_PIN_3 PORTDbits.RD3 #define READ_PIN_2 PORTDbits.RD2 #define READ_PIN_1 PORTDbits.RD1 #define READ_PIN_0 PORTDbits.RD0 #endif #ifdef EIGHT_BIT_INTERFACE #define TRIS_DATA_PIN_3 TRISDbits.TRISD3 #define TRIS_DATA_PIN_2 TRISDbits.TRISD2 #define TRIS_DATA_PIN_1 TRISDbits.TRISD1 #define TRIS_DATA_PIN_0 TRISDbits.TRISD0 #endif /* Display ON/OFF Control defines */ các phần sau thì giống file gốc Code:
#include <p30f4011.h> #include "xlcd.h" _FOSC(CSW_FSCM_OFF & FRC_PLL4); _FWDT(WDT_OFF); _FBORPOR(PBOR_ON & BORV_27 & PWRT_16 & MCLR_DIS); _FGS(CODE_PROT_OFF); void main() { OpenXLCD(FOUR_BIT & TWO_LINE & SEG1_50_SEG51_100 & COM1_COM16); //Khoi tao lcd PutsXLCD("Hello world"); //Hien thi mot xau tren dong thu nhat SetDDRamAddr(0x40); //Dua con tro ve dau dong thu hai PutsXLCD("30f4011-LCD"); //Hien thi mot xau tren dong thu hai while(1); return 0; } Code:
Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\lcd.o" is out of date. Executing: "C:\Program Files\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=30F4011 -x c -c "lcd.c" -o"lcd.o" -g -Wall pic30-coff-cc1.exe: warning: Resource version (3.01) does not match compiler! lcd.c:10: warning: return type of `main' is not `int' lcd.c: In function `main': lcd.c:12: warning: implicit declaration of function `PutsXLCD' lcd.c:18: warning: `return' with a value, in function returning void lcd.c:19:2: warning: no newline at end of file Resource version (3.01) does not match! Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\delay.o" is up to date. Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\OpenXLCD.o" is up to date. Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\PutsXLCD.o" is up to date. Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\ReadAddrXLCD.o" is up to date. Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\ReadDataXLCD.o" is up to date. Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\setCGRamAddr.o" is up to date. Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\setDDRamAddr.o" is up to date. Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\WriteCmdXLCD.o" is up to date. Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\WriteDataXLCD.o" is up to date. Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\BusyXLCD.o" is up to date. Make: The target "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\LCD 4 bit.cof" is out of date. Executing: "C:\Program Files\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=30F4011 "lcd.o" "delay.o" "OpenXLCD.o" "PutsXLCD.o" "ReadAddrXLCD.o" "ReadDataXLCD.o" "setCGRamAddr.o" "setDDRamAddr.o" "WriteCmdXLCD.o" "WriteDataXLCD.o" "BusyXLCD.o" -o"LCD 4 bit.cof" -Wl,-L"C:\Program Files\Microchip\MPLAB C30\lib",--script="C:\Program Files\Microchip\MPLAB C30\support\gld\p30f4011.gld",-Map="LCD 4 bit.map",--report-mem Resource version (3.01) does not match! Executing: "C:\Program Files\Microchip\MPLAB C30\bin\pic30-bin2hex.exe" "C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\LCD 4 bit.cof" Resource version (3.01) does not match! Loaded C:\Documents and Settings\NGUYEN THE TUNG\Desktop\C30\LCD\LCD 4 bit.cof. BUILD SUCCEEDED: Thu Nov 13 11:50:45 2008 thay đổi nội dung bởi: tungtuantu, 13-11-2008 lúc 12:04 PM. |
|
|