Problém so skompilovaním kódu, nepozná niektoré časti v kóde

Snažím sa spojazdniť ce web ovládané zapínanie a vypínanie relátka. Skrátka, na stránke kde je návod k poskladaniu celého zariadenia, je archív z testovacími zdrojovými kódmi. Používam Code vision avr, ale ked otvorím súbor test0.c, ktorý by mal slúžiť na test či funguje komunikácia medzi atmelom a ethernetovou časťou, tak mi ho nechce skompilovať. Vyhadzuje že nepozná niektoré časti v kóde. Mása tam použiť obvod atmega88 ale ja používam atmega16.Každopádne, aj ked si dám ten kód skompilovať pre mega88, nefunguje to. Má to niečo spoločné so súborom makefile? Viem že v tom archíve je, ale neviem ako sa používa. Ethernetová časť mi funguje podľa návodu, no stým kódom mám problémy. tuxgraphics.org/electronics/ … 6061.shtml

Prikladám aj konkrétny kód

/*********************************************

  • vim:sw=8:ts=8:si:et
  • To use the above modeline in vim you must have “set modeline” in your .vimrc
  • Author: Guido Socher, Copyright: GPL V2
  • This program is to test basic functionallity by getting an LED to blink.
  • See linuxfocus.org/English/November2004/ for details.
  • Chip type : ATMEGA88
    *********************************************/
    #include <avr/io.h>
    #include <inttypes.h>
    #define F_CPU 8000000UL // 8 MHz
    #include <util/delay.h>

void delay_ms(unsigned int ms)
/* delay for a minimum of */
{
// we use a calibrated macro. This is more
// accurate and not so much compiler dependent
// as self made code.
while(ms){
_delay_ms(0.96);
ms–;
}
}

int main(void)
{
/* INITIALIZE */
// Be very careful with low frequencies (less than 1MHz). Modern and fast programmers
// can not supply such low programming clocks. It can lock you out!
//
// set the clock prescaler. First write CLKPCE to enable setting of clock the
// next four instructions.
CLKPR=(1<<CLKPCE);
CLKPR=0; // 8 MHZ
//CLKPR=(1<<CLKPS0); // 4MHz
//CLKPR=((1<<CLKPS0)|(1<<CLKPS1)); // 1MHz
//CLKPR=((1<<CLKPS0)|(1<<CLKPS2)); // 0.25MHz

    /* enable PB1 as output */
    DDRB|= (1<<DDB1);

    while (1) {
                /* led on, pin=0 */
                PORTB &= ~(1<<PB1);
                delay_ms(500);
                /* set output to 5V, LED off */
                PORTB|= (1<<PB1);
                delay_ms(500);
    }
    return(0);

}

:arrow_right: administrator: přejmenováno z “Problém so skompilovaním kódu”
eth_rem_dev-1.2.tar.gz (62.1 KB)

Prekladač nepozná napr. PB1 a CLKPCE

Protože Mega16 nemá registr CLKPR a místo PB1 používá PORTB1.

Pro M88 se mi to přeloží bez chyb.

Ale tvůj kód je napsaný pro Avr-gcc !?

…Avr-gcc ??? em…co to je?

aha…už som na to asi prišiel… Je to nejaky linuxacky kompiler.

Žádný linuxový kompiler. GCC je univerzální, v našem případě se používá verze v balíku winavr. Spolupracuje s AVR studiem. sourceforge.net/projects/winavr/files/

Zkus ještě dát #include <avr_compiler.h> - to by měl být header Codevisionu pro překlad kódů j jiných compillerů (ICC a GNU- to je asi ten tvůj zdroj) ale budeš asi muset mít nainstalovaný GNU- GCC a v projektu v CV mít v Configure projects\C Compiler\Paths nastavený path na inc a lib knihovny GNU-GCC.

ďakujem za tipy…Už som sa v tom trochu zorientoval. Ten winavr mi to zkompiloval bez problemov.