회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
272 마이크로프로세서 HOTcan통신초기화1 あさひ 1286 2008.07.01
271 마이크로프로세서 HOT균형로봇(자이로 센서 이용) 자료 어디 없을까요.ㅠㅠ1 콜록 1802 2008.06.30
270 마이크로프로세서 HOT서보 모터 질문이여 안아줘잉 632 2008.06.27
269 마이크로프로세서 HOT서보 모터 질문이여1 안아줘잉 549 2008.06.25
268 펌웨어 & 코딩언어 HOTacc.h 오류문제입니다.ㅠ1 미스터조ㅋ 872 2008.06.21
267 마이크로프로세서 HOT신호등을 받았는데요..1 레드스카이 581 2008.06.21
266 마이크로프로세서 HOTds1620을 이용한 온도센서제어를 하다...ㅜ 맹우기 1355 2008.06.20
265 머신러닝, AI & 알고리즘 HOT지하철 최단거리 알고리즘은?2 지워나 2876 2008.06.20
264 마이크로프로세서 HOTEPROM에 데이터쓰기?2 대박 864 2008.06.19
263 마이크로프로세서 HOT스위치는 어떻게 제어해야 되나요?1 할수있다 906 2008.06.14
262 마이크로프로세서 HOTavr128을 배워보려고합니다...3 가진e 662 2008.06.13
261 마이크로프로세서 HOT8051온도계 자료좀 올려주세요^^3 민하박 4589 2008.06.12
260 마이크로프로세서 HOT인터럽트에 대해서...!!!!!ㅡㅡ3 맹우기 875 2008.06.12
259 마이크로프로세서 HOT라인트레이서질문합니다. 무한질주 789 2008.06.10
258 마이크로프로세서 HOTavr128 lcd때문에 미치겠습니다.ㅜㅜ5 콜록 1141 2008.06.08
257 마이크로프로세서 HOT코드를 쉽게...2 paloo8 600 2008.06.05
256 마이크로프로세서 HOT근데 이거 다운로드 어떻게 하는겁니까???2 navy 638 2008.06.04
255 마이크로프로세서 HOT[질문] 초음파센서 srf04의 거리에 따른 led 불 켜기1 njuikm 5574 2008.06.04
254 마이크로프로세서 HOT서로다른 8051을 쓰다보니까 출력이 너무 햇갈립니다.5 09xz 705 2008.06.03
마이크로프로세서 HOT소스 해석좀......2 용고고고 1504 2008.06.03
Prev 1 ... 40 41 42 43 44 45 46 47 48 49 ... 58 Next
  • 약속을 지키는 최선의 방법은 약속을 하지 않는 것이다.
    - 나폴레옹
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.