N
nirmal_rockin
Guest
어느 날 도울 수 ...난 완벽하지 않아 다음과 같은 프로그램을 생각 ... 두번 경고와 함께 프로그램을 실행합니다 ...하지만 난 밖 엠씨 .... pls에서 어떤 하나의 프로그램이 올바른 것인지 말해 그리고 만약 그것이 완료되면 넣어받을 돈 ( 이 프로그램은 내 옆에 내가 쓴 아니었 그물어요) ...
미리 감사드립니다
이 센서를 통해 입력되어 출력이 내 문제는 내가 어떠한 출력을 얻을 엠씨 ...... 던 모터 드라이버입니다 라인 추종자에 대한 개략도이다<img src="http://img29.imageshack.us/img29/2687/linefollowerschematic.th.jpg" border="0" alt="Can anyone tell whether the program is correct.." title="누구 여부를 프로그램의 올바른 .. 말해줄 수 있어요"/> 인용구 :
/************************************************* ****
프로젝트 : 라인 Follower
버전 :
날짜 : 2006년 2월 19일
작성자 : Nirmal
회사명 : 홈
댓글 :
칩 유형 : ATmega16L
프로그램 유형 : 응용 프로그램
클럭 주파수 : 7.372800 MHz 이상
메모리 모델 : 소형
외부 SRAM 크기 : 0
데이터 스택 크기 : 256
************************************************** *** /
/ / 1 디버그 정의 #
# 포함 <mega16.h>
# 포함 <delay.h>
# ifdef 디버그
# 포함 <stdio.h>
# endif
FWD 0xaa 정의 #
REV 0x55 정의 #
연구 0x22 정의 #
패 0x88 정의 #
나 CW 0x99 정의 #
CCW 0x66 정의 #
정지 0x00 정의 #
B 조 0xFF 정의 #
RSPEED OCR1AL 정의 #
LSPEED OCR1BL 정의 #
SPEED0 255 정의 #
SPEED1 0 정의 #
SPEED2 0 정의 #
SPEED3 0 정의 #
MAX는 3 정의 #
HMAX 1 정의 #
무효로 이동 (서명 숯불 말일세, 서명 숯불 지연, 서명 숯불 전원);
서명 숯불 난, rdev, ldev, IP를, 지연, 만해, 전력, dirl, 역사 [MAX는] hcount = 0, rotpow;
# ifdef 디버그
서명 숯불 담당자 = 0, = 0 이전;
# endif
무효의 main (무효)
(
/ / 입력 / 출력 포트 초기화
/ / 포트 초기화
/ / Func7 = Func6 있음 Func4 = Func3 있음 Func5 = 있음 = 있음 = 있음 func2 = 있음 func1 = 있음 Func0 = 있음
/ / State7 = T는 State6 = T는 State5 = T는 State4 = T는 State3 = T는 State2 = T는 state1 = T는 State0 = T는
PORTA = 0x00;
DDRA = 0x00;
/ / 포트 B 조 초기화
/ / Func7 = Func6 있음 Func4 = Func3 있음 Func5 = 있음 = 있음 = 있음 func2 = 있음 func1 = 있음 Func0 = 있음
/ / State7 = T는 State6 = T는 State5 = T는 State4 = T는 State3 = T는 State2 = T는 state1 = T는 State0 = T는
PORTB = 0x00;
DDRB = 0x00;
/ / 포트 C 초기화
/ / Func7 = Func6 있음 Func4 = Func3 있음 Func5 = 있음 = 있음 = 있음 func2 = 있음 func1 = 있음 Func0 = 있음
/ / State7 = T는 State6 = T는 State5 = T는 State4 = T는 State3 = T는 State2 = T는 state1 = T는 State0 = T는
PORTC = 0x00;
DDRC = 0xFF;
/ / 포트 D 조 초기화
/ / Func7 = Func6 있음 = 있음 Func5 = 없음 Func4 = 없음 Func3 = 있음 func2 = 있음 func1 = 있음 Func0 = 있음
/ / State7 = T는 State6 = T는 State5 = 0 State4 = 0 State3 = T는 State2 = T는 state1 = T는 State0 = T는
PORTD = 0x00;
DDRD = 0x30;
/ / 타이머 / 카운터 0 초기화
/ / 클럭 소스 : 시스템 클럭
/ / 시간 값 : 타이머 0 정지됨
/ / 모드 : 일반 위로 가기 = FFh
/ / OC0 출력 : 연결이 끊긴
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;
/ / 타이머 / 카운터 1 초기화
/ / 클럭 소스 : 시스템 클럭
/ / 시계의 가치 : 921.600 kHz에서
/ / 모드 : 고속 PWM을 가기 = 00FFh
/ / OC1A 출력 : 비 - Inv.
/ / OC1B 출력 : 비 - Inv.
/ / 소음 Canceler : 끄기
/ / 입력을 캡처 빠지는것은 가장자리에
TCCR1A = 0xA1;
TCCR1B = 0x0A;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0xFF;
OCR1BH = 0x00;
OCR1BL = 0xFF;
/ / 타이머 / 카운터 2 초기화
/ / 클럭 소스 : 시스템 클럭
/ / 시간 값 : 타이머 2 정지됨
/ / 모드 : 일반 위로 가기 = FFh
/ / OC2 출력 : 연결이 끊긴
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;
/ / 외부 인터럽트 (들)을 초기화
/ / INT0 : 끄기
/ / INT1 : 끄기
/ / int2 : 끄기
MCUCR = 0x00;
MCUCSR = 0x00;
# ifdef 디버그
/ / USART 초기화
/ / 통신 매개 변수 : 8 데이터, 1 중지, 패리티 없음
/ / USART 수신기 :에
/ / USART 송신기 :에
/ / USART 모드 : 비동기
/ / USART 전송 속도 : 57600
UCSRA = 0x00;
UCSRB = 0x18;
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0x07;
# endif
/ / 타이머 (들) / 카운터 (들) 인터럽트 (들)을 초기화
TIMSK = 0x00;
/ / 아날로그 비교기 초기화
/ / 아날로그 비교기 : 끄기
/ / 아날로그 비교기 입력에 의해 캡처 타이머 / 카운터 1 : 꺼짐
ACSR = 0x80으로;
= 0x00 SFIOR;
(1) (
# ifdef 디버그
(담당자 "255)하는 경우
담당자 ;
만약 (이전! = 피나) (
이전 = 피나;
printf ( "% u 개의에 \ r", 담당자);
위한은 (i = 0; 난 "8; 난 )
printf ( "% u 개의을 \ t", (이전 ""난) & 0x01);
담당자 = 0;
)
# endif
만약 (피나! = 255) (
rotpow = 255;
ldev = rdev = 0;
(PINA.3 == 0)
rdev = 1;
(PINA.2 == 0)
rdev = 2;
만약 (PINA.1 == 0)
rdev = 3;
(PINA.0 == 0)
rdev = 4;
만약 (PINA.4 == 0)
ldev = 1;
만약 (PINA.5 == 0)
ldev = 2;
(PINA.6 == 0)
ldev = 3;
(PINA.7 == 0)
ldev = 4;
만약 (rdev "ldev)
이동 (연구, 0195 12 * rdev);
만약 (rdev "ldev)
이동 (패, 0195 12 * ldev);
(rdev == ldev 경우)
이동 (FWD, 0200);
)
다른 (
은 (i = 0, = 0 dirl; 난 "MAX는; 난 )에 대한 (
만약 (역사 [전] == 패)
(dirl
)
만약 (rotpow "160) (rotpow = 160
만약 (rotpow "255) (rotpow
만약 (dirl "HMAX)
((나 CW, 0, rotpow) 이동
그 밖의
((CCW, 0, rotpow) 이동
)
);
)
무효로 이동 (서명 숯불 말일세, 서명 숯불 지연, 서명 숯불 전원) (
PORTC = 만해;
(만해 == 패 | | 만해 == R)의 경우에는 (
hcount = (hcount 1) % MAX는;
역사 [hcount] = 만해;
)
LSPEED = RSPEED = 255; / / 전원;
/ / delay_ms (지연);
)
미리 감사드립니다
이 센서를 통해 입력되어 출력이 내 문제는 내가 어떠한 출력을 얻을 엠씨 ...... 던 모터 드라이버입니다 라인 추종자에 대한 개략도이다<img src="http://img29.imageshack.us/img29/2687/linefollowerschematic.th.jpg" border="0" alt="Can anyone tell whether the program is correct.." title="누구 여부를 프로그램의 올바른 .. 말해줄 수 있어요"/> 인용구 :
/************************************************* ****
프로젝트 : 라인 Follower
버전 :
날짜 : 2006년 2월 19일
작성자 : Nirmal
회사명 : 홈
댓글 :
칩 유형 : ATmega16L
프로그램 유형 : 응용 프로그램
클럭 주파수 : 7.372800 MHz 이상
메모리 모델 : 소형
외부 SRAM 크기 : 0
데이터 스택 크기 : 256
************************************************** *** /
/ / 1 디버그 정의 #
# 포함 <mega16.h>
# 포함 <delay.h>
# ifdef 디버그
# 포함 <stdio.h>
# endif
FWD 0xaa 정의 #
REV 0x55 정의 #
연구 0x22 정의 #
패 0x88 정의 #
나 CW 0x99 정의 #
CCW 0x66 정의 #
정지 0x00 정의 #
B 조 0xFF 정의 #
RSPEED OCR1AL 정의 #
LSPEED OCR1BL 정의 #
SPEED0 255 정의 #
SPEED1 0 정의 #
SPEED2 0 정의 #
SPEED3 0 정의 #
MAX는 3 정의 #
HMAX 1 정의 #
무효로 이동 (서명 숯불 말일세, 서명 숯불 지연, 서명 숯불 전원);
서명 숯불 난, rdev, ldev, IP를, 지연, 만해, 전력, dirl, 역사 [MAX는] hcount = 0, rotpow;
# ifdef 디버그
서명 숯불 담당자 = 0, = 0 이전;
# endif
무효의 main (무효)
(
/ / 입력 / 출력 포트 초기화
/ / 포트 초기화
/ / Func7 = Func6 있음 Func4 = Func3 있음 Func5 = 있음 = 있음 = 있음 func2 = 있음 func1 = 있음 Func0 = 있음
/ / State7 = T는 State6 = T는 State5 = T는 State4 = T는 State3 = T는 State2 = T는 state1 = T는 State0 = T는
PORTA = 0x00;
DDRA = 0x00;
/ / 포트 B 조 초기화
/ / Func7 = Func6 있음 Func4 = Func3 있음 Func5 = 있음 = 있음 = 있음 func2 = 있음 func1 = 있음 Func0 = 있음
/ / State7 = T는 State6 = T는 State5 = T는 State4 = T는 State3 = T는 State2 = T는 state1 = T는 State0 = T는
PORTB = 0x00;
DDRB = 0x00;
/ / 포트 C 초기화
/ / Func7 = Func6 있음 Func4 = Func3 있음 Func5 = 있음 = 있음 = 있음 func2 = 있음 func1 = 있음 Func0 = 있음
/ / State7 = T는 State6 = T는 State5 = T는 State4 = T는 State3 = T는 State2 = T는 state1 = T는 State0 = T는
PORTC = 0x00;
DDRC = 0xFF;
/ / 포트 D 조 초기화
/ / Func7 = Func6 있음 = 있음 Func5 = 없음 Func4 = 없음 Func3 = 있음 func2 = 있음 func1 = 있음 Func0 = 있음
/ / State7 = T는 State6 = T는 State5 = 0 State4 = 0 State3 = T는 State2 = T는 state1 = T는 State0 = T는
PORTD = 0x00;
DDRD = 0x30;
/ / 타이머 / 카운터 0 초기화
/ / 클럭 소스 : 시스템 클럭
/ / 시간 값 : 타이머 0 정지됨
/ / 모드 : 일반 위로 가기 = FFh
/ / OC0 출력 : 연결이 끊긴
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;
/ / 타이머 / 카운터 1 초기화
/ / 클럭 소스 : 시스템 클럭
/ / 시계의 가치 : 921.600 kHz에서
/ / 모드 : 고속 PWM을 가기 = 00FFh
/ / OC1A 출력 : 비 - Inv.
/ / OC1B 출력 : 비 - Inv.
/ / 소음 Canceler : 끄기
/ / 입력을 캡처 빠지는것은 가장자리에
TCCR1A = 0xA1;
TCCR1B = 0x0A;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0xFF;
OCR1BH = 0x00;
OCR1BL = 0xFF;
/ / 타이머 / 카운터 2 초기화
/ / 클럭 소스 : 시스템 클럭
/ / 시간 값 : 타이머 2 정지됨
/ / 모드 : 일반 위로 가기 = FFh
/ / OC2 출력 : 연결이 끊긴
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;
/ / 외부 인터럽트 (들)을 초기화
/ / INT0 : 끄기
/ / INT1 : 끄기
/ / int2 : 끄기
MCUCR = 0x00;
MCUCSR = 0x00;
# ifdef 디버그
/ / USART 초기화
/ / 통신 매개 변수 : 8 데이터, 1 중지, 패리티 없음
/ / USART 수신기 :에
/ / USART 송신기 :에
/ / USART 모드 : 비동기
/ / USART 전송 속도 : 57600
UCSRA = 0x00;
UCSRB = 0x18;
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0x07;
# endif
/ / 타이머 (들) / 카운터 (들) 인터럽트 (들)을 초기화
TIMSK = 0x00;
/ / 아날로그 비교기 초기화
/ / 아날로그 비교기 : 끄기
/ / 아날로그 비교기 입력에 의해 캡처 타이머 / 카운터 1 : 꺼짐
ACSR = 0x80으로;
= 0x00 SFIOR;
(1) (
# ifdef 디버그
(담당자 "255)하는 경우
담당자 ;
만약 (이전! = 피나) (
이전 = 피나;
printf ( "% u 개의에 \ r", 담당자);
위한은 (i = 0; 난 "8; 난 )
printf ( "% u 개의을 \ t", (이전 ""난) & 0x01);
담당자 = 0;
)
# endif
만약 (피나! = 255) (
rotpow = 255;
ldev = rdev = 0;
(PINA.3 == 0)
rdev = 1;
(PINA.2 == 0)
rdev = 2;
만약 (PINA.1 == 0)
rdev = 3;
(PINA.0 == 0)
rdev = 4;
만약 (PINA.4 == 0)
ldev = 1;
만약 (PINA.5 == 0)
ldev = 2;
(PINA.6 == 0)
ldev = 3;
(PINA.7 == 0)
ldev = 4;
만약 (rdev "ldev)
이동 (연구, 0195 12 * rdev);
만약 (rdev "ldev)
이동 (패, 0195 12 * ldev);
(rdev == ldev 경우)
이동 (FWD, 0200);
)
다른 (
은 (i = 0, = 0 dirl; 난 "MAX는; 난 )에 대한 (
만약 (역사 [전] == 패)
(dirl
)
만약 (rotpow "160) (rotpow = 160
만약 (rotpow "255) (rotpow
만약 (dirl "HMAX)
((나 CW, 0, rotpow) 이동
그 밖의
((CCW, 0, rotpow) 이동
)
);
)
무효로 이동 (서명 숯불 말일세, 서명 숯불 지연, 서명 숯불 전원) (
PORTC = 만해;
(만해 == 패 | | 만해 == R)의 경우에는 (
hcount = (hcount 1) % MAX는;
역사 [hcount] = 만해;
)
LSPEED = RSPEED = 255; / / 전원;
/ / delay_ms (지연);
)