【PIC32MX220F032B】UARTを使ってみる。その1:送信
◆PIC32MX220F032BでUARTをつかってみます。手始めに文字列を送信してみます。
レジスタ設定
データシートDS61107EのPage26に薄らと記述例があります。
ほとんどPIC24Fと同様です。。。
ポート設定
データーシートのPage148を参照にしました。
PIC24Fと違いU1TXはどのピンでも対応という訳ではなく
RPA0Rは可能だけど、RPA1Rは他の機能という感じです。
こちらは記述例が全くないのでトライアンドエラーで何とかしました。
左辺がBit(pin)で右辺が機能となります。U1TXは「0b0001」となります。
送信方法
データシートDS61107EのPage18に送信方法が記載されています。
U1TXREGレジスターにロードすればいいみたいです。
ソース
MPLABではターゲットに【PIC32MX220F032B】が無かったので
泣く泣くMPLABXを使いました。ボーレートは9600bpsです。
データシートDS61107EのPage14Table21-2を参照しました。
実行は、文字列’abcdefg’と改行とNewラインをずーっとです。
プログラムの例はこちら↓>
#include <stdio.h> #include <plib.h> #include <p32xxxx.h> #include <stdlib.h> //== OSC:8MHz SYSCLK:40MHz=(OSC_8*MUL_20)/(PLLI_2*PLLO_2) ==== #pragma config FNOSC=FRCPLL, POSCMOD=OFF, FPLLIDIV=DIV_2 #pragma config FPLLMUL=MUL_20, FPBDIV=DIV_1, FPLLODIV=DIV_2 #pragma config FWDTEN=OFF, ICESEL=ICS_PGx2 //== void ==================================================== void U1string(unsigned char *tex, char count); //== string ================================================== unsigned char string_box1[15] = "abcdefg¥r¥n" ; //== main ==================================================== int main(void) { //== OSC ================================================= SYSTEMConfigPerformance(40000000); //40MHz //== PORT ================================================ TRISA = 0x00000000; TRISB = 0x00000000; //== UART ================================================ RPA0R = 0B0001; //U1TX_RPA0 U1MODE = 0x00000000; //Clear U1MODEbits.UARTEN = 1; //15_UART_Enable U1MODEbits.RTSMD = 1; //11_SimplexMode U1MODEbits.BRGH = 0; //3_StandardSpeed*16 U1STA = 0x00000000; //Clear U1STAbits.UTXEN = 1; //10_TX_enable U1BRG = 259; //U1BRG=(Fcy/(16*9600))-1 //======================================================== while(1) { U1string(string_box1,9); //delay_ms(200); //delay_us(1); }//while(1) }//int main(void) //== U1string ============================================================== void U1string(unsigned char *tex, char count) { char i; for(i=0; i<count; i++) { while(U1STAbits.UTXBF); U1TXREG = tex[i]; }//for(i=0; i<count; i++) }//void U1string(unsigned char *tex, char count)
ディスカッション
コメント一覧
まだ、コメントがありません