N
nirmal_rockin
Guest
Oi ...
Eu estou precisando urgente ..Eu tenho esse programa somewher da rede e eu editei para o meu seguidor de linha que eu estou construindo .... mas o programa mostra alguns erros (o microcontrolador utilizado é Atmega16) e eu estou totalmente confuso sobre os arquivos header 'delay.h' e 'mega16.h' Eu tentei usar os arquivos de cabeçalho fornecidos no avr_libc .. mas mostra diversos erros ....alguém pode me ajudar a resolver este problema ...
Como posso criar um programa sem erros ....
pls help me .....i dono muito sobre microcontroladores ....
obrigado ...Citação:/************************************************* ****
Projeto: Line Follower
Tipo de Chip: ATmega16
Tipo Programa: Aplicativo
Clock frequency: 7.372800 MHz
Modelo de memória: Small
Tamanho externo SRAM: 0
Dados o tamanho da pilha: 256
************************************************** *** /
/ / # define DEBUG 1
# include <mega16.h>
# include <delay.h>
# ifdef DEBUG
# include
# endif
# define FWD 0xAA
# define REV 0x55
# define R 0x22
# define L 0x88
# define CW 0x99
# define CCW 0x66
# define STOP 0x00
# define B 0xFF
# define renatacorrea OCR1AL
# define lspeed OCR1BL
# define speed0 255
0 # define Speed1
# define SPEED2 0
# define Speed3 0
# define MAX 3
# define HMAX 1
void move (dir unsigned char, unsigned char demora, o poder unsigned char);
unsigned char i, rdev, ldev, IP, atraso, dir, poder DIRL, história [MAX], hcount = 0, rotpow;
# ifdef DEBUG
rep unsigned char = 0, prev = 0;
# endif
void main (void)
(
/ / Input / Output Ports inicialização
/ / A Porta de inicialização
/ / Func7 Em Func6 = = = Em Func5 Em FUNC4 = In func3 Em Func2 = = = Em Func1 Em Func0 = In
/ / State7 State6 T = State5 T = State4 T = State3 T = State2 T = State1 T = state0 T = T
PORTA = 0x00;
DDRA = 0x00;
/ / Port inicialização B
/ / Func7 In = = Func6 Em Func5 In = = FUNC4 Em func3 In = = Func2 Em Func1 In = = Func0 In
/ / State7 State6 T = State5 T = State4 T = State3 T = State2 T = State1 T = state0 T = T
PORTB = 0x00;
DDRB = 0x00;
/ / Port inicialização C
/ / Func7 Em Func6 = = = Em Func5 Em FUNC4 = In func3 Em Func2 = = = Em Func1 Em Func0 = In
/ / State7 State6 T = State5 T = State4 T = State3 T = State2 T = State1 T = state0 T = T
PORTC = 0x00;
DDRC = 0xFF;
/ / Port inicialização D
/ / Func7 Em Func6 = = = Em Func5 Out FUNC4 Out func3 = = = Em Func2 Em Func1 = In Func0 = In
/ / State7 State6 T = State5 T = 0 State4 = 0 State3 State2 T = State1 T = state0 T = T
PORTD = 0x00;
DDRD = 0x30;
/ / Timer / Contador 0 inicialização
/ / Fonte Relógio: Relógio do sistema
/ / Valor do Relógio: Timer 0 Parado
/ / Mode: Normal top = FFh
/ / Output ôÇ0: Disconnected
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;
/ / Timer / Contador 1 de inicialização
/ / Fonte Relógio: Relógio do sistema
/ / Valor Clock: 921,600 kHz
/ / Mode: Top PWM Fast = 00FFh
/ / Output OC1A: Non-Inv.
/ / Output OC1B: Non-Inv.
/ / Noise Canceller: Off
/ / Input Capture em Queda Edge
TCCR1A = 0xA1;
TCCR1B = 0x0A;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0xFF;
OCR1BH = 0x00;
OCR1BL = 0xFF;
/ / Timer / Counter 2 de inicialização
/ / Fonte Relógio: Relógio do sistema
/ / Valor do Relógio: Timer 2 Parado
/ / Mode: Normal top = FFh
/ / Output OC2: Disconnected
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;
/ / Interrupção Externa (s inicialização)
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;
# ifdef DEBUG
/ / Inicialização USART
/ / Parâmetros de comunicação: 8 Data, 1 parada, sem paridade
/ / USART Receptor: On
/ / USART Transmissor: On
/ / USART Modo: Asynchronous
/ / USART Baud rate: 57600
UCSRA = 0x00;
UCSRB = 0x18;
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0x07;
# endif
/ / Timer (s) / Balcão (s) de interrupção (s) de inicialização
TIMSK = 0x00;
/ / Inicialização Analog Comparator
/ / Comparador Analógico: Off
/ / Analog Comparator Input Capture pelo Timer / Counter 1: Off
ACSR = 0x80;
SFIOR = 0x00;
while (1) (
# ifdef DEBUG
if (rep <255)
rep ;
if (prev! = PINA) (
prev = Pina;
printf ( "% u \ r" rep);
for (i = 0; i <8; i )
printf ( "% u \ t", (ant>> i) & 0x01);
rep = 0;
)
# endif
if (Pina! = 255) (
rotpow = 255;
ldev = rdev = 0;
if (PINA.3 == 0)
rdev = 1;
if (PINA.2 == 0)
rdev = 2;
if (PINA.1 == 0)
rdev = 3;
if (PINA.0 == 0)
rdev = 4;
if (PINA.4 == 0)
ldev = 1;
if (PINA.5 == 0)
ldev = 2;
if (PINA.6 == 0)
ldev = 3;
if (PINA.7 == 0)
ldev = 4;
if (rdev> ldev)
Mover (R, 0.195 12 * rdev);
if (rdev <ldev)
Move (L, 0195 12 * ldev);
if (rdev == ldev)
Move (FWD, 0.200);
)
else (
for (i = 0, DIRL = 0; i <MAX; i ) (
if (history == L)
(DIRL
)
if (rotpow <160) (rotpow = 160
if (rotpow <255) (rotpow
if (DIRL> HMAX)
(mover (CW, 0, rotpow)
diferente
(mover (CCW, 0, rotpow)
)
);
)
void move (dir unsigned char, unsigned char demora, o poder unsigned char) (
PORTC = dir;
if (dir == E | | dir == r) (
hcount = (hcount 1)% MAX;
hcount história [] = dir;
)
Lspeed renatacorrea = = 255; / / potência;
/ / delay_ms (delay);
)
Eu estou precisando urgente ..Eu tenho esse programa somewher da rede e eu editei para o meu seguidor de linha que eu estou construindo .... mas o programa mostra alguns erros (o microcontrolador utilizado é Atmega16) e eu estou totalmente confuso sobre os arquivos header 'delay.h' e 'mega16.h' Eu tentei usar os arquivos de cabeçalho fornecidos no avr_libc .. mas mostra diversos erros ....alguém pode me ajudar a resolver este problema ...
Como posso criar um programa sem erros ....
pls help me .....i dono muito sobre microcontroladores ....
obrigado ...Citação:/************************************************* ****
Projeto: Line Follower
Tipo de Chip: ATmega16
Tipo Programa: Aplicativo
Clock frequency: 7.372800 MHz
Modelo de memória: Small
Tamanho externo SRAM: 0
Dados o tamanho da pilha: 256
************************************************** *** /
/ / # define DEBUG 1
# include <mega16.h>
# include <delay.h>
# ifdef DEBUG
# include
# endif
# define FWD 0xAA
# define REV 0x55
# define R 0x22
# define L 0x88
# define CW 0x99
# define CCW 0x66
# define STOP 0x00
# define B 0xFF
# define renatacorrea OCR1AL
# define lspeed OCR1BL
# define speed0 255
0 # define Speed1
# define SPEED2 0
# define Speed3 0
# define MAX 3
# define HMAX 1
void move (dir unsigned char, unsigned char demora, o poder unsigned char);
unsigned char i, rdev, ldev, IP, atraso, dir, poder DIRL, história [MAX], hcount = 0, rotpow;
# ifdef DEBUG
rep unsigned char = 0, prev = 0;
# endif
void main (void)
(
/ / Input / Output Ports inicialização
/ / A Porta de inicialização
/ / Func7 Em Func6 = = = Em Func5 Em FUNC4 = In func3 Em Func2 = = = Em Func1 Em Func0 = In
/ / State7 State6 T = State5 T = State4 T = State3 T = State2 T = State1 T = state0 T = T
PORTA = 0x00;
DDRA = 0x00;
/ / Port inicialização B
/ / Func7 In = = Func6 Em Func5 In = = FUNC4 Em func3 In = = Func2 Em Func1 In = = Func0 In
/ / State7 State6 T = State5 T = State4 T = State3 T = State2 T = State1 T = state0 T = T
PORTB = 0x00;
DDRB = 0x00;
/ / Port inicialização C
/ / Func7 Em Func6 = = = Em Func5 Em FUNC4 = In func3 Em Func2 = = = Em Func1 Em Func0 = In
/ / State7 State6 T = State5 T = State4 T = State3 T = State2 T = State1 T = state0 T = T
PORTC = 0x00;
DDRC = 0xFF;
/ / Port inicialização D
/ / Func7 Em Func6 = = = Em Func5 Out FUNC4 Out func3 = = = Em Func2 Em Func1 = In Func0 = In
/ / State7 State6 T = State5 T = 0 State4 = 0 State3 State2 T = State1 T = state0 T = T
PORTD = 0x00;
DDRD = 0x30;
/ / Timer / Contador 0 inicialização
/ / Fonte Relógio: Relógio do sistema
/ / Valor do Relógio: Timer 0 Parado
/ / Mode: Normal top = FFh
/ / Output ôÇ0: Disconnected
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;
/ / Timer / Contador 1 de inicialização
/ / Fonte Relógio: Relógio do sistema
/ / Valor Clock: 921,600 kHz
/ / Mode: Top PWM Fast = 00FFh
/ / Output OC1A: Non-Inv.
/ / Output OC1B: Non-Inv.
/ / Noise Canceller: Off
/ / Input Capture em Queda Edge
TCCR1A = 0xA1;
TCCR1B = 0x0A;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0xFF;
OCR1BH = 0x00;
OCR1BL = 0xFF;
/ / Timer / Counter 2 de inicialização
/ / Fonte Relógio: Relógio do sistema
/ / Valor do Relógio: Timer 2 Parado
/ / Mode: Normal top = FFh
/ / Output OC2: Disconnected
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;
/ / Interrupção Externa (s inicialização)
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;
# ifdef DEBUG
/ / Inicialização USART
/ / Parâmetros de comunicação: 8 Data, 1 parada, sem paridade
/ / USART Receptor: On
/ / USART Transmissor: On
/ / USART Modo: Asynchronous
/ / USART Baud rate: 57600
UCSRA = 0x00;
UCSRB = 0x18;
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0x07;
# endif
/ / Timer (s) / Balcão (s) de interrupção (s) de inicialização
TIMSK = 0x00;
/ / Inicialização Analog Comparator
/ / Comparador Analógico: Off
/ / Analog Comparator Input Capture pelo Timer / Counter 1: Off
ACSR = 0x80;
SFIOR = 0x00;
while (1) (
# ifdef DEBUG
if (rep <255)
rep ;
if (prev! = PINA) (
prev = Pina;
printf ( "% u \ r" rep);
for (i = 0; i <8; i )
printf ( "% u \ t", (ant>> i) & 0x01);
rep = 0;
)
# endif
if (Pina! = 255) (
rotpow = 255;
ldev = rdev = 0;
if (PINA.3 == 0)
rdev = 1;
if (PINA.2 == 0)
rdev = 2;
if (PINA.1 == 0)
rdev = 3;
if (PINA.0 == 0)
rdev = 4;
if (PINA.4 == 0)
ldev = 1;
if (PINA.5 == 0)
ldev = 2;
if (PINA.6 == 0)
ldev = 3;
if (PINA.7 == 0)
ldev = 4;
if (rdev> ldev)
Mover (R, 0.195 12 * rdev);
if (rdev <ldev)
Move (L, 0195 12 * ldev);
if (rdev == ldev)
Move (FWD, 0.200);
)
else (
for (i = 0, DIRL = 0; i <MAX; i ) (
if (history == L)
(DIRL
)
if (rotpow <160) (rotpow = 160
if (rotpow <255) (rotpow
if (DIRL> HMAX)
(mover (CW, 0, rotpow)
diferente
(mover (CCW, 0, rotpow)
)
);
)
void move (dir unsigned char, unsigned char demora, o poder unsigned char) (
PORTC = dir;
if (dir == E | | dir == r) (
hcount = (hcount 1)% MAX;
hcount história [] = dir;
)
Lspeed renatacorrea = = 255; / / potência;
/ / delay_ms (delay);
)