ATMEGA8 - nedaří se mi přeložit první program napsaný v C

zdravim, začínám s ATMEGOU8 a nedaří se mi přeložit první program napsaný v C a překládám v AVR studiu.

Dělám to podle tohoto návodu: solarskit.wz.cz/avrprogramming.html

včetně zdrojového kodu pro blikání s LEDkou, ale nedaří se mi program přeložit:-(

Hlášení:
Build started 27.7.2009 at 21:51:43
make: Makefile: No such file or directory
make: *** No rule to make target `Makefile’. Stop.
Build failed with 2 errors and 0 warnings…

předem díky za rady :slight_smile:

:arrow_right: administrator: přejmenováno z "ATMEGA8"

Krome vlastniho kodu v C je nutno mit i MAKEFILE, kde jsou parametry prekladu.

ano soubor makefile sem si nastavil a uložil. Jen nevím jak mám poté vytvořený projekt “propojit” s mým souborem makefile? díky:-)

Pro začátek není vůbec třeba zabývat se souborem makefile.
Pokud nastavíte “Project Options” tak jak je ve vašem odkazu, Studio automaticky vygeneruje a použije vlastní Makefile.
V “Source Files” má být jen .c soubor.

Skus si odinstalovat AVRstudio i WinAVR. Myslim, ze to bude v konecnom dosledku zbytocne a zaberie to dost casu, ale zacat treba od “cisteho stola”.

Najprv nainstaluj WinAVR.
Potom nainstaluj AVRstudio.

Po spusteni AVR studia, Ti ponukne moznost vytvorit program bud v ASM, alebo v GCC. Vyber si GCC. Daj mu nejake meno a vyber mu nejaky adresar - podla pokynov pri vytrvarani projektu. Potom si nechaj AVR_simulator a procesor si vyber Atmega8. Procesor mozes hocikedy zmenit v menu Project->Configuration Options.

Potom napis nasledovne

[code]
int main(void)
{
char i = 0, j = 1;

for(;;) {
  i = i + j;
}

}[/code]

Stlac F7

V dolnej casti sa ti vypise nasledovny text

Build started 1.8.2009 at 14:35:14
avr-gcc  -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT pok.o -MF dep/pok.o.d  -c  ../pok.c
avr-gcc -mmcu=atmega8 -Wl,-Map=pok.map pok.o     -o pok.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature  pok.elf pok.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex pok.elf pok.eep || exit 0
avr-objdump -h -S pok.elf > pok.lss

AVR Memory Usage
----------------
Device: atmega8

Program:      62 bytes (0.8% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)


Build succeeded with 0 Warnings...

Ak sa Ti toto vsetko takto stane - a ma sa, tak sa Ti aj automaticky vytvoril subor makefile v tom Tvojom adresari v adresari “default”

Takto to funguje po nainstalovani a nic okolo toho netreba robit.

Daj vediet, ako si dopadol.

Urobil som si aj preklad toho programu o ktorom pises. Ten je ale tvoreny pre ATmega16. ATmega8 nema na rozdiel od ATmega16 PORTA.
Preto si musis program upravit. Ja som to skusil nasledovne a slo to prelozit bez najmensich problemov

#include <avr/io.h>			// definice periferii procesoru


//--------------------------------------------- >> Zpozdovaci procedura <<

void delay ( uint32_t time )
{
	while ( time-- );
}

//============================================= >> HLAVNI FUNKCE MAIN <<

int main( void )
{

//--------------------------------------------- >> I/O PORTY <<
	//0 - VSTUP, 1 - VYSTUP

	DDRB	= 0b00000001;

//--------------------------------------------- >> Nekonecna smycka <<
	while( 1 )
	{
		PORTB = PINB ^ 0b00000001;
		delay( 1e6 );
	}

	return 0;
}

vypis po preklade bol:

Build started 1.8.2009 at 14:47:29
avr-gcc  -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -O0 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT pok.o -MF dep/pok.o.d  -c  ../pok.c
avr-gcc -mmcu=atmega8 -Wl,-Map=pok.map pok.o     -o pok.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature  pok.elf pok.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex pok.elf pok.eep || exit 0
avr-objdump -h -S pok.elf > pok.lss

AVR Memory Usage
----------------
Device: atmega8

Program:     192 bytes (2.3% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)


Build succeeded with 0 Warnings...

Zdravím,
jak je možné že mi LED při použití prográmku pouze svítí?
Zkoušel jsem měnit zpoždění ale nepomohlo. LED pouze svítí. Jediné jak se mi to povedlo bylo při použití časovače a přerušení. Toto se mi ale zdá daleko jednodušší. Narazil jsem i na jiné příklady např robotika.cz/guide/blink/cs ale i za použití toho mi LED pouze svítí. AVR studio mi při krokování neskočí do smyčky. Jako by to přeskočí. Nechápu.

před proměnnou použitou jako počítadlo v cyklu napiš “volatile”. To klíčové slovo je sice určeno k jinému účelu, ale zabrání odstranění cyklu v důsledku optimalizací.

dokonale jednoduché. :slight_smile: díky moc

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

Ahoj, taky zápasím s AVR studiem.
Snažím se zkumpilovat program ale pořád mu něco chybí. V error listu píše “gcc plug-in: No AVR Toolchain installation found. The AVR GCC plug-in can still be used if you set up your own build tools.”
Postupoval jsem přesně podle výše zmíněného návodu, zdrojáky kopíruju Copy&Paste.

Nemáš nainstalovaný překladač (AVR Toolchain).