컨트롤러"사람이

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 (지연);

)
 
난 항상 핀 24 및 25 엠씨 더 ... 아무 문제가 와트 알지에서 높은 출력을 얻는 ...

 

Welcome to EDABoard.com

Sponsor

Back
Top