Anfängerprobleme C Programm

OP #2473404
Lesenswert?

Hallo,
bin gerade daran mir das AVR GCC Tutorial anzueignen...habe aber schon 
meine ersten Problem. Möchte mit dem ATMEGA 8 anfangen.

Hier mein Programm:
1
#include <avr/iom8.h>
2
#include <avr/delay.h>
3

4
int main(void)
5
{
6
  while (!(PINC&(1<<PC0))) 
7
  {
8
  DDRD=0xff;
9
  PORTD&=~(1<<PD0);
10
  }
11
}

Bekomme aber immer diese Fehlermeldungen:

D:\AVR 
Programme\Programmierboard\..\..\Programme\WinAVR20100110\avr\include/av 
r/iom8.h:41:4:  error: #error "Include <avr/io.h> instead of this file."
In file included from ../Programmierboard.c:2:0:
D:\AVR 
Programme\Programmierboard\..\..\Programme\WinAVR20100110\avr\include/av 
r/delay.h:36:2:  warning: #warning "This file has been moved to 
<util/delay.h>."
In file included from D:\AVR 
Programme\Programmierboard\..\..\Programme\WinAVR20100110\avr\include/av 
r/delay.h:37:0,
                 from ../Programmierboard.c:2:
D:\AVR 
Programme\Programmierboard\..\..\Programme\WinAVR20100110\avr\include/ut 
il/delay.h:85:3:  warning: #warning "F_CPU not defined for 
<util/delay.h>"
../Programmierboard.c: In function 'main':
../Programmierboard.c:6:2: warning: implicit declaration of function 
'_SFR_IO8'
../Programmierboard.c:8:2: error: lvalue required as left operand of 
assignment
../Programmierboard.c:9:2: error: lvalue required as left operand of 
assignment
make: *** [Programmierboard.o] Fehler 1
Build failed with 3 errors and 3 warnings...


Was mache ich falsch???
Gast #2473412
Lesenswert?

Martin B. schrieb:
> Bekomme aber immer diese Fehlermeldungen:
Nun, die Meldungen sind eigentlich recht eindeutig:

> error: #error "Include <avr/io.h> instead of this file."
Und
> warning: #warning "This file has been moved to <util/delay.h>."

Und
> warning: #warning "F_CPU not defined for <util/delay.h>"

Die ersten beiden sind selbstredend, für die letzte findest du genügend 
Information.
#2473416
Lesenswert?

Martin B. schrieb:

> #include <avr/iom8.h>

Wie auch die erste Meldung deines Compilers besagt (hast du die 
gelesen?), wird diese Datei nicht includiert.

Du inkludierst immer

#include <avr/io.h>

dass sich da ein Mega8 dahinter versteckt und in weiterer Folge iom8.h 
zu inkludieren ist, das regelt io.h selber. Deshalb gibst du ja auch den 
Prozessortyp an.

> #include <avr/delay.h>

Auch hier ist doch die Fehlermeldung aussagekräftig genug.
Die Datei ist auf
#include <util/delay.h>


Du musst die Fehlermeldungen, die du bekommst schon auch lesen!
Die werden nicht einfach nur so zum Spass ausgegeben.
#2473419
Lesenswert?

ich schrieb:
> Sry, aber was ist das Problem? In der Fehlermeldung stehen jede Menge
> Hinweise.

Du #includest avr/iom8.h

Nimm stattdessen avr/io.h!

Welche CPU man hat, sollte vom AVR-Studio oder aus dem makefile heraus 
oder wie auch immer definiert sein, und je nach dem wird dann von io.h 
die richtige Headerdatei genommen, z.B. iom8.h bei einem atmega8.
#2473420
Lesenswert?

Hallo Martin,

der gcc spuckt alles aus.

F_CPU muss im Makefile definiert werden.
Die Includefiles stehen in:
<avr/io.h>
<util/delay.h>

aber Delay wird nicht verwendet, kann also weg !

sauber wäre es, wenn der Leser sieht was Du machst:
1
<avr/io.h>
2

3
int main(void) 
4
{
5
 PORTC |= _BV(PC0); //der leser sieht sofort: pullup-on an PC0 'on'
6
 DDRC &= ~_BV(PC0); //der leser sieht sofort: PC0 ist Eingabe
7

8
 DDRD = 0xff;
9

10
 while ( ((~PINC) & _BV(PC0)) == _BV(PC0) ) // Taster (==0) gedrückt
11
  {
12
    PORTD &= ~_BV(PD0); // pin auf low
13
    // macht das Sinn ?
14
  }
15

16
  return 0;
17
}
OP #2473441
Lesenswert?

Also habs jetzt so abgeändert:
1
#include <avr/io.h>
2
#include <avr/iom8.h>
3
#include <util/delay.h>
4

5
int main(void)
6
{
7
  DDRD=0xff;
8
  while (!(PINC&(1<<PC0))) 
9
  {
10
  PORTD&=~(1<<PD0);
11
  }
12
}


F_CPU muss ich doch nicht definieren oder??? Steht doch in der delay.h 
datei.

Jetzt bekomm ich noch die Fehlermeldung:
Fatal error: unknown MCU: atmega8a

Liegt das daran das ich den beim Erstellen des neuen Projekts den 
ausgewählt habe? Aber es gibt doch nich den atmega8 ohne dem "a" 
dahinter.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren