2016-03-22 23 views
1

私はマイクロコントローラのプログラミングをとても新しくしています。私はUARTコミュニケーションdsPIC33EP256MU810

を使用してい

    IDEとして
  • MplabXのv3.26
  • XC16コンパイラ
  • てPICkit 3
  • p33EP256MU810(DSPIC)

    Iをプログラミングのための

非常にシンプルなプログラムを書いてLEDと点滅を点滅させるUART経由最後の数文字は、次のソースコードを参照してください。一部を点滅LED

#include <p33Exxxx.h> 
#include <p33EP256MU810.h> 
#include <libpic30.h> 
#include <uart.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <pps.h> 
#include <xc.h> 
#include <stdint.h> 

// Configuration settings 
_FOSC(FNOSC_FRCPLL); 
_FWDT(FWDTEN_OFF); 

int main() 
{  
//make all pins digital 
PADCFG1 = 0xFFFF; 

//set direction 
TRISCbits.TRISC2 = 0; 

//Initialze UART1 
iPPSOutput(OUT_PIN_PPS_RP68, OUT_FN_PPS_U1TX); 

//close UART 
CloseUART1(); 

//open UART 
OpenUART1( UART_EN & UART_IDLE_CON & UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT, 
      UART_TX_ENABLE & UART_INT_TX & UART_ADR_DETECT_DIS, 
      15); 

while (1) 
{ 
    //turn on led 
    LATCbits.LATC2 = 1; 
    __delay32(3750000); // ~1 sec delay 
    //turn off led 
    LATCbits.LATC2 = 0; 
    __delay32(3750000); // ~1 sec delay 


    //Transmit data 
    while(BusyUART1());  //Wail till available 
    WriteUART1(0x55); 
    WriteUART1(0xaa); 
    while(BusyUART1());  //Wail till all bytes sent 
} 

return 0; 
} 

は完璧に動作しますが、私はシリアルモニタツール(X-CTUを使用しているUARTのもう一方の端に文字化けを受け'M )を使用してデータを監視します。

私の大きな問題は、ボーレートを計算できないことです。私が何か悪いことをしているなら教えてください。

答えて

1
  1. クリアANSELxではなく、ボーレートと
  2. PADCFG1にプレイを書き込むので、ピンのデジタルを設定するための登録ありがとうございます。手順の最後のパラメータOpenUART1はdsPic tool descriptionページ147に従ってU1BRGの値を指定します。 OpenUART1を実行した直後にU1BRG = value;を手動で追加してボーレートを手動で設定することもできます。 UxBRGに渡す値は、クロック速度と必要なボーレートによります。詳細は、manual for USARTを参照してください。9.設定ボーレートを手動で設定する必要がある場合は、U1MODE.BRGHビットを設定またはクリアする必要があります。
1

「私の大きな問題は、私がボーレートを計算できないことです。何か間違っているかどうか教えてください。」

私が望まれているものボーレートを知らないが:

  1. UxBRG(あなたが有効になってPLLで_FOSCSEL(FNOSC_FRCPLL)を使用しているので)計算は、してください、クロックに世話をする(発振器)セットアップ作りながら。

  2. 誤ったボーレート(オシレータを含む)の計算や、ポートの設定が間違っている(databits、parity、stopbits)などの問題を説明しています。

...この情報がお役に立てば幸いです