PDA

View Full Version : dsPIC-Các vấn đề về phần cứng


namqn
23-04-2006, 06:53 PM
Bên cạnh việc mở luồng cho các thắc mắc về ASM30, và C30, tôi mở luồng này để các bạn có thể trao đổi các vấn đề về phần cứng của dsPIC. Tôi dự đoán là sẽ nảy sinh nhiều vấn đề về phần cứng, nhưng trước mắt chúng ta chỉ dùng luồng này để trao đổi, khi nào các vấn đề cho một module phần cứng nào đó phát triển khá nhiều thì tôi sẽ tách luồng cho module đó.
Nào các bạn, cùng nhau mổ xẻ dsPIC thôi!

Thân,

Grp
24-04-2006, 11:13 AM
Em có ý kiến đầu tiên, em dùng ADC của 4013, các thông số lối vào cho AN0 đảm bảo: điện trở Rs<<2,5kom (đệm bằng opamp), tốc độ lấy mẫu nhanh chậm test đủ cả, vậy mà khi hiển thị ra số vẫn nhảy tùm lum trong khi đo tín hiệu lối vào thì vẫn đứng im phăng phắc. Copy chương trình mẫu và sửa lại cho phù hợp với mach nó vẫn thế, hổng hiểu tại sao. Em viết bằng C30, liệu có phải do phần cứng không bác?
Cấu trúc ADC cho PIC của Microchip có phải không được xịn cho lắm?

minhpic
24-04-2006, 04:17 PM
Bác namqn có thể post một project nào đó về DSPIC không, chẳng hạn về nội dung điều khiển động cơ đi.

namqn
24-04-2006, 07:27 PM
Em có ý kiến đầu tiên, em dùng ADC của 4013, các thông số lối vào cho AN0 đảm bảo: điện trở Rs<<2,5kom (đệm bằng opamp), tốc độ lấy mẫu nhanh chậm test đủ cả, vậy mà khi hiển thị ra số vẫn nhảy tùm lum trong khi đo tín hiệu lối vào thì vẫn đứng im phăng phắc. Copy chương trình mẫu và sửa lại cho phù hợp với mach nó vẫn thế, hổng hiểu tại sao. Em viết bằng C30, liệu có phải do phần cứng không bác?
Cấu trúc ADC cho PIC của Microchip có phải không được xịn cho lắm?
Tôi cho là module ADC của 4013 không có vấn đề, vì nhiều người đã sử dụng loại này nhưng không có thông tin về lỗi của module này trong các bản Errata dành cho chip này. Bạn có được tín hiệu lối vào tốt, nhưng kết quả hiển thị sai, điều đó không có nghĩa là ADC bị lỗi, vẫn có khả năng chúng ta hiển thị sai.

Bạn có thể post phần code mà bạn cho là gây lỗi lên không?

C30 vẫn đang trong giai đoạn hoàn thiện, nó được port từ gcc sang cho dsPIC, do đó chúng ta vẫn phải để ngỏ khả năng C30 có vấn đề.

Theo tôi, kiến trúc ADC của Microchip là khá tốt, được phát triển và kiểm nghiệm từ dòng PIC cơ bản cho đến dsPIC. Chặng đường này tôi cho là đủ dài để có thể tin tưởng vào kiến trúc đã được thiết kế.

Thân,

BinhAnh
24-04-2006, 08:53 PM
Việc dùng ADC tới 12 bit thì cần một số chú ý sau, nếu không các digit cuối cùng sẽ bị nhảy.
-Thiết kế Vref ổn định. Nên chọn các loại Vref lownoise và độ trôi nhiệt thấp.
-Cần cách đi dây của chân AGND và AVdd đúng. Nên tách GND và AGND riêng và nối về một điểm.
-Các mạch yêu cầu độ ổn định cao, người ta phải dùng thêm kỹ thuật tự chuyển hóa bằng các điểm chuyển mạch ổn định, tính lại các thông số như: độ trôi điểm không, chuẩn hóa hệ số góc qua các điểm chuyển mạch.
-Ngoài ra, bạn có thể dùng một số giải thuật loại nhiễu, nó càng hiệu quả nếu như biết trước tần số nhiễu(ví dụ nhiễu 50hz), ngoài ra bạn có thể tận dùng tính năng dsp tạo các mạch lọc số. Có khá nhiều ví dụ dễ hiểu về mạch lọc trong các appnote của microchip
Riêng cá nhân tôi thì dùng ADC của microchip rất ổn định

Grp
25-04-2006, 03:57 PM
Híc híc, giờ tôi mới phát hiện ra:
- Đo tín hiệu bằng digital multimeter, tốc độ im phắc chẳng qua là tốc độ biến đổi của nó chậm thời gian tích phân lớn => chẳng thấy gì là phải.
- Khi dùng oscilloscope, thấy ngay nhiễu đến chục mV, dùng bộ chuyển đổi ADC12bit tốc độ nhanh khác cũng y chang.
Tạm kết luận: Mạch chẳng có gì sai => bài học là chủ quan với nhiễu.

Không biết kết luận như vậy có vội vàng quá không các bác?

namqn
25-04-2006, 07:13 PM
Bác namqn có thể post một project nào đó về DSPIC không, chẳng hạn về nội dung điều khiển động cơ đi.
Nếu bạn muốn tìm hiểu dsPIC thông qua một project nào đó thì bạn có thể dùng hơn 10 ví dụ đã được Microchip đưa lên. Bản thân tôi chỉ mới bắt đầu dùng dsPIC cho một project thực sự, nhưng nó là đề tài cho luận án của tôi, nên chưa thể công bố được. Tôi nghĩ chúng ta nên tìm hiểu các module thông qua các ví dụ đơn giản, để có được các viên gạch, sau đó bạn có thể xây ngôi nhà (project) của riêng bạn bằng những viên gạch đó.
dsPIC còn tương đối mới (chưa quá 2 năm tuổi), nên vẫn chưa có nhiều những project mẫu cho chúng ta tham khảo. Mặt khác, vì phải chạy đua với thời gian, nên các thiết kế phần cứng của dsPIC cũng chưa hoàn chỉnh. Chúng ta chọn cách tiếp cận từng bước thì có lẽ thích hợp hơn.

Thân,

pham_v_quang3i
16-08-2006, 09:37 AM
Anh Nam cho em hỏi !
- Em dùng 5013 có một số vấn đề xảy ra như sau :
+ Nếu em dùng mạch RC của PIC thì ko vấn đề.
+ Thạch anh ngoài em dùng 8Mz,Nếu em chọn config bit như sau :
Oscillator source : Primary
Primary oscillator mode : FRC/w PLL 8 x ( hoặc 4 x) chạy ko vấn đề
Nhưng nếu em thay đổi :
Primary oscillator mode : FRC/w PLL 16 x thì ko chạy.
Còn nếu :
Primary oscillator mode : XT ( XT PLL x 4,8 hoặc 16 cũng ko chạy )
Thạch anh em đặt ko xa mạch, Em nghĩ nếu config bit hay bằng lệnh thì cũng như nhau.

pham_v_quang3i
16-08-2006, 09:48 AM
Trang 7-9 của " dsPIC30F Family Reference Manual " có bảng mô tả các phương thức hoạt động của " Primary Oscillator " các thành phần như sau :
- XT là sử dụng dao động của đúng thạch anh
- EC là sử dụng một nguồn clock ngoài
- .............
Em chưa hiểu rõ lắm anh có thể giải kĩ cụ thể cho em từng phần một được không .

pham_v_quang3i
16-08-2006, 09:57 AM
Với nhận tiện đây mong bác nói một cách cụ thể về nguồn dao động của dsPIC,các lỗi hay gặp , độ ổn định của mạch dao động nội tại , nếu dùng thạch anh ngoài thì trị số thạch anh như thế nào là hợp lý.
cám ơn bác !

namqn: Tôi chuyển các post sang luồng này cho hợp vị trí hơn

namqn
16-08-2006, 07:36 PM
Anh Nam cho em hỏi !
- Em dùng 5013 có một số vấn đề xảy ra như sau :
+ Nếu em dùng mạch RC của PIC thì ko vấn đề.
+ Thạch anh ngoài em dùng 8Mz,Nếu em chọn config bit như sau :
Oscillator source : Primary
Primary oscillator mode : FRC/w PLL 8 x ( hoặc 4 x) chạy ko vấn đề
Nhưng nếu em thay đổi :
Primary oscillator mode : FRC/w PLL 16 x thì ko chạy.
Còn nếu :
Primary oscillator mode : XT ( XT PLL x 4,8 hoặc 16 cũng ko chạy )
Thạch anh em đặt ko xa mạch, Em nghĩ nếu config bit hay bằng lệnh thì cũng như nhau.
Có thể trả lời ngay về phần FRC/w PLL 16x cho bạn:

Nếu muốn dùng PLL 16x thì bạn phải chỉnh lại tần số của FRC cho <= 7.5 MHz (nếu bạn để nó bằng danh định là 8 MHz thì Microchip đã tuyên bố là không đảm bảo sẽ chạy). Bạn hãy đọc cái Note tại trang 139 của DS70116E (datasheet của dsPIC30F5011/5013)

Về việc dùng thạch anh ngoài với 5013, một bạn khác cũng đang gặp vấn đề giống như bạn. Tôi vừa nhớ ra một điều, nhưng phải kiểm tra lại rồi mới khẳng định được.

Thân,

namqn
16-08-2006, 08:20 PM
Trang 7-9 của " dsPIC30F Family Reference Manual " có bảng mô tả các phương thức hoạt động của " Primary Oscillator " các thành phần như sau :
- XT là sử dụng dao động của đúng thạch anh
- EC là sử dụng một nguồn clock ngoài
- .............
Em chưa hiểu rõ lắm anh có thể giải kĩ cụ thể cho em từng phần một được không .
Tôi cho là bạn muốn nói đến bảng 7-3 của dsPIC FRM, tôi trích phần Primary và giải thích như sau:

Mode OSC2
EC CLKO Chân OSC2 có tín hiệu clock out
ECIO I/O Chân OSC2 là I/O
EC w/PLL 4x I/O Chân OSC2 là I/O
EC w/PLL 8x I/O Chân OSC2 là I/O
EC w/PLL 16x I/O (Note 4) Chân OSC2 là I/O, chế độ mặc định
ERC CLKO Chân OSC2 có tín hiệu clock out
ERCIO I/O Chân OSC2 là I/O
XT Thạch anh nối giữa OSC1 và OSC2
XT w/PLL 4x Thạch anh nối giữa OSC1 và OSC2
XT w/PLL 8x Thạch anh nối giữa OSC1 và OSC2
XT w/PLL 16x Thạch anh nối giữa OSC1 và OSC2
XTL Thạch anh nối giữa OSC1 và OSC2
HS Thạch anh nối giữa OSC1 và OSC2
FRC w/PLL 4x I/O Chân OSC2 là I/O
FRC w/PLL 8x I/O Chân OSC2 là I/O
FRC w/PLL 16x I/O Chân OSC2 là I/O

EC: Dùng clock ngoài, đưa vào chân OSC1
ERC: Dùng mạch RC ngoài, điểm giữa R và C nối vào OSC1
XT: Thạch anh (mạch dao động thạch anh) ngoài, 4 - 10 MHz
XTL: Thạch anh (mạch dao động thạch anh) ngoài công suất thấp, 200 kHz - 4 MHz
HS: Thạch anh (mạch dao động thạch anh) ngoài tốc độ cao, 10 - 25 MHz
FRC: Mạch dao động nội tốc độ cao (danh định là 7.37 hay 8 MHz)

Thân,

pham_v_quang3i
17-08-2006, 06:22 PM
Bác xem lại chỗ này giúp em !
Trang 7-5 bảng 7-1 có mô tả . Nguồn giao động của dsPIC có 3 loại Primary, Secondary, internal. Các nguồn này được cấu hình bằng các bit trong FOS và FPR.
Trong config bit của MPLAB có các mục :
- Oscillator source
- Primary oscillator mode : Cái này đề thế này có nghĩa là chỉ sử dụng cho Primary oscillator. Trong mục này em thấy có cả FRC nên em mới tưởng là khi chọn dao động là thạch anh ngoài , chẳng nhẽ lại còn chế độ liên quan gì đến FRC. Nhưng xem lại bảng 7-2 thì trong chế độ Primary oscillator ko có FRC. Vậy do em ko hiểu hay do mấy thằng Microchip đặt hãng nào đó viết phần mềm , mấy thằng viết vừa nhìn gái vừa viết. Hi

namqn
17-08-2006, 06:43 PM
Bác xem lại chỗ này giúp em !
Trang 7-5 bảng 7-1 có mô tả . Nguồn giao động của dsPIC có 3 loại Primary, Secondary, internal. Các nguồn này được cấu hình bằng các bit trong FOS và FPR.
Trong config bit của MPLAB có các mục :
- Oscillator source
- Primary oscillator mode : Cái này đề thế này có nghĩa là chỉ sử dụng cho Primary oscillator. Trong mục này em thấy có cả FRC nên em mới tưởng là khi chọn dao động là thạch anh ngoài , chẳng nhẽ lại còn chế độ liên quan gì đến FRC. Nhưng xem lại bảng 7-2 thì trong chế độ Primary oscillator ko có FRC. Vậy do em ko hiểu hay do mấy thằng Microchip đặt hãng nào đó viết phần mềm , mấy thằng viết vừa nhìn gái vừa viết. Hi
Phần bạn đã nêu thuộc Version 1 của hệ dao động, chỉ được dùng cho các chip dsPIC30F601x (bây giờ đã được thay thế bằng các chip dsPIC30F601xA, dùng Version 3 của hệ dao động).

Còn bảng 7-3 mà tôi đã trích là Version 2 của hệ dao động, dùng cho một số chip mà trong đó có chip 5013 bạn đang dùng. Version 2 có một điểm bổ sung cho Version 1 là đầu ra của FRC có thể nối vào PLL. Do đầu ra của PLL trong Version 1 chỉ nối vào các nguồn clock từ Primary oscillator, nên người ta thường để các option có dùng PLL thuộc vào Primary oscillator source.

Nếu FRC không được nối vào PLL thì nó vẫn chỉ là internal oscillator. Chỗ này hơi rắc rối một chút, nhưng không có vấn đề gì lớn nếu bạn chỉ cần biết cách cấu hình để cho chip chạy đúng tốt.

Xem bảng 7-4 thì bạn thấy là người ta đã đặt tên chính xác hơn cho các nguồn clock, trong Version 3 của hệ dao động.

Thân,

frank
23-08-2006, 05:14 PM
Mình cũng đang vấn đề về việc configbit của dsPIC đây, mình muốn nhờ các bác giải thích dùm:

Mình đang sử dụng dsPIC6010, trong chương trình mình config như thế này:

_FOSC(CSW_FSCM_ON & EC) hoặc _FOSC(CSW_FSCM_ON & EC_PLL4)
_FWDT( WDT_OFF );
_FBORPOR( PBOR_OFF & BORV_45 & MCLR_EN );
_FGS( CODE_PROT_OFF );

Với config như vậy thì PIC vẫn chạy đúng theo chương trình đã viết, mình tưởng là PIC đang sử dụng thạch anh ngoại, nhưng có một lần mình lấy thạch anh ra thì thấy PIC cũng vẫn chạy đúng, hóa ra PIC đang sử dụng nguồn dao động nội, mình cũng đã thử config lại nhiều cách như sau:

_FOSC(CSW_FSCM_ON & XT);
hoặc
_FOSC(CSW_FSCM_ON & HS);
thì kết quả cũng vẫn giống như vậy

và đến khi config như sau:
_FOSC(CSW_FSCM_OFF & EC);

thì PIC hết hoạt động luôn

Nhưng theo những gì viết trong file header của 6010 thi _FOSC(CSW_FSCM_ON & EC) là cho phép external clock, mình dùng thạch anh 4 chân(20MHz), nối vào chân OSC1 của PIC
mong các bác gỡ rối dùm,

namqn
23-08-2006, 06:08 PM
HS hay XT là cho thạch anh ngoài, EC là cho bộ dao động ngoài (nó là một vi mạch tạo ra xung clock). Đối với EC thì bạn chỉ nối ngõ ra của EC vào chân OSC1.

Bạn đã bật CSW, do đó khi bạn dùng thạch anh ngoài với cấu hình EC, bộ dao động sơ cấp không có xung clock, và dsPIC tự chuyển sang bộ dao động nội (cái này có trong tài liệu của dsPIC).

Thân,

pham_v_quang3i
09-10-2006, 02:48 PM
Vào hồi 12h17 phút ngày 9/10 con dspic6014A của em đã chính thức chạy. Vì vậy một số lỗi trước đây em thắc mắc, em có thể kết luận-> Dòng dsPIC5013 mà công ty em nhập về có vấn đề, vì thử đến 4 hay 5 con gì vẫn ko chạy. Hôm nay có hàng mới dsPIC6014A , thử phát chạy luôn.

namqn
09-10-2006, 06:50 PM
Rất cám ơn bạn đã cung cấp thông tin. Như vậy chúng ta nên biết rằng các phiên bản silicon khác nhau của Microchip cũng có khả năng bị lỗi. Nếu có thể thì mong bạn báo cáo vấn đề này với Microchip.

Thân,

kennyha85
30-11-2006, 07:17 PM
Anh Nam cho em hỏi?
Em dùng Dspic30F3012 và gặp một vấn đề về ALT UART1.
Em init truyền:
U1STAbits.UTXISEL = 1;
theo kiểu truyền cả 4 byte cho mỗi lần ngắt sau khi thanh ghi U1TXREG đầy 4byte.
vấn đề là trong 4 byte đó có một byte có giá trị là 0 thì nó không truyền. còn nếu cả 4 byte đều có giá trị khác không thì nó chạy rất tốt.
Tốc độ Baud là 38400, tốc độ lấy mẫu ADC 1k truyền định dạng byte nhận dạng-> byte thấp -> byte cao-> byte cuối để nhét cho đầy U1TXREG trên mỗi lần truyền.
Em xử lý theo kiểu cộng giá trị byte lên 1 nếu như byte đó = 0;Mạch chạy song vẫn không thỏa mãn lắm vì giá trị ADC có thể bị sai tối thiểu 1 tối đa là 256.
Cám ơn anh!

scentoflove
19-07-2007, 12:53 AM
Hiện em đang làm về ds33F, trước em để chip o ngoài nối dây vào mạch và cấp nguồn bằng nguồn máy tính nhưng giờ gắn vào board chỉ có nguồn 5V, em muốn hỏi mạch tạo áp 3.3V từ 5V.

namqn
19-07-2007, 02:57 AM
Hiện em đang làm về ds33F, trước em để chip o ngoài nối dây vào mạch và cấp nguồn bằng nguồn máy tính nhưng giờ gắn vào board chỉ có nguồn 5V, em muốn hỏi mạch tạo áp 3.3V từ 5V.
Dùng các ổn áp loại LDO (low-dropout) như LM1086CT-3.3. Nếu không thì dùng 2 con diode như 1N4001 mắc nối tiếp để tạo sụt áp khoảng 1.4V (với cách này thì bạn nên thí nghiệm trước, lấy điện trở sao cho dòng điện qua điện trở tương đương với dòng tiêu thụ của mạch làm tải, và đo áp rơi trên 2 diode).

Bổ sung: Dùng LM317 với R1 = 1.2k, R2 = 2k sẽ cho áp ra 3.33V (R1 mắc từ ngõ ra đến chân ADJ, R2 mắc từ chân ADJ xuống GND). Với áp vào 5V thì dòng tải không nên vượt quá 200 mA (theo datasheet của LM317).

Thân,

piano lover
11-11-2007, 11:02 AM
Em xin bổ xung, ở ngoài Nhật Tảo có bán con ổn áp 3.3v thuộc họ 78xx:
7833 hình dạng giống con 7805 chỉ khác là nó cho ra áp 3.3v

pic16f877a
11-11-2007, 05:21 PM
Em xin bổ xung, ở ngoài Nhật Tảo có bán con ổn áp 3.3v thuộc họ 78xx:
7833 hình dạng giống con 7805 chỉ khác là nó cho ra áp 3.3v

Bạn có thể nói rõ hơn ở tiệm nào bán con này ko?

nvphvn
09-01-2008, 07:32 PM
em dung con nay (DSPIC30F6012A) nhung chua lam mach thuc bao gio! nen ai co the pót len cho em 1 vi du ve ung dung cua no de tham khao khong a?