2013年8月10日土曜日

Pic : RS232 communication

RS232 communication on PIC

I will make the remote controller device by using XBEE. Before that, PC and PIC communication is tested.


18f2320 is used.
RX/TX port are used and TRISCbits.RC7 is set to be input I/O and TRISCbits.RC6 is set to output one. Also TRISCbits.RC6 is set to high.
Please check below setting is set correctly.
• SPEN (RCSTA<7>) bit must be set (= 1)
• TRISC<7> bit must be set (= 1)
• TRISC<6> bit must be cleared (= 0)

Below program needs windows' hyper terminal input.
10MHz clock is multiplied by config. HSPLL so clock is 40MHz.
Then, baud rate is 115.2kHz. 
//////////////////////////////////
//main program
//////////////////////////////////
#include <p18f2320.h>
#include <i2c.h>
#include <usart.h>
#include "i2cLCD.h"
#include "wait.h"

#pragma config OSC=HSPLL, FSCM=OFF, IESO=OFF, PWRT=ON
#pragma config BOR=ON, BORV=27, WDT=OFF, WDTPS=1024
#pragma config MCLRE=ON, PBAD=DIG, CCP2MX=C1
#pragma config STVR=OFF, LVP=OFF, DEBUG=OFF
#pragma config CP0=OFF, CP1=OFF, CP2=OFF, CP3=OFF, CPB=OFF
#pragma config CPD=OFF, WRT0=OFF, WRT1=OFF, WRT2=OFF, WRT3=OFF
#pragma config WRTB=OFF, WRTC=OFF, WRTD=OFF, EBTR0=OFF
#pragma config EBTR1=OFF, EBTR2=OFF, EBTR3=OFF, EBTRB=OFF

void main(void)
{
char test[]="AQM0802A";
char inputFromPC[] = "From PC";
char inputMsg[]="\r\nInput 5 characteristic= ";
char bufLcd[10]={0,0,0,0,0,0,0,0,0,0};

//I2C initialization
TRISC = 0x18;
SSPADD = 24; //MCLK40MHz / (4*(SSPAD+1)) = 400khz
  SSPCON1 = 0b00101000;

wait_ms(100);
lcdIni();

lcdCommand(LCD_1ST_LINE);
lcdPrintSting(test);

wait_ms(200);
lcdCommand(LCD_CLEAR);

//USART
TRISC |= 0x80;
LATC = 0x40; 
RCSTAbits.SPEN=1;
OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF &
USART_ASYNCH_MODE & USART_EIGHT_BIT &
USART_CONT_RX & USART_BRGH_HIGH,21);

while(1)
{
putsUSART(inputMsg);
getsUSART(bufLcd,5);
lcdCommand(LCD_CLEAR);
wait_ms(2);
lcdCommand(LCD_1ST_LINE);
lcdPrintSting(inputFromPC);
lcdCommand(LCD_2ND_LINE);
lcdPrintSting(bufLcd);
}
}

0 件のコメント:

コメントを投稿