회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
125 Allegro & OrCAD HOTOrcad 16.3 설치 파일 구할수 있나요?3 cjhwa11 2826 2011.08.09
124 Allegro & OrCAD HOT고수님들의 도움좀 바랍니다.1 하늘사랑73 1696 2011.07.25
123 Allegro & OrCAD HOTORCAD 16.3 설치 ex1 nicdday 5175 2011.07.20
122 Allegro & OrCAD HOTOrCAD 16.3 설치시 오류 메세지..... 좀 도와 주세요. Smileholic 3287 2011.07.18
121 Allegro & OrCAD HOTCadence orcad 16.3 PCD Designer에서 BNC 커넥터와 SMA커넥터의 풋프린트 값을 알고 싶습니다.1 김용민 3096 2011.07.07
120 Allegro & OrCAD HOTOrcad Layout에서 풋프린트 끼리 그룹화나 합치는 기능이 가능한가요? Isolesti 1805 2011.07.06
119 Allegro & OrCAD HOTorcad 16.3 win7(64)에서 인스톨이 안되요 도와주세요!!!!!!3 초보자1 2748 2011.07.02
118 Allegro & OrCAD HOTnever0682..orcad sst가 안보여여....4 개여울 1696 2011.05.24
117 Allegro & OrCAD HOTorcad 10.5에 대해 궁금한 점이 있습니다.4 궁금한학생 2273 2011.05.20
116 Allegro & OrCAD HOTOrcad 16.2 PCB edit componet 교체방법 가르쳐주세요 빼빼로 1972 2011.05.18
115 Allegro & OrCAD HOTORCAD Portable 버전 특징2 안전제일 4838 2011.05.11
114 Allegro & OrCAD HOTnetlist 작서 후 경고 메세지 해석1 비행중 2573 2011.04.26
113 Allegro & OrCAD HOTOrCAD 16.3 create netlist 만드는 방법좀 알려주세요 ㅠㅠ2 컴맹 3779 2011.04.26
112 Allegro & OrCAD HOTorcad 16.0 shooters 설치하고 나서 parametric sweep이 활성화가 안됩니다1 빵돼지 3636 2011.04.19
111 Allegro & OrCAD HOT이 회로도의 footprint값을 알 수 있을까요?2 amaikaze 2890 2011.04.08
110 Allegro & OrCAD HOTtext 폰트를 바꿀수 있는지요?2 만내 1891 2011.04.06
109 Allegro & OrCAD HOT거버파일은 있습니다. 질문좀 ㅠㅠ2 마모루 2071 2011.03.29
108 Allegro & OrCAD HOT부품번호 자동수정에 관한 질문입니다.1 쨍용 1874 2011.03.24
107 Allegro & OrCAD HOTvia 크기 바꾸는 방법??5 한방부르스 2729 2011.03.23
106 Allegro & OrCAD HOTPCB Editor의 설정 변경방법 문의 (Window7-64bit)1 외날 2321 2011.03.08
Prev 1 2 3 4 5 6 7 8 9 10 ... 12 Next
  • 입은 화의 문이요, 혀는 이 몸을 베는 칼이다. 입을 닫고 혀를 깊이 간직하면 몸 편안히 간 곳마다 튼튼하다.
    - 전당시
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.