N
nirmal_rockin
Guest
Hi ...
Ik ben dringend behoefte ..Ik heb dit programma somewher van het net en ik heb het bewerkt voor mijn lijn volgeling die ik ben gebouw .... maar toont het programma een aantal fouten (de microcontroller gebruikt is ATMEGA16) en ik ben helemaal in de war over de header-bestanden 'delay.h' en 'I mega16.h' beproefd met behulp van de header-bestanden die in de avr_libc .. maar het toont verschillende fouten ....kan iemand me helpen oplossen van dit probleem ...
Hoe kan ik een foutloze programma ....
pls help me .....i dono veel over microcontrollers ....
bedankt ...Quote:/************************************************* ****
Project: Lijnvolger
Chip type: ATMEGA16
Programma type: Application
Klokfrequentie: 7.372800 MHz
Memory model: Kleine
Externe SRAM size: 0
Gegevens Stack size: 256
************************************************** *** /
/ / # define debug 1
# include <mega16.h>
# include <delay.h>
# ifdef debug
# include <stdio.h>
# 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 RSPEED OCR1AL
# define LSPEED OCR1BL
# define SPEED0 255
# define SPEED1 0
# define SPEED2 0
# define SPEED3 0
# define MAX 3
# define hmax 1
void move (unsigned char dir, unsigned char vertraging, unsigned char vermogen);
unsigned char i, rdev, ldev, ip, vertraging, r., macht, dirl, geschiedenis [MAX], hcount = 0, rotpow;
# ifdef debug
unsigned char rep = 0, prev = 0;
# endif
void main (void)
(
/ / Input / Output Ports initialization
/ / Port A initialization
/ / Func7 = In Func6 = In Func5 = In Func4 = In Func3 = In func2 = In func1 = In Func0 = In
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTA = 0x00;
DDRA = 0x00;
/ / Poort B initialisatie
/ / Func7 = In Func6 = In Func5 = In Func4 = In Func3 = In func2 = In func1 = In Func0 = In
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTB = 0x00;
DDRB = 0x00;
/ / Port C initialisatie
/ / Func7 = In Func6 = In Func5 = In Func4 = In Func3 = In func2 = In func1 = In Func0 = In
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTC = 0x00;
DDRC = 0xFF;
/ / Port D initialization
/ / Func7 = In Func6 = In Func5 = Out Func4 = Out Func3 = In func2 = In func1 = In Func0 = In
/ / State7 = T State6 = T State5 = 0 State4 = 0 State3 = T State2 = T State1 = T State0 = T
PORTD = 0x00;
DDRD = 0x30;
/ / Timer / Counter 0 initialization
/ / Clock source: System Clock
/ / Clock value: Timer 0 Stopped
/ / Mode: Normal top = FFh
/ / OC0 output: Disconnected
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;
/ / Timer / Counter 1 initialisatie
/ / Clock source: System Clock
/ / Clock value: 921.600 kHz
/ / Mode: Fast PWM boven = 00FFh
/ / Output OC1A: Non-Inv.
/ / OC1B output: Non-Inv.
/ / Noise Canceler: Off
/ / Input Capture op dalende flank
TCCR1A = 0xA1;
TCCR1B = 0x0A;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0xFF;
OCR1BH = 0x00;
OCR1BL = 0xFF;
/ / Timer / Counter 2 initialisatie
/ / Clock source: System Clock
/ / Clock value: Timer 2 Stopped
/ / Mode: Normal top = FFh
/ / OC2 output: Disconnected
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;
/ / External Interrupt (s) initialisatie
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;
# ifdef debug
/ / Initialisatie USART
/ / Communicatie Parameters: 8 Data, 1 Stop, geen pariteit
/ / USART Receiver: On
/ / USART zender: On
/ / USART Mode: Asynchronous
/ / USART Baud rate: 57600
UCSRA = 0x00;
UCSRB = 0x18;
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0x07;
# endif
/ / Timer (s) / Counter (s) Interrupt (s) initialisatie
TIMSK = 0x00;
/ / Analog Comparator initialization
/ / Analog Comparator: Off
/ / Analog Comparator Input Capture door Timer / Counter 1: Off
ACSR = 0x80;
SFIOR = 0x00;
while (1) (
# ifdef debug
if (rep <255)
rep ;
if (vorige! = PINA) (
prev = PINA;
printf ( "% u \ r", rep);
for (i = 0; i <8; i )
printf ( "% u \ t", (vorige>> 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)
bewegen (R, 0.195 12 * rdev);
if (rdev <ldev)
bewegen (L, 0.195 12 * ldev);
if (rdev == ldev)
verhuizen (FWD, 0.200);
)
else (
for (i = 0, dirl = 0; i <MAX; i ) (
if (geschiedenis == L)
(dirl
)
if (rotpow <160) (rotpow = 160
if (rotpow <255) (rotpow
if (dirl> hmax)
(move (CW, 0, rotpow)
anders
(bewegen (CCW, 0, rotpow)
)
);
)
void move (unsigned char dir, unsigned char vertraging, unsigned char macht) (
PORTC = dir;
if (dir == L | | dir == R) (
hcount = (hcount 1)% MAX;
geschiedenis [hcount] = dir;
)
LSPEED = RSPEED = 255; / / power;
/ / delay_ms (vertraging);
)
Ik ben dringend behoefte ..Ik heb dit programma somewher van het net en ik heb het bewerkt voor mijn lijn volgeling die ik ben gebouw .... maar toont het programma een aantal fouten (de microcontroller gebruikt is ATMEGA16) en ik ben helemaal in de war over de header-bestanden 'delay.h' en 'I mega16.h' beproefd met behulp van de header-bestanden die in de avr_libc .. maar het toont verschillende fouten ....kan iemand me helpen oplossen van dit probleem ...
Hoe kan ik een foutloze programma ....
pls help me .....i dono veel over microcontrollers ....
bedankt ...Quote:/************************************************* ****
Project: Lijnvolger
Chip type: ATMEGA16
Programma type: Application
Klokfrequentie: 7.372800 MHz
Memory model: Kleine
Externe SRAM size: 0
Gegevens Stack size: 256
************************************************** *** /
/ / # define debug 1
# include <mega16.h>
# include <delay.h>
# ifdef debug
# include <stdio.h>
# 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 RSPEED OCR1AL
# define LSPEED OCR1BL
# define SPEED0 255
# define SPEED1 0
# define SPEED2 0
# define SPEED3 0
# define MAX 3
# define hmax 1
void move (unsigned char dir, unsigned char vertraging, unsigned char vermogen);
unsigned char i, rdev, ldev, ip, vertraging, r., macht, dirl, geschiedenis [MAX], hcount = 0, rotpow;
# ifdef debug
unsigned char rep = 0, prev = 0;
# endif
void main (void)
(
/ / Input / Output Ports initialization
/ / Port A initialization
/ / Func7 = In Func6 = In Func5 = In Func4 = In Func3 = In func2 = In func1 = In Func0 = In
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTA = 0x00;
DDRA = 0x00;
/ / Poort B initialisatie
/ / Func7 = In Func6 = In Func5 = In Func4 = In Func3 = In func2 = In func1 = In Func0 = In
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTB = 0x00;
DDRB = 0x00;
/ / Port C initialisatie
/ / Func7 = In Func6 = In Func5 = In Func4 = In Func3 = In func2 = In func1 = In Func0 = In
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTC = 0x00;
DDRC = 0xFF;
/ / Port D initialization
/ / Func7 = In Func6 = In Func5 = Out Func4 = Out Func3 = In func2 = In func1 = In Func0 = In
/ / State7 = T State6 = T State5 = 0 State4 = 0 State3 = T State2 = T State1 = T State0 = T
PORTD = 0x00;
DDRD = 0x30;
/ / Timer / Counter 0 initialization
/ / Clock source: System Clock
/ / Clock value: Timer 0 Stopped
/ / Mode: Normal top = FFh
/ / OC0 output: Disconnected
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;
/ / Timer / Counter 1 initialisatie
/ / Clock source: System Clock
/ / Clock value: 921.600 kHz
/ / Mode: Fast PWM boven = 00FFh
/ / Output OC1A: Non-Inv.
/ / OC1B output: Non-Inv.
/ / Noise Canceler: Off
/ / Input Capture op dalende flank
TCCR1A = 0xA1;
TCCR1B = 0x0A;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0xFF;
OCR1BH = 0x00;
OCR1BL = 0xFF;
/ / Timer / Counter 2 initialisatie
/ / Clock source: System Clock
/ / Clock value: Timer 2 Stopped
/ / Mode: Normal top = FFh
/ / OC2 output: Disconnected
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;
/ / External Interrupt (s) initialisatie
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;
# ifdef debug
/ / Initialisatie USART
/ / Communicatie Parameters: 8 Data, 1 Stop, geen pariteit
/ / USART Receiver: On
/ / USART zender: On
/ / USART Mode: Asynchronous
/ / USART Baud rate: 57600
UCSRA = 0x00;
UCSRB = 0x18;
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0x07;
# endif
/ / Timer (s) / Counter (s) Interrupt (s) initialisatie
TIMSK = 0x00;
/ / Analog Comparator initialization
/ / Analog Comparator: Off
/ / Analog Comparator Input Capture door Timer / Counter 1: Off
ACSR = 0x80;
SFIOR = 0x00;
while (1) (
# ifdef debug
if (rep <255)
rep ;
if (vorige! = PINA) (
prev = PINA;
printf ( "% u \ r", rep);
for (i = 0; i <8; i )
printf ( "% u \ t", (vorige>> 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)
bewegen (R, 0.195 12 * rdev);
if (rdev <ldev)
bewegen (L, 0.195 12 * ldev);
if (rdev == ldev)
verhuizen (FWD, 0.200);
)
else (
for (i = 0, dirl = 0; i <MAX; i ) (
if (geschiedenis == L)
(dirl
)
if (rotpow <160) (rotpow = 160
if (rotpow <255) (rotpow
if (dirl> hmax)
(move (CW, 0, rotpow)
anders
(bewegen (CCW, 0, rotpow)
)
);
)
void move (unsigned char dir, unsigned char vertraging, unsigned char macht) (
PORTC = dir;
if (dir == L | | dir == R) (
hcount = (hcount 1)% MAX;
geschiedenis [hcount] = dir;
)
LSPEED = RSPEED = 255; / / power;
/ / delay_ms (vertraging);
)