본문 바로가기

AVR 8BIT/통신(USART)

블루투스(FB155BC) LED 제어

안녕하세요 숭덕이 박제현입니다.

오늘 많이 삽질을 했습니다..

저녁에 와서 요즘 스트레스로 어깨가 많이 결려서 하루종일 침대에 누워있다가 이렇게 하면 안되겠다 싶어

주말에 올리기로 한 블루투스(FB155BC) 글을 올립니다.

현재 새벽 4:03분이네요 

컴파일은 코드비젼이고요 크리스탈은 14.7456 입니다. 이것때문에 많은 고생을 했다는...........

STM32만 매일 하다가 오랜만에 AVR 잡으니까 힘드네요 AVR은 무조건 16Mhz 인줄알았습니다. ^^

그래서 UBRR을 103으로 보레이트 9,600으로 했는데 아무리 해도 안되길래 이걸로 1시간 동안 고민했다는.....^^

소스는 쉽다보니...책에서 레지스터값만 찾아서 공부하시면 쉬울듯 합니다..


 

 SOURCE



#include <mega128.h>
#include <delay.h>

char rx;

interrupt[USART0_RXC]void usart0_rxc(void){
rx=UDR0;

레지스터에 데이터를 쓰면 송신 데이터버퍼 TXBn에 값이 써지고, UDRn 레지스터를 읽으면 데이터 버퍼 RXBn에
들어있는 내용이 읽어진다.

if(rx=='1')PORTC=1,delay_ms(300);
if(rx=='2')PORTC=2,delay_ms(300);
if(rx=='3')PORTC=4,delay_ms(300);
if(rx=='4')PORTC=8,delay_ms(300);
if(rx=='5')PORTC=16,delay_ms(300);
if(rx=='6')PORTC=32,delay_ms(300);
if(rx=='7')PORTC=64,delay_ms(300);
if(rx=='8')PORTC=128,delay_ms(300);

}

void main(void)
{

DDRC=0xff;
UCSR0B=0x98; //RXEN , TXEN Enable
UCSR0C=0x06; //8bit mode
UBRR0H=0;
UBRR0L=95;

 

UBRRL = (F_CPU/(UART_BAUD_RATE*16L)-1; // 보레이트 계산식입니다.

보레이트때문에 고생을 많이 했네요 14.7456Mhz로 계산결과 97이 나왔는데 데이터시트에는
95로 적혀있길래 95로 사용하였고요 또한 에러율은 0% 마음에 드네요 속도면서 크게 문제가
되지는 않을거 같습니다.

#asm("sei")

}


 

결과물



'AVR 8BIT > 통신(USART)' 카테고리의 다른 글

블루투스(FB155BC)를 이용한 CDS센서 값 USART 찍기  (0) 2011.05.24
ATMEGA USART 이론  (0) 2011.05.20