회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
4184 PADS HOTpads 9.3 설치 방법 문의 드립니다. 하경철 2538 2011.06.13
4183 PADS HOTpads 9.2 설치 도중에 에러 발생. 하경철 2522 2011.06.13
마이크로프로세서 HOTsrf-04 초음파 질문 혼합쥬스 2116 2011.06.11
4181 마이크로프로세서 HOTATMEGA64 전원 공급관련2 제갈군 2501 2011.06.11
4180 중고장터 HOTAtmega128, ISP, 블루투스모듈, RS232케이블, 모터기어박스 등각각팝니다 btnim 8177 2011.06.11
4179 마이크로프로세서 HOT타이머 인터럽트를 이용해 LED를 제어하는 소스인데요...1 rjmans 2183 2011.06.11
4178 마이크로프로세서 HOTatmega128 pro 소스질문이요 ^^ 공학도임돠 2689 2011.06.10
4177 PADS HOT패즈 9.3 크랙파일 부탁드려요1 BOHEM 2916 2011.06.10
4176 PADS HOTpads 9.2에서 만든 여러 거버 파일들을 merge하는 방법 알려주세요 빵돼지 2582 2011.06.09
4175 PADS HOT크아악.. 설치 자동종료 됩니다. ㅠ1 칠흑광자 1896 2011.06.08
4174 마이크로프로세서 HOTAVR의 ADC Clock과 sample rate ?2 송골 2377 2011.06.07
4173 마이크로프로세서 HOTAVR nested interrupt 송골 1910 2011.06.07
4172 PADS HOTPAD 설치 5번째 오류중 .ㅠㅠ1 칠흑광자 1996 2011.06.06
4171 Analog & Mixed-Signal 설계 HOT비교기 질문있습니다.5 신카레라이스 2630 2011.06.06
4170 마이크로프로세서 HOT초음파센서 소스관련 질문드립니다1 동래감자 2985 2011.06.05
4169 마이크로프로세서 HOT코딩을 2진법으로 하고있는데... 초싸이코 1519 2011.06.05
4168 마이크로프로세서 HOT안녕하세요 AVR에서 펄스 질문입니다.1 초싸이코 1638 2011.06.03
4167 PADS HOTpads 9.3 설치방법 사이다522 4219 2011.06.03
4166 PADS HOTPADS9.3 설치관련 문의 드립니다. 사랑연인 4615 2011.06.02
4165 마이크로프로세서 HOTAVR책소개좀 부탁드립니다ㅠ1 약곰탱이 1389 2011.06.02
Prev 1 ... 81 82 83 84 85 86 87 88 89 90 ... 295 Next
  • 약속을 잘하는 사람은 잊어버리기도 잘한다.
    - T.플러
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.