디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

형들 avr studio로 초음파센서 코딩되있는건데 분석 좀..

01(211.108) 2010.06.06 14:00:44
조회 343 추천 0 댓글 6

#include <avr/io.h>
#include <avr/interrupt.h>

#define PE4_Clear (PORTE &= 0xEF)
#define PE4_Set  (PORTE |= 0x10)
#define PE4_IN  (DDRE &= 0xEF)
#define PE4_OUT  (DDRE |= 0x10)

#define LED_ON   (PORTA |= 0x01)
#define LED_OFF      (PORTA &= 0xFE)

#define TEMPERATURE 25

unsigned short tick=0, pulse_check=0, pulse_end=0;

void us_delay(unsigned int us_time)
{
 unsigned int i;

 for(i=0; i<us_time; i++) // 4 cycle +
 {
  asm("PUSH R0"); // 2 cycle +
  asm("POP R0");   // 2 cycle +
  asm("PUSH R0"); // 2 cycle +
  asm("POP R0");   // 2 cycle + =12 cycle for 11.0592MHZ
  asm("PUSH R0"); // 2 cycle +
  asm("POP R0");   // 2 cycle = 16 cycle = 1us for 16MHz
 }
}

void ms_delay(unsigned int ms_time)
{
    unsigned int i;
   
    for(i=0; i<ms_time;i++)
        us_delay(1000);
}


//========================================
// ultra sound
void init_EXT_INT(void)
{
 EIMSK |= (1<<INT4);  // INT4 Interrupt Set
 EICRB |= (1<<ISC41)|(1<<ISC40); //INT4 Rising Edge / Interrupt Set
 EIFR   = 1<<INT4;  // Interrupt Flag
}

void init_TIMER0_COMPA(void)
{
 TCCR0A |= (1<<WGM01); // CTC Mode
 TCCR0A |= (1<<CS01); // clk/8 Prescaler
 TCNT0 = 0;
 OCR0A = 19;    //1cycle->20us = 1/(16Mhz/(2*8*(19+1)))
 TIMSK0 = (1<<OCIE0A); // T/C0 Output Compare Match Interrup Enable
 TIFR0 = 0x00;
}

SIGNAL(TIMER0_COMP_vect) 
{
 tick++;   // 20usec 단위 업 카운트
}
  
SIGNAL(INT4_vect)
{
 unsigned short pulse_tick;

 pulse_tick = tick;

 if(EICRB & 0x03) // 
 {
    EICRB &= 0x00; // INT4 low state set
    tick = 0;  // tick clear
 }
 else
 {
  EICRB |= (1<<ISC41)|(1<<ISC40); //INT4 Rising Edge/Interrupt Set
  pulse_end = pulse_tick; // echo pulse count
 }
}

//======================================
// port init
void initPort(void)
{
 DDRA  = 0xff;
 DDRE  = 0xef;
 PORTE = 0x10;
}

void main(void)
{
 float distance;
 
 initPort();

 init_EXT_INT();
 init_TIMER0_COMPA();
 
 while(1)
 {
  cli();   // interrupt clear
  PE4_Clear;
  PE4_OUT;  // PE4 pin is output
  us_delay(500);

  PE4_Set;  // output set during 5us
  us_delay(5);

  PE4_Clear;  // output clear
  us_delay(100);

  PE4_IN;   // PE4 pin is input
  us_delay(100);

  sei();   // interrupt enable

  /* distance = velocity * time */

      distance=(331.5+(0.6*TEMPERATURE))*(pulse_end*0.00001/2)*1000;
  
  if(distance>500){   // 50~100cm
   if(distance<1500) LED_ON;
  }
  else LED_OFF;
 }
}

이 코딩 자세히 분석 좀 해주세요...
각 줄 당 해주시면...

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 어떤 상황이 닥쳐도 지갑 절대 안 열 것 같은 스타는? 운영자 24/05/20 - -
공지 프로그래밍 갤러리 이용 안내 [69] 운영자 20.09.28 34890 62
2699319 DevOps나 SRE는 ai 대체 어떨거 같음? ㅇㅇ(223.38) 17:44 2 0
2699318 정처기 개ㅈ밥입니다 [2] 키비갤로그로 이동합니다. 17:43 10 0
2699317 [IT기업] IT기업의 취업은 어떻게 준비해야하는가? feat.(뇌피셜) [3] +abcd3421갤로그로 이동합니다. 17:42 7 0
2699316 쓰러진 것들을 위하여 ㅎㅍㄴㅅ(61.98) 17:40 5 0
2699315 나 같은 비개발자가 보기엔 개발자 존나 부러움 딱지(210.183) 17:39 16 0
2699314 야 정처기 이거 진짜 필기 기출만 풀고 통과 맞냐? 딱지(210.183) 17:36 10 0
2699313 프로그래머가 코딩 강의 찍는 이유 [1] 프갤러(211.246) 17:32 32 0
2699312 가난한 사랑 노래 ㅎㅍㄴㅅ(61.98) 17:31 11 0
2699311 모니터암 가스식이랑 스프링식이랑 차이 많이 나냐?? [1] ㅇㅇ(123.213) 17:27 13 0
2699310 모니터암 가스식이랑 스프링식이랑 차이 많이 나냐?? ㅇㅇ(123.213) 17:27 5 0
2699309 안녕하세요 이 갤러리에 질문하는게 맞나요?? [10] ㅇㅇ(118.218) 17:24 49 0
2699308 ai시대는 1인개발 시대임 [1] 헬마스터갤로그로 이동합니다. 17:22 24 0
2699307 카멜 모니터암 사려는데 둘이 가격이 다른 이유가 뭐임?? [2] ㅇㅇ(123.213) 17:20 21 0
2699306 냥덩 수사기관 관련자인가요? 발명도둑잡기갤로그로 이동합니다. 17:18 11 1
2699305 나는내향적이야 ㅇㅇ(223.39) 17:16 7 0
2699304 ai시대 도래하면 대기업 전산직원이 되야지 [1] ㅇㅇ(106.101) 17:16 35 0
2699303 국비 10명이상 모엿네 [2] 키비갤로그로 이동합니다. 17:15 35 0
2699302 아직도 정신 못차렸나보네 ㅇㅅㅇ [1] 류류(118.235) 17:10 28 0
2699301 그러고보니 ai가 게임 개발은 못하네 [2] 딘퐁갤로그로 이동합니다. 17:06 29 0
2699300 작전명 : 냥덩이 흔들어봐❤+ ♥순수퓨어냥덩♥갤로그로 이동합니다. 17:06 13 0
2699299 ㅋㅋㅋㅋㅋㅋㅋ 프갤러(121.172) 17:05 25 1
2699298 ai시대엔 인디게임 개발이 답이다 [1] ㅇㅇ(175.223) 17:03 28 0
2699297 개발자는 끝났으니 네트워크가라 ㄱㄱㄱ 마지막기회다 [2] 프갤러(118.38) 17:00 41 0
2699295 아니 소프티어는 뭔 교육 기간이 8주밖에 안되냐 [4] 딘퐁갤로그로 이동합니다. 16:57 29 0
2699294 도커 독학하고 있는데 궁금한점..! [6] 프갤러(121.162) 16:52 56 0
2699293 대포뽑기 당첨자 조작 가능한가요? [3] ㅇㅇ(222.107) 16:50 31 0
2699292 진짜 개발자의 미래가 그렇게 암울한가..하... [4] 딘퐁갤로그로 이동합니다. 16:49 67 1
2699291 요즘 유튜브 댓글 ai 필터링 하는것 같더라 [2] 헬마스터갤로그로 이동합니다. 16:45 39 0
2699290 히이이..! 나는 천국요원..! ㅇㅇ(118.235) 16:44 10 0
2699289 인생에서 컴공 선택했고 개발자 선택한게 이렇게 후회스러울줄이야 [6] 프갤러(118.38) 16:43 66 0
2699288 유튜브보는데 si 기업이 그렇게 무서운 곳임? [1] 딘퐁갤로그로 이동합니다. 16:42 42 0
2699287 오늘 해고 당했다.. 일거리가 없대..(웹개발자) [15] 프갤러(118.38) 16:33 126 1
2699286 ai에 호들갑 떨지말고 자중하라 [7] 헬마스터갤로그로 이동합니다. 16:32 65 0
2699284 WWDC D - 20 ㅇㅅㅇ [2] ㅇㅅㅇ(121.157) 16:22 14 1
2699283 3년차 개발자 이직중인데 ㄹㅇ 지옥이다 [5] 프갤러(221.150) 16:20 96 0
2699282 백엔드 포폴 어디까지 만들어야 좋을까 [9] 프갤러(121.180) 16:19 75 0
2699279 나님 시작합니당❤ ♥순수퓨어냥덩♥갤로그로 이동합니다. 16:07 10 0
2699278 챗 GPT에 여자 육체 심어주고 싶다. 프갤러(121.172) 16:07 37 1
2699277 동시성 제어 공부하는 중 ㅇㅅㅇ 딘퐁갤로그로 이동합니다. 16:05 25 0
2699276 파동분산 프갤러(121.172) 16:03 23 0
2699275 공부할때 지피티가 최강인듯 프갤러(180.68) 16:01 21 0
2699274 역대급 조회수 프갤러(121.172) 16:00 23 0
2699273 아니여기 왜캐 조현병이많냐 [3] 밀우갤로그로 이동합니다. 15:57 52 0
2699272 모티터암 카멜께 유명한것 같은데 싱글2개 vs 듀얼1개 뭐가 낳나요?? ㅇㅇ(123.213) 15:54 9 0
2699271 이펙티브자바 보는데 왜캐 어렵냐 [3] 프갤러(1.235) 15:54 36 0
2699270 'AI' + '취업난' 중에 구직희망자의 근황채널이 있네요.. [1] +abcd3421갤로그로 이동합니다. 15:53 51 1
2699269 챗 GPT 미쳤는데... 헐. [2] 프갤러(121.172) 15:48 77 1
2699268 아니, 인공지능이 더 구린 코드를 짜고 있다?! 프갤러(121.172) 15:34 40 1
2699266 나는내향적이야 ㅇㅇ(223.39) 15:32 13 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2