회원가입 ID/PW 찾기
AA

초음파 센서를 이용하여 10cm 이하에서는 led에 불이 들어 오게 할려고 하는데....

잘 않되네여...

소스 해석이랑 어디가 잘 못 되었는지 분석좀 부탁 드림 니다....ㅜ

atmega128과 srf-05를 이용하였습니다. .



#include <avr\io.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <avr\signal.h>
#include <avr\interrupt.h>
#include <math.h>

 

typedef unsigned char u08;

volatile long TempTime,distance;
unsigned long TimeCnt;
void TX0_char(u08 );

SIGNAL(SIG_OVERFLOW3)
{
 TimeCnt++;
}
SIGNAL(SIG_INTERRUPT4)     /* forward UI Sensor Interrupt */
{
 TempTime=TimeCnt*4369+TCNT3/15;
}

void Delay_us(unsigned char time_us)   /* time delay for us */
{
 register unsigned char i;
 for(i = 0; i < time_us; i++)    // 4 cycle +
    {
  asm volatile(" PUSH  R0 ");    // 2 cycle +
  asm volatile(" POP   R0 ");    // 2 cycle +
  asm volatile(" PUSH  R0 ");    // 2 cycle +
  asm volatile(" POP   R0 ");    // 2 cycle +
  asm volatile(" PUSH  R0 ");    // 2 cycle +
  asm volatile(" POP   R0 ");    // 2 cycle = 16 cycle = 1 us for 16MHz
    }
}

void Delay_ms(unsigned int time_ms)    /* time delay for ms */
{
 register unsigned int i;
 for(i = 0; i < time_ms; i++)              //C - > A (입력) , E -> D (출력)
    {
  Delay_us(250);
  Delay_us(250);
  Delay_us(250);
  Delay_us(250);
    }
}

void MCU_initialize(void)    /* initialize ATmege128 MCU */
{

 MCUCR = 0xC0;      // enable external memory and I/O
 XMCRA = 0x00;      // 0x1100-0xFFFF=1 wait
 XMCRB = 0x84;      // enable bus keeper, use PC7-PC4 as I/O port
 //DDRB = 0xFF;      // PORTB = output, PB5 = OCR1A , PB6 = OCR1B
 //PORTB = 0x00;
 DDRA = 0xFF;      // PORTc = output, PC7~PC4 : UI Output
 PORTA = 0x00;
 //DDRD = 0x1F;      // PD4 = CW, PD0 = CCW
 //PORTD = 0x00;
 DDRD = 0x00;      // PORTE = input, PE7~PE4 : UI Interrupt Input
 PORTD = 0x00;

 
 //DDRF = 0xff;      // PORTF = input
 //PORTF = 0x01;

 TCCR1A = 0xAA;      // Fast PWM mode of timer1
 TCCR1B = 0x1A;
 TCCR1C = 0x00;
 ICR1 = 19999;      // f(PWM) = 16MHz/8/20000 = 100Hz, T(PWM) = 10ms

        TCCR3A=0x00;      // Normal mode of timer3
 TCCR3B=0x02;      // f(PWM) = 16MHz/8 = 2MHz
 TCCR3C=0x00;
 TCNT3H=0x00;
 TCNT3L=0x00;

 OCR1A =0;
 OCR1B =0;
 OCR1C =0;

    ETIMSK=0x00;
    EIMSK=0x00;

 sei();        // global interrupt enable

}

long calc_distance(long val)      /* Calculate UI Distance */
{
 long distance;

 distance=(val*340*0.001/2);
 return (distance);
}

void ready_uisensor(void)       /* UI transmit */
{
       
 int i,j;

        ETIMSK=0x40;
        EIMSK=0x70;
        Delay_ms(10);

  PORTA |= 0x10;
  for(i=0;i<800;i++){}
  PORTA &=~(0x10);
  for(j=0;j<20;j++)
  {
   for(i=0;i<800;i++){}

  }
  TCNT3H=0x00;
  TCNT3L=0x00;
}

void Ultra_check(void)        /* UI Receive & transmit */
{

  if(TempTime)
  {
   ETIMSK=0x00;
   EIMSK=0X00;
   
   distance=calc_distance(TempTime);
        }
   

  if(distance < 10)
   {
               PORTC = 0x01^PORTC;
  ready_uisensor();
        
                }

 
 }

 

int main(void)
{


        MCU_initialize();
        Delay_ms(1000);

 
        while(1){
                ready_uisensor();
                Delay_ms(50);
                Ultra_check();
                Delay_ms(50);


 }


        return 0;

}

 

댓글 2
  • No Profile
         PORTC = 0x01^PORTC;

    led 를 켰다 껏다 하려고 한건가요??

    사용법을 알고 하신건지요?????

  • No Profile

    정확히 분석하지 않았지만

    프로그램에서 사용하는 단위가 10미터인지 10cm인지 확인해보세요.

    cal_distance 계산법확인해보시고요

    이런부분이 다 맞다면 avr 레지스트리 세팅이 잘못된거겠지요.

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

search
번호 분류 제목 글쓴이 조회 수 날짜
228 마이크로프로세서 HOTEPROM에 데이터쓰기?2 대박 863 2008.06.19
227 마이크로프로세서 HOT스위치는 어떻게 제어해야 되나요?1 할수있다 898 2008.06.14
226 마이크로프로세서 HOTavr128을 배워보려고합니다...3 가진e 662 2008.06.13
225 마이크로프로세서 HOT8051온도계 자료좀 올려주세요^^3 민하박 4583 2008.06.12
224 마이크로프로세서 HOT인터럽트에 대해서...!!!!!ㅡㅡ3 맹우기 873 2008.06.12
223 마이크로프로세서 HOT라인트레이서질문합니다. 무한질주 784 2008.06.10
222 마이크로프로세서 HOTavr128 lcd때문에 미치겠습니다.ㅜㅜ5 콜록 1136 2008.06.08
221 마이크로프로세서 HOT코드를 쉽게...2 paloo8 599 2008.06.05
220 마이크로프로세서 HOT근데 이거 다운로드 어떻게 하는겁니까???2 navy 635 2008.06.04
219 마이크로프로세서 HOT[질문] 초음파센서 srf04의 거리에 따른 led 불 켜기1 njuikm 5556 2008.06.04
218 마이크로프로세서 HOT서로다른 8051을 쓰다보니까 출력이 너무 햇갈립니다.5 09xz 702 2008.06.03
마이크로프로세서 HOT소스 해석좀......2 용고고고 1497 2008.06.03
216 마이크로프로세서 HOTkeil 8051 c error 인데요...좀 도와주세요...1 ruddlf 674 2008.06.01
215 마이크로프로세서 HOT스테핑 모터 구동 관련 질문// 뽀이뽀이 1360 2008.05.30
214 마이크로프로세서 HOTavr128 타이머 소스 순서2 콜록 1321 2008.05.26
213 마이크로프로세서 HOT좀도와주세요..2 난다리 610 2008.05.25
212 마이크로프로세서 HOT8051내부 코어 작동원리 ? starleea 685 2008.05.25
211 마이크로프로세서 HOT8051로 온도계를 구현 해 볼려고 하는데요1 sped 720 2008.05.21
210 마이크로프로세서 HOT8051 FNDST 제어질문이요.1 09xz 580 2008.05.14
209 마이크로프로세서 HOTcan 통신해보신분....8 あさひ 2315 2008.05.12
Prev 1 ... 34 35 36 37 38 39 40 41 42 43 ... 50 Next
  • 재미가 없다면 왜 그걸 하고 있는가?
    - 제리 그린필트
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.