N
nofre
Guest
こんにちは、私はUARTのPCからデータの受信に問題がある!私を送信するPCからチップには、ダブルしかし
、 私は0.0000を受信します。フレームのiを使用する"です:ダブル;"forexample、私12.23を送信するには、最初の文字列に変換する"場合:12.23;"その後のUARTを介して送信される!を受け取るとdsPIC戻ってデータを送信する!でも... ...
//-----------------テストのUART 1 -------------------//
#含まれて<p33FJ256MC710.h>
#含まれて<delay.h>
#含まれて<stdio.h>
#含まれて<math.h>の
パイ3.14定義#
_FOSCSEL(FNOSC_FRC); / /内部FRC発振器
_FOSC(FCKSM_CSECMD&OSCIOFNC_OFF&POSCMD_NONE); / /クロックの切り替えが有効になっFail Safeのクロックモニタは無効になります
/ / OSC2ピン機能¥:OSC2クロック出力されます
/ /プライマリ発振器モード:XTのCrystanl
文字m_buf [15];
文字ß;
int nchar型= 0;
int = 0、開始= 0を送信;
文字応急=':',直前=';';
無効__attribute__((、割り込みno_auto_psv))_U1RXInterrupt(無効)(
/ / U1TXREG = U1RXREG;
ß = U1RXREG;
(ß ==応急)の場合
(
nchar型= 0;
開始= 1;
)
(開始)の場合
(
(ß ==直前)の場合
(
m_buf [nchar型 ] =β;
m_buf [nchar型] ='¥¥ 0';
nchar型= 0;
= 1を送信;
)
その他の
m_buf [nchar型 ] =β;
)
= 0 IFS0bits.U1RXIF;
)
無効__attribute__((、割り込みno_auto_psv))_U1TXInterrupt(無効)(
= 0 IFS0bits.U1TXIF;
)
無効InitClock()(
PLLFBD = 38; / / M =が40
CLKDIVbits.PLLPOST = 0; / / N1 = 2
CLKDIVbits.PLLPRE = 0; / /窒素= 2
OSCTUN = 0;
RCONbits.SWDTEN = 0;
/ /クロック切り替えPLLを組み込むことが
__builtin_write_OSCCONH(0x01)を/ / FRCに、PLL内蔵時計スイッチを開始(NOSC = 0b001)
__builtin_write_OSCCONL(0x01)を/ /スタートのクロック間(OSCCONbits.COSC!= 0b001);時計のスイッチが発生するのを待ちますスイッチング
中(OSCCONbits.LOCK!= 1)();
)
無効InitUART1()(
/ /この例では、その残忍な入力は
、 すべてのビットの説明に入るセット
/ / HPC16ボードので、我々がDB9コネクタUART2のに配線して
/ /このポートを設定するだけ
/ /設定U2MODE
U1MODEbits.UARTEN = 0; / / Bit15テキサス州、送受信がDISABLEDの末尾のENABLE func
/ / U2MODEbits.notimplemented; / / Bit14
U1MODEbits.USIDL = 0;で/ / Bit13続行アイドル
U1MODEbits.IREN = 0; / / Bit12いいえIR情報の翻訳
U1MODEbits.RTSMD = 0; / / Bit11シンプレクスモード
/ / U2MODEbits.notimplemented; / / Bit10
U1MODEbits.UEN = 0; / / Bits8、9テキサス州、送受信、メーカーはRTSが有効
U1MODEbits.WAKE = 0; / / Bit7いいえモーニングコール(なぜなら私たちはここ)寝ていない
U1MODEbits.LPBACK = 0; / / Bit6いいえループバック
U1MODEbits.ABAUD = 0; / / Bit5いいえオートボー('55送信')が必要となる
U1MODEbits.URXINV = 0; / / Bit4 IdleState = 1 dsPIC()を
U1MODEbits.BRGH = 0;ビットあたりの/ / Bit3 16クロック周期
U1MODEbits.PDSEL = 0; / / Bits1 2ビット、パリティなし
U1MODEbits.STSEL = 0; / / Bit0ワンストップビット
/ /ボーレート発生器にロードする値を返します。たとえば、9600です。
/ /データシートのセクション19.3.1参照してください。
/ / U2BRG =(Fcy /(16 *ボーレート))-1
/ / U2BRG =(37メガバイト/(16 * 9600))-1
/ / = 240 U2BRG
U1BRG = 240; / / 40MHzのオシレーター、9600ボー
/ /読み込みU1STA用SFR内のすべての値を
U1STAbits.UTXISEL1 = 0; / / Bit15 Intときにシャア(1 / 2の設定に転送されます!)
U1STAbits.UTXINV = 0; / / Bit14ム/、IrDAの設定
U1STAbits.UTXISEL0 = 0; Bit15の/ / Bit13他の半分
/ / = 0 U2STAbits.notimplemented; / / Bit12
U1STAbits.UTXBRK = 0; / /無効Bit11
U1STAbits.UTXEN = 0; / / Bit10テキサス州周辺機器の制御ピン
U1STAbits.UTXBF = 0; / / Bit9 *読み取り専用ビット*
U1STAbits.TRMT = 0; / / Bit8 *読み取り専用ビット*
U1STAbits.URXISEL = 0; / / Bits6、7 Int。文字を受信した上で
U1STAbits.ADDEN = 0; / / Bit5アドレス検出バリアフリー
U1STAbits.RIDLE = 0; / / Bit4 *読み取り専用ビット*
U1STAbits.PERR = 0; / / Bit3 *読み取り専用ビット*
U1STAbits.FERR = 0; / / Bit2 *読み取り専用ビット*
U1STAbits.OERR = 0; / / Bit1 *読み取り専用ビット*
U1STAbits.URXDA = 0; / / Bit0 *読み取り専用ビット*
IPC7 = 0x4400; / /ミッドレンジ割り込み優先順位レベルの緊急の理由
= 0 IFS0bits.U1TXIF; / /クリア送信割り込みフラグ
IEC0bits.U1TXIE = 1; / /送信割り込みを有効にする
= 0 IFS0bits.U1RXIF; / /クリアの受信割り込みフラグ
IEC0bits.U1RXIE = 1; / /受信割り込みを有効にする
U1MODEbits.UARTEN = 1; / /そして
、 上の周辺機器の電源
U1STAbits.UTXEN = 1;
)
無効putUART1(char cを)(
中のTxフルバッファ中(U1STAbits.UTXBF); / /待つ
U1TXREG = ç;
)
無効putsUART1(文字*掲載)(
符号なしint = 0;
(掲載[私])/ /ループまで* ==掲載¥¥ 0、文字列の末尾ながら
、putUART1(掲載[私 ]); /次のいずれかの文字をポイント送信/
)
ダブルgetUART1(無効)(
ダブルX;
中(!送信される);
Xの= atof関数()m_buf;
= 0を送信;
開始= 0;
戻りXの;
)
メイン(無効)int(
InitClock(); / /これは、PLLの設定です
InitUART1(); 9600,8、度、1 / /初期化UART2ののTx / Rx
ダブル= 0;
文字BUFの[10];
遅延(Delay_5mS_Cnt * 100);
ダブルニュー、ニューヨーク、T_o;
ニュー= getUART1();
ニューヨーク= getUART1();
T_o = getUART1();
遅延(Delay_1S_Cnt);
はsprintf(BUFは、"%.5 f"を、ニュー);
putsUART1(BUFの);
遅延(Delay_1S_Cnt);
はsprintf(BUFは、"%.5 f"を、ニューヨーク州);
putsUART1(BUFの);
遅延(Delay_1S_Cnt);
はsprintf(BUFは、"%.5 f"を、T_o);
putsUART1(BUFの);
/ /私は0.00000 !!!!!!!受信
(1)(
遅延(Delay_5mS_Cnt * 200);
はsprintf(BUFは、"%.5 f"を、100 *罪((私 )*π/ 7));
putsUART1(BUFの);
/ /このrountine送信チェックすることです、それは正常に動作!
)
)
ヘルプ私<img src=¥"http://www.edaboard.com/images/smiles/icon_cry.gif¥" alt=¥"泣いてまたは非常に悲しい¥" border=¥"0¥" /><img src=¥"http://www.edaboard.com/images/smiles/icon_cry.gif¥" alt=¥"泣いてまたは非常に悲しい¥" border=¥"0¥" />
。
、 私は0.0000を受信します。フレームのiを使用する"です:ダブル;"forexample、私12.23を送信するには、最初の文字列に変換する"場合:12.23;"その後のUARTを介して送信される!を受け取るとdsPIC戻ってデータを送信する!でも... ...
//-----------------テストのUART 1 -------------------//
#含まれて<p33FJ256MC710.h>
#含まれて<delay.h>
#含まれて<stdio.h>
#含まれて<math.h>の
パイ3.14定義#
_FOSCSEL(FNOSC_FRC); / /内部FRC発振器
_FOSC(FCKSM_CSECMD&OSCIOFNC_OFF&POSCMD_NONE); / /クロックの切り替えが有効になっFail Safeのクロックモニタは無効になります
/ / OSC2ピン機能¥:OSC2クロック出力されます
/ /プライマリ発振器モード:XTのCrystanl
文字m_buf [15];
文字ß;
int nchar型= 0;
int = 0、開始= 0を送信;
文字応急=':',直前=';';
無効__attribute__((、割り込みno_auto_psv))_U1RXInterrupt(無効)(
/ / U1TXREG = U1RXREG;
ß = U1RXREG;
(ß ==応急)の場合
(
nchar型= 0;
開始= 1;
)
(開始)の場合
(
(ß ==直前)の場合
(
m_buf [nchar型 ] =β;
m_buf [nchar型] ='¥¥ 0';
nchar型= 0;
= 1を送信;
)
その他の
m_buf [nchar型 ] =β;
)
= 0 IFS0bits.U1RXIF;
)
無効__attribute__((、割り込みno_auto_psv))_U1TXInterrupt(無効)(
= 0 IFS0bits.U1TXIF;
)
無効InitClock()(
PLLFBD = 38; / / M =が40
CLKDIVbits.PLLPOST = 0; / / N1 = 2
CLKDIVbits.PLLPRE = 0; / /窒素= 2
OSCTUN = 0;
RCONbits.SWDTEN = 0;
/ /クロック切り替えPLLを組み込むことが
__builtin_write_OSCCONH(0x01)を/ / FRCに、PLL内蔵時計スイッチを開始(NOSC = 0b001)
__builtin_write_OSCCONL(0x01)を/ /スタートのクロック間(OSCCONbits.COSC!= 0b001);時計のスイッチが発生するのを待ちますスイッチング
中(OSCCONbits.LOCK!= 1)();
)
無効InitUART1()(
/ /この例では、その残忍な入力は
、 すべてのビットの説明に入るセット
/ / HPC16ボードので、我々がDB9コネクタUART2のに配線して
/ /このポートを設定するだけ
/ /設定U2MODE
U1MODEbits.UARTEN = 0; / / Bit15テキサス州、送受信がDISABLEDの末尾のENABLE func
/ / U2MODEbits.notimplemented; / / Bit14
U1MODEbits.USIDL = 0;で/ / Bit13続行アイドル
U1MODEbits.IREN = 0; / / Bit12いいえIR情報の翻訳
U1MODEbits.RTSMD = 0; / / Bit11シンプレクスモード
/ / U2MODEbits.notimplemented; / / Bit10
U1MODEbits.UEN = 0; / / Bits8、9テキサス州、送受信、メーカーはRTSが有効
U1MODEbits.WAKE = 0; / / Bit7いいえモーニングコール(なぜなら私たちはここ)寝ていない
U1MODEbits.LPBACK = 0; / / Bit6いいえループバック
U1MODEbits.ABAUD = 0; / / Bit5いいえオートボー('55送信')が必要となる
U1MODEbits.URXINV = 0; / / Bit4 IdleState = 1 dsPIC()を
U1MODEbits.BRGH = 0;ビットあたりの/ / Bit3 16クロック周期
U1MODEbits.PDSEL = 0; / / Bits1 2ビット、パリティなし
U1MODEbits.STSEL = 0; / / Bit0ワンストップビット
/ /ボーレート発生器にロードする値を返します。たとえば、9600です。
/ /データシートのセクション19.3.1参照してください。
/ / U2BRG =(Fcy /(16 *ボーレート))-1
/ / U2BRG =(37メガバイト/(16 * 9600))-1
/ / = 240 U2BRG
U1BRG = 240; / / 40MHzのオシレーター、9600ボー
/ /読み込みU1STA用SFR内のすべての値を
U1STAbits.UTXISEL1 = 0; / / Bit15 Intときにシャア(1 / 2の設定に転送されます!)
U1STAbits.UTXINV = 0; / / Bit14ム/、IrDAの設定
U1STAbits.UTXISEL0 = 0; Bit15の/ / Bit13他の半分
/ / = 0 U2STAbits.notimplemented; / / Bit12
U1STAbits.UTXBRK = 0; / /無効Bit11
U1STAbits.UTXEN = 0; / / Bit10テキサス州周辺機器の制御ピン
U1STAbits.UTXBF = 0; / / Bit9 *読み取り専用ビット*
U1STAbits.TRMT = 0; / / Bit8 *読み取り専用ビット*
U1STAbits.URXISEL = 0; / / Bits6、7 Int。文字を受信した上で
U1STAbits.ADDEN = 0; / / Bit5アドレス検出バリアフリー
U1STAbits.RIDLE = 0; / / Bit4 *読み取り専用ビット*
U1STAbits.PERR = 0; / / Bit3 *読み取り専用ビット*
U1STAbits.FERR = 0; / / Bit2 *読み取り専用ビット*
U1STAbits.OERR = 0; / / Bit1 *読み取り専用ビット*
U1STAbits.URXDA = 0; / / Bit0 *読み取り専用ビット*
IPC7 = 0x4400; / /ミッドレンジ割り込み優先順位レベルの緊急の理由
= 0 IFS0bits.U1TXIF; / /クリア送信割り込みフラグ
IEC0bits.U1TXIE = 1; / /送信割り込みを有効にする
= 0 IFS0bits.U1RXIF; / /クリアの受信割り込みフラグ
IEC0bits.U1RXIE = 1; / /受信割り込みを有効にする
U1MODEbits.UARTEN = 1; / /そして
、 上の周辺機器の電源
U1STAbits.UTXEN = 1;
)
無効putUART1(char cを)(
中のTxフルバッファ中(U1STAbits.UTXBF); / /待つ
U1TXREG = ç;
)
無効putsUART1(文字*掲載)(
符号なしint = 0;
(掲載[私])/ /ループまで* ==掲載¥¥ 0、文字列の末尾ながら
、putUART1(掲載[私 ]); /次のいずれかの文字をポイント送信/
)
ダブルgetUART1(無効)(
ダブルX;
中(!送信される);
Xの= atof関数()m_buf;
= 0を送信;
開始= 0;
戻りXの;
)
メイン(無効)int(
InitClock(); / /これは、PLLの設定です
InitUART1(); 9600,8、度、1 / /初期化UART2ののTx / Rx
ダブル= 0;
文字BUFの[10];
遅延(Delay_5mS_Cnt * 100);
ダブルニュー、ニューヨーク、T_o;
ニュー= getUART1();
ニューヨーク= getUART1();
T_o = getUART1();
遅延(Delay_1S_Cnt);
はsprintf(BUFは、"%.5 f"を、ニュー);
putsUART1(BUFの);
遅延(Delay_1S_Cnt);
はsprintf(BUFは、"%.5 f"を、ニューヨーク州);
putsUART1(BUFの);
遅延(Delay_1S_Cnt);
はsprintf(BUFは、"%.5 f"を、T_o);
putsUART1(BUFの);
/ /私は0.00000 !!!!!!!受信
(1)(
遅延(Delay_5mS_Cnt * 200);
はsprintf(BUFは、"%.5 f"を、100 *罪((私 )*π/ 7));
putsUART1(BUFの);
/ /このrountine送信チェックすることです、それは正常に動作!
)
)
ヘルプ私<img src=¥"http://www.edaboard.com/images/smiles/icon_cry.gif¥" alt=¥"泣いてまたは非常に悲しい¥" border=¥"0¥" /><img src=¥"http://www.edaboard.com/images/smiles/icon_cry.gif¥" alt=¥"泣いてまたは非常に悲しい¥" border=¥"0¥" />
。