본문 바로가기
코스웨어/16년 스마트컨트롤러

20160322_김가연_업무일지_USART Rx Tx 시리얼 통신

by 알 수 없는 사용자 2016. 3. 23.
728x90
반응형

어제는 컴퓨터 양측간 통신을 하였다면

오늘은 아트메가와 통신 해보았습니다.


일단

포트를 연결합니다.


그리고 UART0 몰렉스 3핀을 찾아서 연결합니다.



옆은 UART1 입니다.

그리고

window키+Pausw Break키를 눌러 장치관리자에서 포트번호가 무엇인지 기억해둡니다.

전 COM5 입니다.


그리고 소스를 수정합니다.

<USART.c>


#include "usart.h"

void USART0_Init(void)
{
    UBRR0H = (unsigned long)((OSC/(16.0*BAUD))-0.5)>>8;
   UBRR0L= ((OSC/(16.0*BAUD))-0.5);
  
    //UCSR0A = (0≪RXC)|(0≪ TXC)|(0≪ UDRE)|(0≪ FE)|(0≪ DOR) |(0≪UPE)|(0≪ U2X)|(0≪ MPCM);
    UCSR0B = (0<<RXCIE)|(0<< TXCIE)|(0<< UDRIE)|(1<< RXEN)|(1<< TXEN) |(0<<UCSZ2)|(0<< RXB8)|(0<< TXB8);
    UCSR0C=(0<<UMSEL1)|(0<<UMSEL0)|(1<<UPM1)|(1<<UPM0)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0)|(0<<UCPOL);
  
}

unsigned char USART0_Rx(void)
{
    while(((1<<RXC) & UCSR0A)==0);
  
    return UDR0;
    
}

void USART0_Tx(unsigned char ucData)// 이해 ㄴㄴ
{
    while(((1<<UDRE) & UCSR0A)==0);
  
    UDR0=ucData;
    
}


void USART0_Str(const char *cString)//문자열 전송함수 //아트메가 6핀 몰렉스
{

  while(*cString!=0)//!=같지 않음
  {
    USART0_Tx(*cString);
    ++cString;
  }
}


헤더파일에 새로 만든 함수들을 추가합니다.

쁘띠를 킨상태로 AVR전원을 키면 메세지가 나타나게 하기위해서 메인함수를 수정합니다.

<MAIN.c>

int main(void)
{  
  unsigned char ucData;

  LCD_Init();
  USART0_Init();

  USART0_Str("AVR ON ");
  
  while(1)//
  {
    ucData=USART0_Rx();//함수호출
    LCD_Data(ucData);
  }
  
  return 0;
}

그 다음,

쁘띠를 켜서



시리얼에 체크하고 아까 기억해 두었던 포트번호와 지정해둔 숫자를 입력합니다.

이것은 저장이 가능하니 저장해서 사용하면 편합니다!!!!

아까 설정한 것처럼 AVR 전원을 키면



쁘띠에 'AVR ON' 이라는 메세지가 나타납니다.



 



작동영상 입니다.


728x90