데이트 시트 수업이 긴 날이었습니다...!
이해하기 어려운 부분이지만
이해하려고 노력중입니다,.
TxD와 RxD를 봐둡니다.
오늘은 컴파일을 하면서 변수값 선언을 하는 것과 컴퓨터 간의 통신에 대해 배웠습니다.
일단,
컴파일을 하면서 변수값 선언을 하는 법을 먼저 보면
#include <stdio.h>
int main()
{
printf("%d\n",F_CPU);
return 0;
}
위와 같이 F_CPU라는 변수를 프린트하는데 변수의 값을 지정하지 않았으니
결과는
다음과 같은 에러 메세지가 나타나면서 컴파일 불가한 상태라는 결론이 나옵니다.
그렇지만 다른방법으로 한번 컴파일 해볼까요?
다음과 같이 입력하고 컴파일하면 컴파일이 가능합니다.
일단 저는 16000000을 입력하여 보았습니다.
그리고 실행시킨 후 결과를 보면
다음과 같이 입력한 값이 나옵니다.
일단 오늘 수업의 핵심은 통신에 관한것 입니다.
이론 수업을 통해서 통신에 시리얼과 패러럴이 있는것을 (어느정도)숙지하고 나서
기존에 프로그래밍 하던 디랙토리와 같은 디렉토리에 Usart.c 파일과 그에 대한 헤더파일을 만듭니다.
데이터 시트를 참고하여 메인 헤더파일에
#define UBRR0H (*((volatile unsigned char *)0xC5))
#define UBRR0L (*((volatile unsigned char *)0xc4))
#define UBRR1H (*((volatile unsigned char *)0xCD))
#define UBRR1L (*((volatile unsigned char *)0xCC))
#define UBRR2H (*((volatile unsigned char *)0xD5))
#define UBRR2L (*((volatile unsigned char *)0xD4))
#define UBRR3H (*((volatile unsigned char *)0x135))
#define UBRR3L (*((volatile unsigned char *)0x134))
#define UDR0 (*((volatile unsigned char *)0xC6))
#define UDR1 (*((volatile unsigned char *)0xCE))
#define UDR2 (*((volatile unsigned char *)0xD6))
#define UDR3 (*((volatile unsigned char *)0x136))
#define UCSR0A (*((volatile unsigned char *)0xC0))
#define UCSR0B (*((volatile unsigned char *)0xc1))
#define UCSR0C (*((volatile unsigned char *)0xC2))
#define UCSR1A (*((volatile unsigned char *)0xC8))
#define UCSR1B (*((volatile unsigned char *)0xC9))
#define UCSR1C (*((volatile unsigned char *)0xCA))
#define UCSR2A (*((volatile unsigned char *)0xD0))
#define UCSR2B (*((volatile unsigned char *)0xD1))
#define UCSR2C (*((volatile unsigned char *)0xD2))
#define UCSR3A (*((volatile unsigned char *)0x130))
#define UCSR3B (*((volatile unsigned char *)0x131))
#define UCSR3C (*((volatile unsigned char *)0x132))
를 추가합니다.
그에따라서 설정해야하는 값을
<Usart.c>에
#include "usart.h"
void USART0_Init()
{
UBRR0H=((OSC/(16*BAUD))-1)>>8;//분리가능
UBRR0L=((OSC/(16*BAUD))-1);
//UCSR0A=(0<<RXC)|(0<<TXC)|(0<<UDRE)|(0<<FE)|(0<<DOR)|(0<<UPE)|(0<<U2X)|(0<<MPCM);
UCSR0A=(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)|(0<<UCSZ1)|(1<<UCSZ0)|(1<<UCPOL);
}
위처럼 데이터시트를 참고하여 작성하고
<Usart.h>는
#ifdef __USART_H__
#define __USART_H__
#include "main.h"
#define OSC F_CPU
#define BAUD 115200
#endif //__USART_H__
위처럼 디파인 해줍니다.
그후 위의 데이터 시트에서 기억해둔 TxD와 RxD를 옆 컴퓨터와 교차해서 연결합니다. 그라운드도 서로 연결합니다.
위의 사진을 참고 합니다.
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
후니의 네트워크 이야기 258~314 (0) | 2016.03.22 |
---|---|
후니의 네트워크 이야기 2~257 (0) | 2016.03.22 |
20160316-업무일지-허도경-펌웨어 실습 LCD (0) | 2016.03.22 |
20160322_박진한_업무일지_펌웨어 실습 (0) | 2016.03.22 |
20163021-업무일지-이보원 펌웨어-usb 직접통신실습- (0) | 2016.03.22 |
20160321_노유찬_펌웨어실습(serial통신) (0) | 2016.03.22 |
20160318_김가연_업무일지_LCD출력 (0) | 2016.03.22 |
머신러닝 무료 ebook 12개 (0) | 2016.03.22 |