질문게시판 > atmega328p에서 uart를 이용한 데이터 수신

TODAY762 TOTAL375,788
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | atmega328p에서 uart를 이용한 데이터 수신

페이지 정보

작성자 또그로 작성일2018-02-12 13:31 조회1,244회 댓글0건

본문

	

안녕하세요. 처음 질문드립니다. 

제목 그대로 avr atmega328p를 이용했구요 프로그램은 atmelstudio7.0입니다.

데이터 송수신은 ic에서 tx는 안하고 rx(센서값)만 합니다.
레이다 센서(kestrel radar sensor) -> rs232포트로 uart 통신 -> atmega328p -> 74hc595-> PC/FND


질문1. 레이더 센서에서 오는 데이터값(속도)을 하이퍼터미널로 보고싶은데 아무것도 뜨질 않습니다.

질문2. 제 동작을 센서가 인식하여 움직일때마다 무언가 데이터를 넘겨주는데,
숫자로 FND에 계속같은 숫자들(ex.18,24,26)만 표기되네요ㅜㅜ 

질문3. UBRR0L = MYUBRR // boudrate 9600 여기서 값을 바꿀때마다 또 숫자만 바뀌긴 했지만  일정 숫자만 보내주는건 변함이 없습니다. 저는 속도를 알고싶을뿐인데 데이터가 왜변하는거죠??

 

 

 

/*

 * UART_START.c

 *

 * Created: 2018-02-09 오전 10:25:47

 * Author : Administrator

 */ 

 

#include <avr/io.h>

#include <avr/interrupt.h>

#include <stdio.h>

 

 

#define F_CPU 16000000UL // Clock Speed

#define BAUD 9600

#define MYUBRR F_CPU/16/BAUD-1

 

#define SHIFT_REGISTER DDRB

#define SHIFT_PORT PORTB

#define DATA (1<<PB3)     //MOSI (SI)

#define LATCH (1<<PB2)    //SS   (RCK)

#define CLOCK (1<<PB5)    //SCK  (SCK)

 

volatile unsigned char Font[10] = {0b00111111,0b00000110,0b01011011,0b01001111,0b01100110, //0,1,2,3,4

0b01101101,0b01111101,0b00100111,0b01111111,0b01101111}; //5,6,7,8,9

 

volatile unsigned char Fontdot[10] = {0b10111111,0b10000110,0b11011011,0b11001111,0b11100110, //0,1,2,3,4

0b11101101,0b11111101,0b10100111,0b11111111,0b11101111}; //5,6,7,8,9

 

 

int speed_1,speed_10,speed_100,temp ;

 

 

 

 

 

void USART_Init( void)

{

/*Set baud rate */

UBRR0H = 0;

UBRR0L =MYUBRR;

UCSR0A = 0X00;

UCSR0B = 0X18;        // USART Enable

UCSR0C = 0X06;        // No psrity, 1stop bit, 8bit data

}

 

void USART_Transmit( unsigned char data )

{

/* Wait for empty transmit buffer */

while ( !( UCSR0A & (1<<UDRE0)) )

;

/* Put data into buffer, sends the data */

DDRD = 0x00;

DDRB = 0xFF;

UDR0 = data;

speed_100 = ((data / 100) % 10) ;  //100의 자리

speed_10 =((data / 10) % 10) ; // 10의 자리

speed_1 = (data % 10) ; //1의 자리

sprintf("입력값: %d\r\n",data);

//Setup IO

SHIFT_REGISTER |= (DATA | LATCH | CLOCK); //Set control pins as outputs

SHIFT_PORT &= ~(DATA | LATCH | CLOCK);        //Set control pins low

 

//Setup SPI

SPCR = (1<<SPE) | (1<<MSTR);  //Start SPI as Master

 

//Pull LATCH low (Important: this is necessary to start the SPI transfer!)

SHIFT_PORT &= ~LATCH;

//Shift in some data

SPDR=Font[0]; while(!(SPSR&(1<<SPIF))); // 0

SPDR=Font[0]; while(!(SPSR&(1<<SPIF))); // 0

if(data>99){ // 99가 넘으면 fnd 에 9900 표시

SPDR=Font[9]; while(!(SPSR&(1<<SPIF))); // 9

SPDR=Font[9]; while(!(SPSR&(1<<SPIF))); // 9

}

else{

SPDR=Font[data%10]; while(!(SPSR&(1<<SPIF))); // 1의 자리

SPDR=Font[data/10]; while(!(SPSR&(1<<SPIF))); // 10의 자리

}

SHIFT_PORT |= LATCH;

SHIFT_PORT &= ~LATCH;

}

 

uint8_t receiveByte(void) {

while(!(UCSR0A&(1<<RXC0))); // 수신 되기를 기다림

return UDR0;                                /* return register value */

}

 

int main( void )

{

USART_Init();

while(1)

{

USART_Transmit(receiveByte());

}

}

 

라고 저의 부족한 지식에 고수님의 도움을 받고자 지식인에 올려 키트님의 도움을 받았습니다.
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=104&docId=294528715    //지식인 주소 

 아래는 약간 수정된 코드입니다.
또한 데이터 포맷을 추가로 올리며, 데이터값이 바이너리값이나 헥사값으로도 보내지는지 확인하여봤지만 보내주는 데이터는 이상하게 출력되지 않았습니다.

부족하고 긴 글 읽어주셔서 감사합니다.

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 0

조회수 1,244

등록된 댓글이 없습니다.

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은 질문게시판에서만 작성 가능합니다. 스태프 19-01-15 25
공지 사이트 이용 안내 댓글[4] master 17-10-29 4675
질문 마스터님 봐주세요~ 댓글[2] 이미지새글첨부파일 현이꽃 19-01-22 13
답변 답변글 답변 : 마스터님 봐주세요~ 댓글[2] 새글 master 09:50 11
질문 c언어 조언 해주세요. 댓글[2] 새글 c린이 19-01-22 13
질문 손문일 새글 손문일 19-01-22 15
답변 답변글 답변 : 손문일 새글 master 19-01-22 8
답변 답변글 답변 : 손문일 새글 손문일 19-01-22 5
답변 답변글 답변 : 답변 : 손문일 새글 master 19-01-22 8
질문 블루투스 조이스틱 질문좀요 새글 현이꽃 19-01-22 9
답변 답변글 답변 : 블루투스 조이스틱 질문좀요 댓글[1] 새글 master 19-01-22 12
질문 atmega128 풀업 스위치 댓글[2] 새글 c린이 19-01-22 13
질문 master님 스테핑 모터 3개 제어 관련 문의드립니다. 이미지새글첨부파일 원스타 19-01-22 19
답변 답변글 답변 : master님 스테핑 모터 3개 제어 관련 문의드립니다. 댓글[4] 새글 master 19-01-22 12
답변 답변글 답변 : 답변 : master님 스테핑 모터 3개 제어 관련 문의드립니다. 새글 원스타 19-01-22 8
답변 답변글 답변 : 답변 : 답변 : master님 스테핑 모터 3개 제어 관련 문의드립니다. 댓글[1] 새글 master 19-01-22 11
질문 아두이노 스케치 반복문 질문 master 19-01-20 16
질문 스위치 회로 댓글[2] 이미지 동지 19-01-19 26
질문 LCD 회로가 바뀌었는데 이미지첨부파일 Lami 19-01-19 17
답변 답변글 답변 : LCD 회로가 바뀌었는데 master 19-01-20 14
질문 C언어 댓글[4] c린이 19-01-18 32
질문 아두이노 하나로 2개의 센서 데이터 받기 질문 master 19-01-18 16
질문 ATmega128에서 TWI(I2C)에 대한 코딩 질문입니다!! 댓글[2] 이미지첨부파일 질문Y 19-01-15 36
질문 아두이노 소프트웨어 시리얼 질문 댓글[2] 이미지첨부파일 hktsakura 19-01-15 26
답변 답변글 답변 : 아두이노 소프트웨어 시리얼 질문 댓글[5] 이미지 master 19-01-15 34
답변 답변글 답변 : 답변 : 아두이노 소프트웨어 시리얼 질문 댓글[4] master 19-01-15 32
답변 답변글 답변 : 답변 : 답변 : 아두이노 소프트웨어 시리얼 질문 댓글[3] master 19-01-16 28
질문 아두이노 적외선센서 2개를 이용해서 출입인원 카운팅을 하려고 합니다. 배우러왔습니다 19-01-14 25
답변 답변글 답변 : 아두이노 적외선센서 2개를 이용해서 출입인원 카운팅을 하려고 합니다. 댓글[1] master 19-01-15 19
답변 답변글 답변 : 답변 : 아두이노 적외선센서 2개를 이용해서 출입인원 카운팅을 하려고 합니다. 댓글[1] 배우러왔습니다 19-01-15 12
게시물 검색

2019년 1월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2017
모바일버전으로보기