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

TODAY45 TOTAL270,561
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


▼ BASIC4MCU 후원업체 최신 정보 ▼

▲ BASIC4MCU 후원업체 최신 정보 ▲

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

페이지 정보

작성자 또그로 작성일2018-02-12 13:31 조회994회 댓글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

조회수 994

등록된 댓글이 없습니다.

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

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.

ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
질문 SoftwareSerial을 이용한 버튼 및 LED 작동 댓글[1] 새글 깅깅 18-10-19 6
답변 답변글 답변 : SoftwareSerial을 이용한 버튼 및 LED 작동 새글 master 18-10-19 3
질문 PIR 센서 감도조절 질문 새글 master 18-10-19 2
질문 저번에 초음파와 dc모터 관련 질문했던 사람입니다. 아직 문제가 잘 해결되지 않아서 올립니다. 새글 재갈이 18-10-19 6
답변 답변글 답변 : 저번에 초음파와 dc모터 관련 질문했던 사람입니다. 아직 문제가 잘 해결되지 않아서 올립니다. 댓글[3] 새글 master 18-10-19 8
질문 Nrf24 양방향 송수신 진동모터 작동관련 질문입니다! 댓글[1] 새글 A반장 18-10-19 8
질문 아두이노 조도센서 반응을 반대로 하고 싶어요! 댓글[2] 새글 코코포도 18-10-19 11
질문 아두이노 LED랑 스피커 동시에 작동하는 법 질문 새글 master 18-10-19 10
질문 원래 나와야하는 시리얼 모니터 사진 올립니다. 새글 찰스백작 18-10-19 8
질문 GPS추적기 소스주신거 안되서 문의드립니다. 소스첨부합니다. 댓글[3] 이미지새글첨부파일 찰스백작 18-10-19 15
질문 STM32 공부방법 댓글[2] 새글 DrVoid 18-10-19 14
질문 gps 소스1으로는 안될까해서 문의드립니다.. 댓글[1] 새글 찰스백작 18-10-19 12
질문 아두이노에서 서보모터와 dc모터 두가지를 함께 이용하고 싶습ㄴ다. 댓글[2] 새글 김주리 18-10-19 19
질문 gps 추적기 다시문의드립니다. 다시 소스좀 부탁드립니다..ㅠㅠ 댓글[2] 새글 찰스백작 18-10-18 23
질문 아두이노 led 제어 코딩 질문합니다. 새글 mini1004 18-10-18 11
게시물 검색

Privacy Policy
MCU BASIC ⓒ 2017