BASIC4MCU | 질문게시판 | 답변 : master님!! 도와주세요..
페이지 정보
작성자 master 작성일2018-12-11 14:03 조회4,460회 댓글2건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6708
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-11 오후 2:08:16// by Ok-Hyun Park//#include <avr/io.h>#define F_CPU16000000UL // 16 MHz#include <util/delay.h>//#define Trig1_ON PORTD|=1 //트리거1#define Trig2_ON PORTD|=2 //트리거2#define Trig3_ON PORTD|=4 //트리거3#define Trig4_ON PORTD|=8 //트리거4//#define Trig1_OFF PORTD&=~1 //트리거1#define Trig2_OFF PORTD&=~2 //트리거2#define Trig3_OFF PORTD&=~4 //트리거3#define Trig4_OFF PORTD&=~8 //트리거4//#define Echo1 (PIND&0x10) //초음파 에코 PD4#define Echo2 (PIND&0x20) //초음파 에코 PD5#define Echo3 (PIND&0x40) //초음파 에코 PD6#define Echo4 (PIND&0x80) //초음파 에코 PD7//char s[30];//unsigned int getEcho(char ch){unsigned int range;switch(ch){case 0: Trig1_ON; _delay_us(10); Trig1_OFF; break; // 10uScase 1: Trig1_ON; _delay_us(10); Trig1_OFF; break; // 10uScase 2: Trig1_ON; _delay_us(10); Trig1_OFF; break; // 10uScase 3: Trig1_ON; _delay_us(10); Trig1_OFF; break; // 10uS}switch(ch){case 0: while(!Echo1); TCNT1=0; TCCR1B=2; while(Echo1); break;case 1: while(!Echo2); TCNT1=0; TCCR1B=2; while(Echo2); break;case 2: while(!Echo3); TCNT1=0; TCCR1B=2; while(Echo3); break;case 3: while(!Echo4); TCNT1=0; TCCR1B=2; while(Echo4); break;}TCCR1B=0; range=TCNT1/116; // the range in CMreturn(range);}//int main(void){unsigned int range[4];DDRD=0x0F;DDRF=0x0F;while(1){_delay_ms(100); range[0]=getEcho(0); if(range[0]<30)PORTF|=1; else PORTF&=~1;_delay_ms(100); range[1]=getEcho(1); if(range[1]<30)PORTF|=2; else PORTF&=~2;_delay_ms(100); range[2]=getEcho(2); if(range[2]<30)PORTF|=4; else PORTF&=~4;_delay_ms(100); range[3]=getEcho(3); if(range[3]<30)PORTF|=8; else PORTF&=~8;}}
이 소스는 저번 질문에서 답변해드린 소스와 동일 한 것 같은데요?
LED 동작을 바꾼 소스를 올려보세요
댓글 2
조회수 4,460egld님의 댓글
egld 작성일
네 저번에 해주신 코딩인데 동작이 안되요
혹시 퓨즈나 다른 설정을 따로 해야되나요? 도저히 동작이 안되서요...
master님의 댓글
master
퓨즈비트의 클럭 설정은 당연히 맞춰야하고요
CKOPT 한개만 체크하면 됩니다.
ISPEN은 변경하지 못한 상태로 체크되어 있고요(ISP 작업하려면 반드시 체크되어 있어야 함)
JTAG 사용자는 JTAG가 체크되어 있어야합니다.
클럭선택은 제일 아래에 있는 것을 선택하세요(X-TAL 16MHz 사용 시)
//
연결이든 뭐든 체크할 수 있도록 자료를 첨부하셔야 체크를 해드릴 수 있습니다.