PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   dsPIC - Bộ điều khiển tín hiệu số 16-bit (http://www.picvietnam.com/forum/forumdisplay.php?f=29)
-   -   Căn bản về dsPIC33 (http://www.picvietnam.com/forum/showthread.php?t=2134)

namqn 11-11-2009 08:41 AM

Trích:

Nguyên văn bởi harakiri (Post 31084)
Trong datasheet của dsPIC33FJxxGP trong phần chân Digital viết
-Output pins can drive from 3.0V to 3.6V
-All digital input pins are 5V tolerant
Em hiểu là nếu là input thì khi dùng các chân này là chân digital ta có thể cung cấp tới mức volt là 5V để có mức logic 1. Liệu có đúng không ạ?

5 V tolerant có nghĩa là chịu đựng được tới 5 V mà không bị hỏng. Ngưỡng logic của ngõ vào phụ thuộc vào VDD (vì đây dsPIC33F là vi mạch dùng công nghệ CMOS).

Thân,

harakiri 11-11-2009 10:36 AM

Như vậy,nếu như em nối một chân digital nào đó với mức Volt là 5V thì chip vẫn chịu được, tuy nhiên, mức logic trong trường hơp này sẽ không còn đúng nữa, và chip sẽ không nhận được logic là 1?

namqn 11-11-2009 10:45 AM

Trích:

Nguyên văn bởi harakiri (Post 31101)
Như vậy,nếu như em nối một chân digital nào đó với mức Volt là 5V thì chip vẫn chịu được, tuy nhiên, mức logic trong trường hơp này sẽ không còn đúng nữa, và chip sẽ không nhận được logic là 1?

Nếu bạn nối một chân digital (có đặc tính 5 V tolerant) vào một ngõ ra logic có nguồn 5 V thì mức logic '1' không có vấn đề, nhưng mức logic '0' có thể có vấn đề.

Bạn đã học môn học "Kỹ thuật số" chưa?

Thân,

rhinoceros 24-11-2009 12:00 AM

các huynh cho đệ thỉnh giáo chút về UART.
tình hình là đệ đọc datasheet của thằng dsPIC33FJ256GP510 có mấy bit đệ không hiểu. các huynh chỉ giáo giùm nhé . xin đa tạ trước
Thanh ghi UxMODE
IREN: IrDA® Encoder and Decoder Enable bit . IrDA là cái gì vậy,trong datasheet không nói về cái này.em không hiểu . nếu set bit này lên 1 thì hiện tượng gì xảy ra ?
LPBACK: UARTx Loopback Mode Select bit . bit chọn chế độ lặp lại nghĩa là sao. trong đây thì cái gì sẽ lặp lại ? và lặp lại như thế nào ?
ABAUD: Auto-Baud Enable bit tự động chọn tốc độ truyền nhận , em muốn đặt tốc độ truyền là 9600bps thì nó có tự hiểu không ?
URXINV: Receive Polarity Inversion bit theo em hiểu thì "đảo giá trị nhận được" tức là nó nhận được là LSB -> MSB . thì đảo lại là MSB -> LSB không biết có đúng không ?
ở thanh ghi UxSTA
UTXISEL<1:0>: Transmission Interrupt Mode Selection bits chọn chế độ ngắt truyền .em tưởng cứ truyền xong 1 byte thì ngắt chứ ?
UTXBRK: Transmit Break bit không hiểu !!!
UTXEN: Transmit Enable bit bật kênh truyền . em tưởng khi mà bật bit UARTEN thì cả Rx và Tx đều phải được bật chứ .
ADDEN: Address Character Detect bit không hiểu


thêm chút nữa. đệ không biết tốc độ truyền thì được tính thế nào . giả sử giờ đệ có thạch anh 7.3728MHz , truyền với tốc độ 9600bps thì giá trị thanh ghi UxBRG là bao nhiêu ?

xin cảm ơn.

tahi 25-11-2009 04:42 PM

Cấu hình chạy với baudrate 19200 đây
Code:

       
unsigned int UxMODEvalue,UxSTAvalue,ubrg;
UxMODEvalue = UART_EN&UART_IDLE_CON&UART_IrDA_DISABLE&UART_MODE_FLOW&                                UART_UEN_00&UART_DIS_WAKE&UART_DIS_LOOPBACK&UART_DIS_ABAUD&                        UART_UXRX_IDLE_ONE&UART_BRGH_SIXTEEN&UART_NO_PAR_8BIT&UART_1STOPBIT;

UxSTAvalue=UART_INT_TX&UART_IrDA_POL_INV_ZERO&UART_SYNC_BREAK_DISABLED&UART_TX_ENABLE&        UART_TX_BUF_NOT_FUL&UART_INT_RX_CHAR&UART_ADR_DETECT_DIS&UART_RX_OVERRUN_CLEAR;

ubrg = 0x81;
//UART1 configuration                       
OpenUART1(UxMODEvalue,UxSTAvalue,ubrg);
//UART1 interrupts
ConfigIntUART1 (UART_RX_INT_DIS&UART_TX_INT_DIS); //disable interrupts

Với UART chắc chỉ quan tâm đến baud rate, parity, data bit
Ngắt hay ko ngắt là tùy bạn cấu hình và tùy vào ứng dụng của bạn. Nếu bạn chỉ dùng mỗi UART thì chẳng cần ngắt, cứ dùng hàm này
Code:

char BusyUART1(void)

    return(!U1STAbits.TRMT);
}

Muốn tính tốc độ thì dựa vào phần
UART BAUD RATE GENERATOR trong section 17 với dspic33F (hoặc để ý chữ refer to section bao nhiêu đó, ở dưới cấu hình các thanh ghi liên quan)

heavenlylove 27-02-2010 11:32 PM

ADC của dspic33fj12gp202
 
Trích:

Nguyên văn bởi falleaf (Post 15318)
Bài 3: ADC 10/12-bit

Hoạt động ADC của các chip MCHP đều được mô tả như hình sau:


Quá trình lấy mấu ADC được thực hiện thông qua 2 quá trình: Sample (Lấy mẫu) và Conversion (Biến đổi). Quá trình này được mô tả đơn giản bằng việc dsPIC sẽ đóng khóa K để điện áp bên ngoài tích đủ vào một con tụ, sau đó mở khoá K để phân cách với mạch ngoài, và bắt đầu quá trình biến đổi từ Analog thành Digital.

Quá trình biến đổi được mô tả như hình dưới đây:



Vấn đề này quá đơn giản, vậy chúng ta cần tìm hiểu gì?

Chúng ta cần tìm hiểu:
  1. Làm thế nào để cấu hình hoạt động cho Module ADC để nó hoạt động theo ý ta muốn?
  2. Khi nào thì bắt đầu quá trình Sample (lấy mẫu), khi nào thì bắt đầu quá trình Conversion (biến đổi). Có những cách nào để tác động vào quá trình này?
  3. Sau khi chuyển đổi xong, làm thế nào ta lấy được kết quả và bỏ vào một thanh ghi bất kỳ mà ta muốn?

Thực tế là chúng ta muốn thế, nhắm mắt lại và kệ xừ mọi thứ, cái quan trọng là khi kết quả nằm trong một biến nào đó là xong. Người lập trình C lúc nào cũng mong muốn điều này, bởi nếu không thì họ đã lập trình với ASM30 mất rồi. Chúng ta sẽ tìm hiểu ở đây theo kiểu tư duy của người lập trình bằng ngôn ngữ cấp cao, nhưng sẽ hiểu đủ sâu để có thể làm việc với ASM30.

F đặt ra những câu hỏi theo thứ tự tư duy như bên dưới đây:

1. Thời gian Sample (Lấy mẫu) và Conversion (Biến đổi) là bao nhiêu?

Đơn giản cực, đôi khi các bạn không để ý, nhưng nó có ngay trong datasheet. F lấy thí dụ datasheet của dòng dsPIC33FJxxxMCxxx (DS70287A-page 319)


Vậy ở đây xuất hiện thêm một số khái niệm mà sau này để đơn giản, F viết là TAD và Tcy. Mối quan hệ giữa chúng? Làm sao để đặt được? Đây là câu hỏi tiếp theo và chúng ta sẽ giải quyết ngay dưới đây.


(còn tiếp, vì F chưa có thời gian viết xong)

Chúc vui

Anh viết tiếp đi anh. Anh có thể nói kỹ hơn về chuyển đổi tín hiệu am thanh sàng số được không?

minhthaitn 23-09-2010 06:04 PM

xin lỗi câu hỏi của em ngoài luồng 1 chút ạ, em không nhìn thấy mấy công thức toán học ở bài đầu tiên, nó báo phải cài mimetex.cgi, e dùng firefox rồi, xin các anh hướng dẫn e với ạ,thanks

musashi17 08-11-2010 02:42 PM

Anh F đang viết mọi người hỏi sao không ra topic khác ạ. Anh F viết tiếp đi anh. Cảm ơn anh về bài giảng của anh.

manhdungmta 04-12-2010 07:25 PM

anh Nam cho em hỏi đoạn code sau có gì sai mà không thấy chạy.
em dung C30 cua mplap
////////////////////////////////////////

#include "p33FJ256MC710.h"
_FOSCSEL(FNOSC_PRIPLL & IESO_OFF & TEMP_OFF);
_FOSC(FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMD_XT);
_FWDT(FWDTEN_OFF);
_FPOR(PWMPIN_ON);
_FGS(GCP_OFF);

int i,m;

void init_TMR2();

void init_port()
{
TRISA = 0x0000;
TRISC = 0xFFFF;
LATA = 0x0000;
}

void init_TMR2() /*______ ham khoi tao timer va ngat______*/
{
TMR2 = 0; //Xoa so dem trong TMR2
PR2 = 2; //Dat nguong ngat
_T2IF = 0; //Xoa co ngat cua Timer 2
_T2IE = 1; //Cho phep ngat Timer 2
T2CON = 0x8002; //dung TCK dem
}

void _ISR _T2Interrupt() /*______ ham ngat______*/
{
_T2IF = 0; //Xoa co ngat
LATA++;
}

int main()
{
_PLLDIV=38; // M=40
_PLLPRE=0; // N1=2
_PLLPOST=0; // N2=2
init_port();
init_TMR2();
while(1)
{}
}

ak47 04-12-2010 07:51 PM

Trích:

Nguyên văn bởi manhdungmta (Post 40595)
anh Nam cho em hỏi đoạn code sau có gì sai mà không thấy chạy.
em dung C30 cua mplap
////////////////////////////////////////

#include "p33FJ256MC710.h"
_FOSCSEL(FNOSC_PRIPLL & IESO_OFF & TEMP_OFF);
_FOSC(FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMD_XT);
_FWDT(FWDTEN_OFF);
_FPOR(PWMPIN_ON);
_FGS(GCP_OFF);

int i,m;

void init_TMR2();

void init_port()
{
TRISA = 0x0000;
TRISC = 0xFFFF;
LATA = 0x0000;
}

void init_TMR2() /*______ ham khoi tao timer va ngat______*/
{
TMR2 = 0; //Xoa so dem trong TMR2
PR2 = 2; //Dat nguong ngat
_T2IF = 0; //Xoa co ngat cua Timer 2
_T2IE = 1; //Cho phep ngat Timer 2
T2CON = 0x8002; //dung TCK dem
}

void _ISR _T2Interrupt() /*______ ham ngat______*/
{
_T2IF = 0; //Xoa co ngat
LATA++;
}

int main()
{
_PLLDIV=38; // M=40
_PLLPRE=0; // N1=2
_PLLPOST=0; // N2=2
init_port();
init_TMR2();
while(1)
{}
}

Chào!
Chương trình của cậu có một số lỗi như sau:
-Khai báo cấu hình sai:TEMP_OFF không được định nghĩa trong file .h của dspic33FJ256MC710.(test chương trình đơn giản không cần khai báo nhiều thế đâu!)
-Hàm ngắt Timer2 có nhiều cách khai báo nhưng mà nên để ý tới cái psv.Nên xác định rõ psv hay auto_psv để bỏ hẳn cái warning đáng ghét đi (không cũng không sao!)
-Mình không mang mạch theo nên không debug cho cậu được.Cậu thử xem thế nào nhé

manhdungmta 05-12-2010 07:13 PM

cảm ơn anh!
em thấy trong file dspic33FJ256MC710.h đã định nghĩa TEMP_OFF rồi chứ ạ.
mà em bỏ đi hay thêm vào cái đó cũng không sao cả, nó vẫn không chạy.
trước đó em có viết ct ngắt timer dùng dao động nội thì chạy tốt
chương chình này chỉ khác là em dùng dao động bên ngoài qua TCK
nên em nghĩ hai ct chỉ khác nhau ở điểm: đối với dao động nội cần khai báo T2CON = 0x8000 còn với dao động qua TCK thì khai báo T2CON = 0x8002.
không biết chỉ thế là đủ chưa, mong anh giúp đỡ.

manhdungmta 11-12-2010 12:26 AM

ai có thể chỉ cho mình được không?????
hay chắc là do phần cứng nhỉ.????

thanh000 12-12-2010 08:56 PM

anh F ơi, viết tiếp đi anh, đang hay mà lâu rồi ko thấy gì nữa vậy ???

nckh 01-08-2011 05:08 PM

có mem nào có tài liệu dsPIC33F Family Reference Manual mà có phần về dspic33FJ12MC201/202 chỉ e với. trên http://www.microchip.com có dsPIC33F FRM nhưng mà thiếu mất Part II ( phần danh cho con dspic33FJ12MC201/202 ) ??

thanh_30april 11-10-2011 10:32 PM

Tiếp đi các anh ơi,em cũng đang tìm hiểu


Múi giờ GMT. Hiện tại là 08:08 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam