회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
109 PADS HOTpads 9.2 설치 도중에 에러 발생. 하경철 2527 2011.06.13
108 PADS HOT패즈 9.3 크랙파일 부탁드려요1 BOHEM 2919 2011.06.10
107 PADS HOTpads 9.2에서 만든 여러 거버 파일들을 merge하는 방법 알려주세요 빵돼지 2588 2011.06.09
106 PADS HOT크아악.. 설치 자동종료 됩니다. ㅠ1 칠흑광자 1899 2011.06.08
105 PADS HOTPAD 설치 5번째 오류중 .ㅠㅠ1 칠흑광자 1999 2011.06.06
104 PADS HOTpads 9.3 설치방법 사이다522 4225 2011.06.03
103 PADS HOTPADS9.3 설치관련 문의 드립니다. 사랑연인 4620 2011.06.02
102 PADS HOTPads layout에서 decal 불러오기 어떻게 하나요?1 난리법석 4199 2011.06.01
101 PADS HOT빌드업pcb 라우팅할대 via 설정 방법점 알려주세요~~~ 난몰라 2283 2011.05.31
100 PADS HOTcopper pour 수정하는 방법 좀...1 만내 3202 2011.05.26
99 PADS HOT안녕하세요...3 단추스프 1256 2011.05.25
98 PADS HOTPADS 9.3 설치방법 도움 부탁드립니다.2 shinjy82 3174 2011.05.20
97 PADS HOTorcad와 pads 의연동되는 프로그램이 있어 소개해드립니다.3 수내아트원 1642 2011.05.14
96 PADS HOTLibrary생성 시 필요한 조건은 어떤게 있을까요.2 깡생깡사 1980 2011.05.13
95 PADS HOTcopper Pour 시 Text 무시하는 방법좀 알려주세요~~2 스코프 1654 2011.05.12
94 PADS HOTPADS 9.3 라이센스 까지 팁!12 컴맹 14418 2011.05.11
93 PADS HOTPADS9.3 나도 설치 완료 앗싸 !!!1 빼빼로 4528 2011.05.09
92 PADS HOTPADS 9.3 Project2 컴맹 1888 2011.05.01
91 PADS HOTpads 9.3 설치법 부탁드립니다. 빅스 2095 2011.04.29
90 PADS HOTPADS 데칼 만들기 문위요^^2 컴맹 2425 2011.04.27
Prev 1 ... 4 5 6 7 8 9 10 11 12 13 14 Next
  • 서툰 의사는 한번에 한 사람을 해치지만, 서툰 교사는 130명을 해친다.
    - 보이어
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.