Forum: Mikrocontroller und Digitale Elektronik Problem beim Einstieg


von guard (Gast)


Lesenswert?

Hallo, ich versuche folgendes Programm zu compilieren:
1
#define F_CPU 4000000  // 4 MHz
2
3
#include <avr/io.h>
4
#include <util/delay.h>
5
6
int main()
7
{
8
  unsigned char i;
9
10
  DDRB = 0xff;
11
  PORTB = 0x00;
12
  
13
  while(1)
14
  {
15
    PORTB ^= 0xff;
16
    for (i=0; i<50; i++)
17
      _delay_ms( 10 );
18
  }
19
  return 0;
20
}

Es kommt aber der Fehler: "internal compiler error: Illegal instruction"
Frage: Was kann ich tun? ;-)

von Ekschperde (Gast)


Lesenswert?

Beim GCC könnte man sich die temporären Dateien mal angucken.
Die nötigen Flags ins Makefile und dann gucken wie weit er kommt.

von guard (Gast)


Lesenswert?

???
Ich benutze AVR-Studio, falls das weiterhilft. Nach drücken von F7 kommt 
der Fehler.

von yalu (Gast)


Lesenswert?

Dem Code nach zu urteilen, verwendest du den GCC für AVRs Bei mir
kompiliert der Code sowohl mit GCC 4.2.3 als auch mit 4.3.0.

Welchen AVR benutzt du? Welche Compiler-Version?

von holger (Gast)


Lesenswert?

Das Programm sieht ok aus.

>Es kommt aber der Fehler: "internal compiler error: Illegal instruction"

Den hab ich noch nie gesehen.
Für welchen uC ist das Programm ?

von yalu (Gast)


Lesenswert?

> Ich benutze AVR-Studio, falls das weiterhilft.

Zusammen mit dem AVR-Studio hast du wahrscheinlich WinAVR installiert,
das u.a. den GCC enthält. Welche Versionsnummer hat dieses?

von guard (Gast)


Lesenswert?

Ich benutze den ATmega8

von holger (Gast)


Lesenswert?

Und was für einen PC mit welchem Betriebssystem benutzt du ?

Hast du schon mal ein Programm ohne Fehler compiliert ?

von guard (Gast)


Lesenswert?

PC: AMD 300 GHz mit Windows XP

Ja, sobald ich das _delay_ms() rausnehme, funktioniert alles. So habe 
ich z.B. ein Programm geschrieben, was einfach nur den Port auf 0xff 
setzt.
Auch avr/delay.h habe ich schon anstelle von util/delay.h implementiert. 
- Erfolglos!

von yalu (Gast)


Lesenswert?

> PC: AMD 300 GHz

Alles klar: Du hast deinen PC ist zu sehr übertaktet ;-)

Aber Spaß beiseite: Ich bin zwar kein WinAVR-Benutzer, aber es gab es
in letzter Zeit wohl Versionen (200804xx mit xx<30 oder so), die nicht
ganz so gut funktionierten und deswegen wieder zurückgezogen wurden.
Vielleicht hast du so eine erwischt. Probier vielleicht einfach mal
die aktuellste (20080512) oder eine davor (20080430) aus.

Der da

  http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=435954

hat wohl das gleiche Problem gehabt mit der Version 20080412 (gab es
die überhaupt, oder meint er 20080402?). Allerdings schreibt er nicht,
ob und wie er das Problem gelöst hat. Aber ein Update ist sicher kein
Fehler.

von guard (Gast)


Lesenswert?

Alles Klar! Ich habe jetzt einen anderen PC benutzt (mit wahrscheinlich 
auch einer anderen GCC- und AVR Studio Version) - und es funktioniert 
alles!!
Besten Dank für die Tipps!!! ;-)

von mr.chip (Gast)


Lesenswert?

Ja, es gibt manchmal seltsame AVRStudio oder WinAVR Versionen bzw. Bugs. 
Ein Update (gerade bei WinAVR kommen die einigermassen regelmässig) 
hilft eigentlich meist.

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.