PDA

View Full Version : Làm sao để đạt được Fcy = 30 MHz với dsPIC30F4011 ?


iniesta
02-02-2008, 06:15 PM
Theo mình được biết thì có 1 cách là dùng thạch anh 7,5 MHz và PLL = 16. Nhưng tìm đỏ cả mắt ở HN ko thấy bán thạch anh 7,5 MHz. Chỉ có loại 7,3728 MHz hay sao ấy.
Như vậy có cách nào khác ko ?
Cám ơn các bạn !

namqn
02-02-2008, 08:50 PM
Theo mình được biết thì có 1 cách là dùng thạch anh 7,5 MHz và PLL = 16. Nhưng tìm đỏ cả mắt ở HN ko thấy bán thạch anh 7,5 MHz. Chỉ có loại 7,3728 MHz hay sao ấy.
Như vậy có cách nào khác ko ?
Cám ơn các bạn !
30 MIPS chỉ là một giá trị tương đối thôi, với thạch anh 7.3728 MHz và PLL x16 thì cũng có thể coi là đạt 30 MIPS (thực tế là 29.49 MIPS). Một cách khác là dùng bộ dao động nội của dsPIC và chỉnh lại tần số của bộ dao động nội để đạt được 30 MIPS (tất nhiên là với PLL x16). Bạn xem thông tin ở luồng sau về tần số của bộ dao động nội:
http://www.picvietnam.com/forum//showthread.php?t=326

Thân,

iniesta
03-02-2008, 10:13 AM
Cám ơn bạn namqn. Tớ đã đọc luồng mà bạn bảo. Đọc xong lại có 1 thắc mắc nữa đó là : tần số danh định của FRC của dsPIC30F4011 là bao nhiêu ? Trong datasheet có ghi là 7,37 MHz ( có phải chính xác ra là 7,3728 ko nhỉ ? ), nhưng bạn lại đo được là 7,72 MHz ???
Một câu hỏi nữa là việc chỉnh tần số của FRC như thế nào ? Tớ đọc xong nhưng chưa hiểu lắm ( cách tính % của nó có vẻ ko rõ ràng ). Bạn có thể bớt chút thời gian giải thích hộ tớ ? Cám ơn nhiều !

namqn
03-02-2008, 05:40 PM
Cám ơn bạn namqn. Tớ đã đọc luồng mà bạn bảo. Đọc xong lại có 1 thắc mắc nữa đó là : tần số danh định của FRC của dsPIC30F4011 là bao nhiêu ? Trong datasheet có ghi là 7,37 MHz ( có phải chính xác ra là 7,3728 ko nhỉ ? ), nhưng bạn lại đo được là 7,72 MHz ???
Một câu hỏi nữa là việc chỉnh tần số của FRC như thế nào ? Tớ đọc xong nhưng chưa hiểu lắm ( cách tính % của nó có vẻ ko rõ ràng ). Bạn có thể bớt chút thời gian giải thích hộ tớ ? Cám ơn nhiều !
Bạn xem lại ngày mà tôi đã post bài ở luồng đó, đó là vào khoảng giữa năm 2006, khi đó những chip dsPIC30F4011 mà tôi có trong tay được sản xuất vào năm 2005, với datasheet ghi tần số danh định của bộ dao động nội là 8 MHz. Từ revision D của datasheet (cập nhật tháng 8/2006) trở đi, tần số danh định này là 7.37 MHz, và tôi chưa có cơ hội đo lại tần số trung tâm của các chip dsPIC30F4011 mới có spec. theo datasheet mới. Bản thân con số 7.37 MHz chỉ chính xác một cách tương đối, nên hiếm có khả năng nó đúng bằng 7.3728 MHz sau khi xuất xưởng (tần số này phụ thuộc vào nhiệt độ, điện áp làm việc của chip).

Bạn có thể điều chỉnh tần số của bộ dao động nội bằng cách thay đổi giá trị của các bit TUN<3:0> trong thanh ghi OSCCON. Khi đặt TUN<3:0> = '0000', bạn sẽ có tần số của bộ dao động nội bằng giá trị danh định (tần số trung tâm), được cân chỉnh tại xưởng sản xuất với sai số +/- 2% (so với giá trị 7.37 MHz trong datasheet). Các bit TUN<3:0> là số nhị phân có dấu, và một đơn vị tương ứng với 1.5% giá trị tần số tại TUN<3:0> = '0000'. Ví dụ, bạn đo được tần số của bộ dao động nội là 7.4 MHz tại TUN<3:0> = '0000', khi đó mỗi đơn vị của TUN<3:0> sẽ tương ứng với 1.5% của 7.4 MHz, hay bằng 111 kHz. Như vậy, để có được tần số dao động khoảng 7.5 MHz (tần số tương ứng với 30 MIPS nếu bạn dùng kết hợp PLL x16), bạn cần tăng tần số dao động khoảng 9% (tương ứng với 999 kHz). Do đó, bạn sẽ thiết lập TUN<3:0> = '0110'.

Thân,

iniesta
03-02-2008, 07:29 PM
được cân chỉnh tại xưởng sản xuất với sai số +/- 2% (so với giá trị 7.37 MHz trong datasheet).

sai số có vẻ hơi lớn nhỉ ? mà đấy là còn đo ở điều kiện chuẩn với nhiệt độ 25 độ C và điện áp cấp 5V.
Với sai số như thế thì liệu truyền thông với máy tính qua RS-232 có ổn ko ? vì dải sai số chấp nhận được của chuẩn giao tiếp RS-232 chỉ tối đa là +/- 2%. Nếu chỉ riêng Fcy đã bị sai số 2% thì khi tính baudrate sẽ có nhiều trường hợp bị vượt quá mất dải trên. Mong bạn giải đáp thắc mắc này hộ mình với. Cám ơn nhiều !

namqn
04-02-2008, 12:31 AM
sai số có vẻ hơi lớn nhỉ ? mà đấy là còn đo ở điều kiện chuẩn với nhiệt độ 25 độ C và điện áp cấp 5V.
Với sai số như thế thì liệu truyền thông với máy tính qua RS-232 có ổn ko ? vì dải sai số chấp nhận được của chuẩn giao tiếp RS-232 chỉ tối đa là +/- 2%. Nếu chỉ riêng Fcy đã bị sai số 2% thì khi tính baudrate sẽ có nhiều trường hợp bị vượt quá mất dải trên. Mong bạn giải đáp thắc mắc này hộ mình với. Cám ơn nhiều !
Bạn có thể đo đạc để có được tần số mong muốn. +/- 2% đó thể hiện độ sai lệch của giá trị thực của tần số trung tâm của bộ dao động nội so với giá trị danh định 7.37 MHz ghi trong datasheet. Nếu không phải là sản xuất hàng loạt thì bạn có thể tự đo đạc cho riêng dsPIC được dùng, sau đó hiệu chỉnh lại cho phù hợp.

Giao tiếp RS-232 chấp nhận sai số clock giữa thiết bị phát và thu là khoảng 3%, bạn đọc thêm ở trang web của tôi về RS-232:

http://namqn.byethost7.com/Commu.php

Thân,

iniesta
04-02-2008, 09:53 AM
Giao tiếp RS-232 chấp nhận sai số clock giữa thiết bị phát và thu là khoảng 3%, bạn đọc thêm ở trang web của tôi về RS-232:


Trong quyển sách "Programming 16-bit PIC Microcontrollers in C" của nxb Newnes xuất bản năm 2007, ở chương 8 ông tác giả có viết:
"... With a value of 33, we obtain 117,647 baud or a 2.1% error, outside the acceptable tolerance range (± 2%) for a standard RS232 port.
... ".

namqn
04-02-2008, 05:45 PM
Trong quyển sách "Programming 16-bit PIC Microcontrollers in C" của nxb Newnes xuất bản năm 2007, ở chương 8 ông tác giả có viết:
"... With a value of 33, we obtain 117,647 baud or a 2.1% error, outside the acceptable tolerance range (± 2%) for a standard RS232 port.
... ".
Cả tôi và ông tác giả đó đều không sai. Bạn có thể đọc tài liệu sau của Maxim:

http://pdfserv.maxim-ic.com/en/an/AN2141.pdf

Thân,