![]() |
|
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 |
|
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Jun 2008
Bài gửi: 9
: |
Giải thích code cho dsPIC
Cảm ơn anh Nam, em làm động cơ chạy rồi, gửi được tốc độ lên máy tính, bây giờ em đang cần gửi tốc độ từ máy tính xuống và động cơ sẽ quay đúng số vòng như vậy? có gì em se hỏi anh tiếp.
|
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Jun 2008
Bài gửi: 9
: |
giải thích code cho dsPIC
Đây là đoạn code để PIC nhận dữ liệu từ máy tính (từ VB truyền xuống)
Code:
float Kps=0; float Kis=0; float Kds=0; unsigned char InData[] void getvalue() { char hs_vel[4]; // vận tốc là số có 4 chữ số int len_vel; char hs_kp[8]; // hệ số Kp là số có 8 chữ số int len_kp; char hs_ki[8]; // 8 chữ số int len_ki; char hs_kd[8]; // 8 chữ số int len_kd; unsigned char InData[28]; // tổng cộng chuỗi có 28 chữ số int i; for (i=0;i<28;i++) InData[i]=getc(); for (len_vel=0;len_vel<4;len_vel++) { hs_vel[len_vel]=InData[len_vel]; //putc(hs_vel[len_vel]); } for (len_kp=0;len_kp<8;len_kp++) { hs_kp[len_kp]=InData[len_kp+4]; //putc(hs_kp[len_kp]); } for (len_ki=0;len_ki<8;len_ki++) { hs_ki[len_ki]=InData[len_ki+12]; //putc(hs_ki[len_ki]); } for (len_kd=0;len_kd<8;len_kd++) { hs_kd[len_kd]=InData[len_kd+20]; //putc(hs_kd[len_kd]); } DesiredSpeed = atol(hs_vel); //vận tốc yêu cầu Kps = atof(hs_kp); Kis = atof(hs_ki); Kds = atof(hs_kd); } Nhưng khi biên dịch chương trình bị lỗi sau: c:\program files\microchip\mplab c30\bin\bin\pic30-coff-ld.exe Error: A heap is required, but has not been specified ClosedLoopSenBLDC.o(.text+0xbe): In function `main': C:\Documents and Settings\NVTRI_HCMUT\Desktop\ClosedLoop\ClosedLoop SenBLDC.c:131: undefined reference to `getvaule' Link step failed. // lỗi link step này là gi vậy BUILD FAILED: Sat Jan 03 12:48:58 2009 Mong anh Nam và mọi người giúp đỡ. thay đổi nội dung bởi: namqn, 03-01-2009 lúc 01:14 AM. |
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Jun 2008
Bài gửi: 9
: |
Giải thích code cho dsPIC
Trong đó module U2ART được khởi tạo như sau:
Code:
void InitUART(void) { U2MODE = 0x8000; U2STA = 0x0000; U2BRG = ((FCY/16)/BAUD) - 1; // set baud to 19200 IEC1bits.U2RXIE = 1; // enable RX interrupt RXPtr = &InData[0]; // con trỏ chỉ đến kí tự đầu tiên trong bộ đệm nhận Flags.CheckRX = 0; // Xóa cờ rx and tx Flags.SendTX = 0; U2STAbits.UTXEN = 1; // Initiate transmission } void _ISR _U2TXInterrupt(void) { IFS1bits.U2TXIF = 0; // xóa cờ ngắt } void _ISR _U2RXInterrupt(void) { IFS1bits.U2RXIF = 0; //xóa cờ ngắt *RXPtr = U2RXREG; if (*RXPtr == CR) {Flags.CheckRX = 1;RXPtr = &InData[0];} else *RXPtr++; } thay đổi nội dung bởi: namqn, 03-01-2009 lúc 01:12 AM. |
![]() |
![]() |
![]() |
#5 | |
Nhập môn đệ tử
Tham gia ngày: Oct 2012
Bài gửi: 6
: |
Trích:
|
|
![]() |
![]() |
![]() |
#6 | |
Trưởng lão PIC bang
|
Trích:
Theo tôi, trong main() bạn có gọi đến một hàm tên là getvaule(), vốn là một lỗi đánh máy (vì bạn chỉ định nghĩa hàm getvalue()), cho nên mới nhận được thông báo lỗi về tham chiếu chưa được định nghĩ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 |
|
![]() |
![]() |
![]() |
|
|