Problem z AVR GCC

Feb 18, 2004 4 Replies

Witam Zwracam siê do Was z ogromn± pro¶b± o rade w sprawie programu a w³a¶ciwie b³êdu wyskakuj±cego podczas kompilacji programu. Otó¿ mam zainstalowany AVRStudio i podczepiony do niego kompilator gcc, ->



Napisany jest nastêpuj±cy prosty programik spi1.c :



#include<io.h>



#include<iom16.h>



int main( void ) { unsigned char led, i, j, k; outp(0xff,DDRA); led = 1;



for (;;) { outp(~led, PORTA); led <<= 1; if (!led) led = 1; for (i=0; i<25; i++) for(j=0; j<25;j++) k++; } }


W pliku makefile zmienilem MCU na "MCU = atmega16"



i tu podczas kompilacji wywala mi komunikat:



avr-gcc-c-g-Os-Wall-Wstrict-prototypes-Wa,-ahlms=spi1.lst -mmcu=atmega16 -l. spi1.c- spi1.o In the file included from C:/AVRGCC/avr/include/io.h:45, from spi1.c:1: C:/AVRGCC/avr/include/iom16.h:36:4:#error "Include <avr/io.h> instead of this file." spi1.c: In function 'main': spi1.c :7: warning: implicit declaration of function 'outp' spi1.c:7: warning: implicit declaration of function '_SFR_IO8' spi1.c:20:2: warning: no new line at end of file C:\avrgcc\bin\make:***[spi1.o]Error1 Errors detected during link stage Stopped



co ciekawe gdy zmienie procka w makefile na atmega128 ( lub 16) i to samo uczynie w pliku zrodlowym problemy znikaja i wszystko sie kompiluje ;-(((( Poradzcie co jest bo nie dam z tym rady....



Pozdrawiam Sako


Sproboj zamienic te 2 inlcudy na #include <avr/io.h> i zobacz co sie dzieje. MOze akurat pomoze

Best Regards Tomek

U¿ytkownik tomkut snipped-for-privacy@poczta.fm w wiadomo¶ci do grup dyskusyjnych napisa³: snipped-for-privacy@as2-25.krakow.dialup.inetia.pl...

Hmm zmieni³em ale chyba nie tedy droga poniewa¿ teraz nie mo¿e znale¼æ pliku/ katalogu. spi1.c:2:22:avr/io.h: No such file or directory ;-(((

Sako

[...]

No właśnie - zrób jak prosi kompilator:

#include <avr/io.h>

A w celu ustawiania bitów najlepiej wykorzystuj operacje arytmetyki bitowej i bezpośrednie odwołania do portów zamiast makr outp, np:

DDRA = 0xff; PORTA |= (1 << LED_BIT);

itp. Niektórzy zalecają stosowanie makra _BV(bit) zamiast po prostu (1<<bit) ale to jest IMHO mniej czytelne.

Sako wrote: [Ciach] W kazdym razie OEQuote Fix fajnie potraktowal jego wypowiedz... a zwlaszcza petle for :)

formatting link

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required