회원가입 ID/PW 찾기
AA

거리 감시 측정해서 LED랑 LCD 창에 소거리값 계산해서 나오게 하고싶은데 제힘으로 는 부족한듯 싶네요

이소스로 구현할려고 하는데 안맞는게 많구 레지스터 값 손보다가 계속 산으로 가는것같아서 도움을 요청합니다.

포트는 D를 쓰고 INT 0,(에코)1(트리거) 쓰구 있구 LCD는 8*2 CLCD 입니다..

통신까지는 아직 무리겠고 LED 라도 어떻게 켜ㅂ봣으면 하는 바램입니다..

소스 올려드림 고수분들 부탁점 드릴게요

LED 출력은 PORTB 에 걸려잇습니다.

LCD 는 PORTA를 쓰구요


/******************************************************************************/
/* ULTRA SONIC CONTROL PROGRAM TEST */
/* HIPER TERMINEAL TEST PROGRAM */
/* */
/******************************************************************************/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/delay.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

//트리거 출력 포트
#define DDR_SEND DDRB
#define PORT_SEND PORTB
#define PIN_SEND PINB

//에코 펄스 입력 포트
#define DDR_RECV DDRD
#define PORT_RECV PORTD
#define PIN_RECV PIND

#define CPU_CLOCK 16000000
#define TICKS_PER_SEC 1000000

#define BAUD_RATE 19200
#define BAUD_RATE_L (CPU_CLOCK / (16l *BAUD_RATE))-1
#define BAUD_RATE_H ((CPU_CLOCK / (16l *BAUD_RATE))-1)>>8

////////////////////////////////////////////[전역변수]//////////////////////////
volatile unsigned long int tic_time;
volatile unsigned long int tCnt = 0L;
unsigned char buf1[10];
unsigned long int start_time;
unsigned long int end_time;
unsigned long int total;


////////////////////////////////////////////[초기화]////////////////////////////
void MCU_init(void)
{
DDR_SEND = 0xFF;
PORT_SEND = 0x01;

UBRR1L =(unsigned char)BAUD_RATE_L;
UBRR1H =(unsigned char)BAUD_RATE_H;

UCSR1C = (0<<UPM1)|(0<<UPM0)|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);
UCSR1B = (1<<TXEN) | (1<<RXEN) | (0<<UCSZ2);//병렬통신

EICRA = (1<<ISC01)|(0<<ISC00); //상승 에지 체크
EIMSK = (1<<INT0); //인터럽트 0번 활성화

TCCR0 = (0<<CS02)|(0<<CS01)|(1<<CS00); //분주비 세팅(0)
TCNT0 = 256-(CPU_CLOCK/TICKS_PER_SEC); //타이머 초기화
TIMSK = (0<<OCIE0)|(1<<TOIE0); //PWM 세팅/카운터 활성화
sei();
}

////////////////////////////////////////////[딜레이 us]/////////////////////////
void delay(unsigned long int usec)
{
tic_time = 0L;
while(usec > tic_time);
}

////////////////////////////////////////////[하이퍼 전송]///////////////////////
void uart_send_byte(unsigned char byte)
{
while(!(UCSR1A &(1<<UDRE1)));
UDR1 = byte;
}

////////////////////////////////////////////[문자열 분석]///////////////////////
void uart_send_string(unsigned char *str, unsigned char len)
{
int i;
for(i=0; i<len; i++)
{
if(!(*(str+i)))
{
break;
}
uart_send_byte(*(str+i));
}
}

SIGNAL(SIG_OVERFLOW0)
{
tic_time++;
tCnt++;
TCNT0 = 256 - (CPU_CLOCK / TICKS_PER_SEC);
}

//에코 펄스 입력
SIGNAL(SIG_INTERRUPT0)//receive
{
end_time = tCnt; //카운터값 저장
tCnt = 0L; //카운터 초기화
total = ((end_time - start_time) / 10) + 3; //거리 계산
}

//트리거 출력
void send(void)
{
PORT_SEND = 0x00;
delay(10);
PORT_SEND = 0xFF;
tCnt = 0L;
start_time = tCnt;
}

int main(void)
{
MCU_init();
while(1)
{
send();
delay(50);
sprintf(buf1," [%ld]cm\t\t\t",total); //거리 산출
uart_send_string(buf1,sizeof(buf1));
delay(3000);
}
return 1;
}

댓글 0

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
373 전기전자 아무거나 도와주세요! 제발. 조범준 344 2012.01.19
372 전기전자 아무거나 HOT다량의 RGB LED 제어!!!!!!!!!!!! 아이디어좀 주세요!!!1 꼬꼴리 689 2012.01.10
371 전기전자 아무거나 숨쉬기 견우7 301 2011.12.01
370 전기전자 아무거나 HOT소리 관련 역학... 질문1 견우7 788 2011.11.18
369 전기전자 아무거나 HOTVHDL로 60초를 표현하는 방법 소스인데,, 어떻게 해야 할까요? 안녕하세요. 1107 2011.11.18
368 전기전자 아무거나 HOT고전역학과 현대역학의 정의및 차이2 견우7 769 2011.11.10
367 전기전자 아무거나 HOT열역학 2법칙1 견우7 1007 2011.11.02
366 전기전자 아무거나 HOT단편적인 과학 지식... 견우7 614 2011.10.31
365 전기전자 아무거나 HOT전류 측정시 수십 [옴]의 저항을 전류계에 직렬로 연결하여 측정하면 오차가 많이 발생한다 전류계의 내부저항이 측정 오차에 미치는 영향을 설명해주세요 !! ㅜㅜ1 국화보리두충차 1688 2011.10.06
364 전기전자 아무거나 HOTfpga에 대해 문의좀2 마모루 1322 2011.09.07
363 전기전자 아무거나 HOT하드웨어 개발 2년차로서의 안타까운 질문 하나만 하겠습니다.1 마모루 1449 2011.09.07
362 전기전자 아무거나 HOT485통신에대한 궁금증2 카나데 2627 2011.08.20
361 전기전자 아무거나 HOT로봇 청소기 반도체 소자 어떤게 들어가나여??2 다보기 1512 2011.06.30
360 전기전자 아무거나 HOT적외선 센서1 흐기미 1786 2011.06.29
359 전기전자 아무거나 HOT그래픽 LCD 관련 질문드립니다! 랜시스 1493 2011.06.24
358 전기전자 아무거나 HOT윈도우 7인데요,,,pspice가,,,1 약곰탱이 2740 2011.06.02
357 전기전자 아무거나 HOT레벨메타로 전압, 데시벨 읽는 방법이 궁금 합니다. 슈팅 2406 2011.06.01
356 전기전자 아무거나 HOTPspice를 이용해서1 멋진하나 1751 2011.05.26
355 전기전자 아무거나 HOT정말 완전 초보라서.... viryu 1817 2011.04.29
354 전기전자 아무거나 HOTAutoCAD,OrCAD 혹시 프로그램 충돌 관련있는지 질문 올립니다.1 컴맹 2235 2011.04.22
Prev 1 2 3 4 5 6 7 8 9 10 11 ... 25 Next
  • 인생의 최고 불행은 인간이면서 인간을 모르는 것이다.
    - 파스칼
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.