Forum: Mikrocontroller und Digitale Elektronik Atmega 8 Programmierung in C


von Manuel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo AVR Freunde,

versuche verzweifelt einen Atmel Atmega 8 in C zu programmieren.
Doch leider scheitert es im Augenblick an paar "Kleinigkeiten".

Hab den avr-gcc compiler installiert. das

Doch leider kann ich keine passende header-Datei für den Atmega 8
finden.
es gibt nur iom83.h , diese habe ich dann einfach eingebunden.

Das make_file habe ich entsprechend meinem Controller angepasst.

Hinzu kommt dass ich keinen äußeren Takt auf den µC gebe, sondern auf
den internen Taktgeber zurück greife. Hier besteht die Möglichkeit
verschiedene Frequenzen per Definition im Code auszuwählen. 1 , 2, 4
oder 8 MHz müssten das sein. Dies sollte soweit ich weiss mit
"OSCCAL" geschehen.. jedoch wird vom compiler die zuweisung : OSCCAL
= 255; nicht akzeptiert.

C-Datei im Anhang.

wer kann mir kurz weiterhelfen ?

Gruß Manuel

von Hubert (Gast)


Lesenswert?

Es gibt anscheinend viele Wege nach Rom. Mein Kontroller steht im
makefile und nicht im c-file.
Den Oszillator stellst du mit den Fuses ein, mit OSCCAL kannst du die
Frequenz nur variieren.

von Matthias (Gast)


Lesenswert?

Hi

das Beispiel das du da verwendest ist Jahre alt und dürfte so
garnichtmehr funktionieren (tut es ja offensichtlich auch nicht).

Der Controller wird im makefile eingestellt. Verwende einfach Mfile das
bei WINAVR dabei ist um dein Makefile zu erstellen. Und dann probier
einfach mal ein Miniaturprogramm:

#include <avr/io.h>

int main(void)
{
  DDRB = 0xFF;

  while(1)
  {
    PORTB=0;
    PORTB=0xFF;
  }
}

Matthias

von Manuel (Gast)


Lesenswert?

Hallo Matthias gut, bin deinem Rat gefolgt und hab mal den code
übernommen.

jetzt taucht aber folgende fehlermeldung beim compilieren auf.

vielleicht stimmt für io.h der pfad nicht, mag ja sein,
aber der compiler kennt anscheinend den Atmega8 nicht !
Was nu ??

/*     Fehler medlung beim Compilieren ..     */

Compiling: main.c
avr-gcc -c -mmcu=atmega8 -I. -gstabs   -Os -funsigned-char
-funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=main.lst  -std=gnu99
-Wp,-M,-MP,-MT,main.o,-MF,.dep/main.o.d main.c -o main.o
Unknown MCU `atmega8' specified
Known MCU names:
   avr2
   at90s2313
   at90s2323
   attiny22
   at90s2333
   at90s2343
   at90s4414
   at90s4433
   at90s4434
   at90s8515
   at90c8534
   at90s8535
   avr3
   atmega103
   atmega603
   avr4
   atmega83
   atmega85
   avr5
   atmega161
   atmega163
   atmega32
   at94k
   avr1
   at90s1200
   attiny10
   attiny11
   attiny12
   attiny15
   attiny28
cc1.exe: MCU `atmega8' not supported
main.c:1:20: avr/io.h: No such file or directory
main.c: In function `main':
main.c:5: `DDRB' undeclared (first use in this function)
main.c:5: (Each undeclared identifier is reported only once
main.c:5: for each function it appears in.)
main.c:9: `PORTB' undeclared (first use in this function)
main.c:12:1: warning: no newline at end of file
make.exe: *** [main.o] Error 1

> Process Exit Code: 2

trotzdem danke
Gruß, Manuel

von Matthias (Gast)


Lesenswert?

Hi

ich glaub du hast da einen steinalten avr-gcc. Wenn du unter Windows
arbeitest nimm mal http://winavr.sourceforge.net/

Matthias

von Miki (Gast)


Lesenswert?

Und lese das Wiki sowie die aktuellen Tutorials ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.