|
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 |
|
02-04-2008, 08:18 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Feb 2008
Bài gửi: 3
: |
Trong ví dụ 2-4.c - Tutorial 2 của anh Nam đó có dòng khai báo bảng hằng số trong ROM là
const unsigned __attribute__ ((space(psv), address (0x0200))) LED_PAT[10] = {0xFFFE, 0xFFFD, 0xFFFB, 0xFFF7, 0xFFEF, 0xFFDF, 0xFFEF, 0xFFF7, 0xFFFB, 0xFFFD}; anh cho em hỏi là mình muốn khai báo bảng sin gồm 2000 phần tử float (tức cần khoảng 8Kbyte) thì có được không? cách truy cập nó như thế nào? |
02-04-2008, 09:07 PM | #2 | |
Trưởng lão PIC bang
|
Trích:
PSV là một cửa sổ 32 kB, về nguyên tắc là bạn có thể thực hiện yêu cầu trên. 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 |
|
02-04-2008, 09:54 PM | #3 |
Nhập môn đệ tử
Tham gia ngày: Feb 2008
Bài gửi: 3
: |
Em đã thử khai báo
float __attribute__ ((space(psv), address (0x0200))) Sin[2001]; bởi vì đang cần tính các giá trị sin sau mới đưa vào bảng nhưng khi biên dịch báo lỗi Link Error: Could not allocate section .data_0x200 at 0x200 Link Error: Could not allocate program memory vậy có cách nào khai báo môt mảng như trên tính các giá trị rồi lưu vào ROM k anh? cảm ơn anh thay đổi nội dung bởi: nghean, 03-04-2008 lúc 12:08 AM. |
26-04-2008, 06:18 PM | #4 | |
Trưởng lão PIC bang
|
Trích:
Trong khai báo trên, bạn đã bỏ mất từ khóa const, do đó thông báo lỗi đầu tiên cho thấy trình biên dịch thông báo không thể cấp phát bộ nhớ dữ liệu cho bạn ở địa chỉ 0x200 (vì trình biên dịch hiểu là bạn cần RAM cho 2001 ô nhớ kiểu float, bắt đầu ở địa chỉ 0x200). 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 |
|
26-04-2008, 05:52 PM | #5 |
Đệ tử 2 túi
Tham gia ngày: Jun 2005
Bài gửi: 27
: |
bác nam cho em hỏi ,làm sao để set mức xung là 5Mips or 8Mips khi sử dụng dao động nội ??? em chỉ thấy set mỗi cái FRC_PLL4
|
26-04-2008, 06:28 PM | #6 | |
Trưởng lão PIC bang
|
Trích:
Nếu tần số của FRC là 8 MHz, để có tần số thực thi lệnh là 8 MIPS thì chỉ cần dùng FRC với PLL x4 (chính là cấu hình FRC_PLL4). 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-04-2008, 01:22 AM | #7 | |
Đệ tử 2 túi
Tham gia ngày: Jun 2005
Bài gửi: 27
: |
Em thắc mắc bởi vì trong vd 2_1 có dòng :
"Hai dòng lệnh 26 và 27 đặt ngưỡng tràn tương ứng với 0,5 giây ở tần số thực thi lệnh là 5 MHz (tức là chip có clock bằng 20 MHz)." rồi xuống cuối ví dụ a có dòng : "điều chỉnh ngưỡng tràn để LED sẽ nhấp nháy đúng 1 Hz (với mã hiện tại thì LED sẽ nhấp nháy ở 1,6 Hz, vì tần số thực thi lệnh của chip sẽ là 8 MHz với bộ dao động nội 8 MHz và PLLx4 được kích hoạt) " Sau khi đọc câu trả lời của a thì em đã hiểu ý nghĩa của dòng cuối này ,chứ trước đó em ko hiểu tại sao cùng set PLL4 mà sao trên thì 5MHz ,dưới thì 8 Mhz .Nhưng em đọc trong cái dsPIC Manual thì thấy FRC là 7,37 Mhz ,vậy PLLx4 = 29.48Mhz ,PLLx8 = 58.96 Mhz ,PLLx16 = 117.92 Mhz ,vậy đâu dùng 8Mhz được ,và giá trị nhỏ nhất của bộ dao động nội là 29.48Mhz ??? mà sao người ta để lẻ thế nhỉ ??? Ah ,anh giải thích thêm dùm em về cách khai báo biến : ở vd 2-3 : _ .bss cho đoạn chứa các dữ liệu không khởi tạo giá trị (.data cho đoạn chứa các dữ liệu khởi tạo giá trị <<< là hằng số ??? ) _ .align 2 << ??? _ count: .space 2 << khai bao biến count 16bit ở vd 2-4 : _ .section Table,psv, address(0x0200) <<< khai báo bảng Table có địa chỉ 0x0200 ,vậy psv ở đây nghĩa là jì ???Trong cái tag Output em chẳng thấy cái psv này đâu cả : Trích:
vậy dòng : _ mov #psvpage(Table),W0 <<< xác định địa chỉ trang chứa Table vào W0 ??? _ mov W0, PSVPAG <<< ghi cái địa chỉ này vào thanh ghi PSVPAG _ mov #psvoffset(Table),W1 <<< ghi vị trí các số hạng vào W1 ??? _ mov W1, W2 <<< lấy vị trí đầu bảng ,em coi watch thì thấy vị trí này là 0x8200 ??? _ add W1,#(1082), W3 <<< lấy vị trí cuối bảng ,10*2 = 10 giá trị 2byte ??? em koi watch thì vị trí này là 0x8214 ???? 10 giá trị mà sao lại 0x8214 ?? _ #psvpage với #psvoffset em kiếm trong datasheet với cái 70157C mà ko thấy nói .Cái này do định nghĩa sẵn trong chip ah ??? Típ nữa ^_^ : dòng: _ mov [W1++], W0 <<< [] là lấy giá trị thứ W1 ,ghi vào W0 sau đó tăng giá trị W1 ??? ,em koi watch thì sau dòng lệnh này W1 từ 0x8200 -> 0x8202 (tăng 2 giá trị) ,W0 thì gán giá trị đầu tiên của Table .Sau đó W1 từ 0x8202 ->0x8204 (tăng 2 giá trị) ,W0 thì đc gán giá trị thứ 2 ,vậy ++ ở đây là tăng 2 giá trị àh ??? em mới học nên hem bit nhìu @_@ ,a giúp em hen ^_^ ,thanks a thay đổi nội dung bởi: chukhivuitinh, 28-04-2008 lúc 01:59 AM. |
|
28-04-2008, 02:43 AM | #8 |
Trưởng lão PIC bang
|
Về việc tại sao tần số là 8 MHz mà không phải là 7.37 MHz như trong tài liệu, bạn đọc post #15 ở luồng sau:
http://www.picvietnam.com/forum//showthread.php?t=553 Về .bss, .align, .space, và .section, đề nghị bạn đọc tài liệu hướng dẫn của ASM30, link download dưới đây, nếu bạn chưa biết (tôi không muốn và cũng không thể giải thích tất cả những gì đã có trong tài liệu hướng dẫn): http://ww1.microchip.com/downloads/e...Doc/51317G.pdf Về các lệnh hợp ngữ của dsPIC, bạn đọc tài liệu tham khảo của dsPIC30F, link download dưới đây, nếu bạn chưa biết: http://ww1.microchip.com/downloads/e...Doc/70046E.pdf Bạn xem hình 4-7 của tài liệu trên để thấy được không gian PSV được ánh xạ vào vùng địa chỉ bắt đầu từ 0x8000, do đó bảng được khai báo ở 0x0200 sẽ có địa chỉ 0x8200 khi thực thi code. Các toán tử psvpage() và psvoffset() do ASM30 cung cấp, đã được đề cập đến trong tutorial. 0x14 = 20 W1++ để chỉ đến ô dữ liệu kế tiếp, toán hạng đang dùng là word, địa chỉ được sử dụng là địa chỉ byte, do đó sẽ tăng 2 để chỉ đến word kế tiếp. 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 |
11-06-2008, 04:30 PM | #9 |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 146
: |
giả lập dsPIC
em mới có mấy con dsPIC nhưng chân bé quá, hàn ko nổi
cũng muốn học dùng MPLab và dsPIC nhưng ko có mạch có chương trình nào có giả lập mấy con dsPIC ko anh Nam nhỉ?
__________________
mạch nạp - kit phát triển - linh kiện điện tử www.PNLabvn.com |
11-06-2008, 07:05 PM | #10 | |
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 |
|
04-03-2009, 05:21 PM | #11 |
Đệ tử 4 túi
Tham gia ngày: Jan 2008
Bài gửi: 68
: |
Thầy Nam cho em hỏi: em lấy code (vidu2_1) và thay bởi 30F2010 (vì em đang dung con này) ở hàng :
" .equ __30F2010, 1 " Thì khi biên dịch mplap báo lối là: " Error: undefined symbol `FRC_PLL4' in operation " Còn khi em thay hàng: " config __FOSC, CSW_FSCM_OFF & FRC_PLL4 " bởi hàng : " config __FOSC, CSW_FSCM_OFF & XT_PLL16 " thì lại biên dịch được. Nên em nghĩ con 2010 nó không có chế độ dao đông nội !!! phải không thầy ? Nếu nối vào 2 chân OSC1 với OSC2 bởi thạch anh 10 Mhz thì mình có được thiết lập chế độ dao động nội không hả thầy ? ý em là đối với dsPIC thì phần cứng phụ thuộc vào phần mềm hay ngược lại ? cảm ơn thầy ! chúc vui ! |
14-10-2013, 10:49 PM | #12 |
Nhập môn đệ tử
Tham gia ngày: Oct 2013
Bài gửi: 1
: |
em muốn mô phỏng dòng dspic30f nhưng trên protus mà không có.em có biết đến MPLAB Sim nhưng nó không có các thành phần như điện trở hay là tụ điện...ý em là muốn mô phỏng 1 mạch hoàn chỉnh...bác có cách nào giúp em được không?
|
17-10-2013, 10:55 PM | #13 |
Nhập môn đệ tử
Tham gia ngày: Oct 2013
Bài gửi: 4
: |
Init_PORTS:
clr LATB clr LATD ;Xoa thanh ghi chot cho cong D mov #0xFFFD, W0 ;LED noi vao cong D, chan RD0 mov W0, TRISD return anh nam oi . tai sao trong vi du 2.1 em thay doi ngo ra la RD1 mà khi em thuc hien lai không nhấp nháy được như ngõ ra RD0 và em hay port xuat cung ko duoc . vd em thay la rb0 chi sang chu ko nhap nhay . CODE EM THAY DOI GIONG O TREN . CAM ON ANH |
17-10-2013, 11:09 PM | #14 |
Nhập môn đệ tử
Tham gia ngày: Oct 2013
Bài gửi: 4
: |
E thay đổi ngõ ra la RD1 nhưng ko nhấp nhdduwwocwj. khi chuyển sang portb cung được. anh nam co thể em giup em dk ko. code em thay đổi .
Init_PORTS: clr LATD ;Xoa thanh ghi chot cho cong D mov #0xFFFD, W0 ;LED noi vao cong D, chan RD1 mov W0, TRISD return Cảm ơn anh. |
Tags |
assembly language, led, stack |
|
|
Similar Threads | ||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
Học CCS thông qua Tutorial PICVIETNAM | FFGmember | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 105 | 08-09-2017 04:12 PM |
dsPIC Tutorial 3-Đọc ngõ vào và giao tiếp LCD | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 92 | 19-02-2017 11:15 PM |
dsPIC Tutorial 5-Module ADC và MCPWM | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 83 | 12-09-2013 10:33 PM |
dsPIC Tutorial 1-Tạo và biên dịch một project (ASM30) | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 16 | 22-08-2012 12:35 AM |
dsPIC Tutorial 4-Module UART và I2C | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 76 | 09-05-2012 10:55 AM |