C-programma samenstellen voor de microcontroller ... pls help ....

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);

)
 
Los frijoles wrote:

Kunt u achteraf de fout lijst ook?
 
Dat ziet eruit als een makefile fout.Als u uw eigen makefile gemaakt, zijn er zeker van dat het gebruikt tabs in plaats van ruimte voor inkepingen.Zo niet, probeer dan het maken van uw eigen Makefile (er zijn er tientallen tutorials die er zijn) en kijk of het werkt correct.

 
ok meneer, maar is het programma juist ....

zelfs als ik juist het bovenstaande fout Ik krijg verschillende andere fouten .....( over 25errors)
Ik denk dat dit alles het gevolg is van alleen het koppelen van andere bestanden die niet goed gedaan .. en wat ik tats donno .....Toegevoegd na 11 minuten:Dit is de make bestand voor het programma ..
################################################## #############################
# Makefile voor het project proces
################################################## #############################

# # Algemene Vlaggen
PROJECT = trial
MCU = ATMEGA16
TARGET = trial.elf
CC = avr-gcc

CPP = avr-g

# # Opties gemeenschappelijk te compileren, muziek, geluid en montage voorschriften
GEMEENSCHAPPELIJKE =-mmcu = $ (MCU)

# # Compileer opties gemeenschappelijk voor alle C compilatie eenheden.
CFLAGS = $ (GEMEENSCHAPPELIJK)
CFLAGS =-Wall-gdwarf-2-Os-std = gnu99-funsigned-char-funsigned-bitfields-fpack-struct-fshort-enums
CFLAGS =-MD-MP-MT $ (* F). O-MF dep / $ (@ F). D

# # Vergadering specifieke vlaggen
ASMFLAGS = $ (GEMEENSCHAPPELIJK)
ASMFLAGS = $ (CFLAGS)
ASMFLAGS =-x assembler-met-cpp-Wa,-gdwarf2

# # Linker vlaggen
LDFLAGS = $ (GEMEENSCHAPPELIJK)
LDFLAGS =-Wl,-Kaart = trial.map# # Intel Hex bestand productie vlaggen
HEX_FLASH_FLAGS =-R. EEPROM-R. Zekering-R. Lock-R. Ondertekening

HEX_EEPROM_FLAGS =-j. Eeprom
HEX_EEPROM_FLAGS = - set-sectie-flags =. eeprom = "alloc, load"
HEX_EEPROM_FLAGS = - change-sectie-lma. Eeprom = 0 - no-change-waarschuwingen# # Objecten die moeten worden gebouwd om te koppelen
OBJECTEN = trial.o

# # Objecten expliciet toegevoegd door de gebruiker
LINKONLYOBJECTS =

# # Build
all: $ (TARGET) trial.hex trial.eep trial.lss grootte

# # Compile
trial.o: .. / trial.c
$ (CC) $ (INCLUDES) $ (CFLAGS)-c $ <

# # Link
$ (TARGET): $ (voorwerpen)
$ (CC) $ (LDFLAGS) $ (voorwerpen) $ (LINKONLYOBJECTS) $ (LIBDIRS) $ (LIBS)-o $ (TARGET)

%. hex: $ (TARGET)
avr-objcopy-O ihex $ (HEX_FLASH_FLAGS) $ <$ @

%. EEP: $ (TARGET)
-avr-objcopy $ (HEX_EEPROM_FLAGS)-O ihex $ <$ @ | | exit 0

%. LSS: $ (TARGET)
avr-objdump-h-S $ <> $ @

maat: $ (TARGET)
@ echo
@ avr-size-C - MCU = $ (MCU) $ (TARGET)

# # Schoon doelstelling
. PHONY: schoon
Schoon:
-rm-rf $ (voorwerpen) trial.elf dep / * trial.hex trial.eep trial.lss trial.map# # Andere afhankelijkheden
-include $ (shell mkdir dep 2> / dev / null) $ (wildcard dep / *)

 

Welcome to EDABoard.com

Sponsor

Back
Top