Source Problem ICC

Gast #110574
Lesenswert?
• ▲
▼
Hey ..

habe nen ultra dummes Problem mit dem angehangenen Source ...

hier Auszugsweise mal die Hauptschleife im main(void) :

  while (1) {
//  delay(1000);
    for (a = 1; a<=1000; a++) {
      for (b = 1; b<=100; b++) {a=a;}
    }
    PORTD ^= PD1;
  }

Soll ne LED ganz simple zum blinken bringen .. so wie es da steht, geht
auch alles ganz wunderbar!!!

Nehme ich nun die for-Schleifen raus und setze den Funktionsaufruf
wieder in Kraft, passiert nada!

  while (1) {
    delay(1000);
    PORTD ^= PD1;
  }

Wäre cool, wenn jemand nen Blick in den Source wirft und mir sagt, wo
der Fehler liegt. Er ist klein, da bin ich mir sicher .. und ich werde
mich danach bestimmt schämen ;)) ...

Danke

 Hermann

PS: Geht es euch auch so, dass ihr nach nem Prozessorwechsel immer
wieder von vorne anfangen müsst??
Angehängte Dateien:
Gast #110576
Lesenswert?
• ▲
▼
Merkwürdig.
Ich kenn mich mit dem ICC auch nicht aus, aber wenn du deine Funktion
delay() über die main() Funktion schreibst, dann brauchst du
normalerweise kein Prototypendefinition.
Die Anweisung a=a; kannst du auch weglassen.

Fehlermeldungen gibt der Compiler auch keine raus???
Gast #110579
Lesenswert?
• ▲
▼
@Tobi: Nichts von beiden  .. hat keinen Zeitbezug .. ist nur ne einfache
Verzögerung über zwei Schleifen die time variable wird einfach in die
äussere Schleife eingesetzt um das leicht variieren zu können!

@Praktikant: Jepp .. das a=a hab ich durch nen ; ersetzt ... mit und
ohne Prototypes geht es leider nicht ..

@All:

Es hat auch nicht speziell was mit dem delay zu tun .. es geht einfach
darum, dass ich keine Funktionen aufrufen kann. Ich habe versucht das
"PORTD ^= PD1;" in ne Funktion auszulagern - ging auch nicht! Mit dem
MEGA8 und MEGA16 ging das auf dem ICC ohne Probleme ... erst jetzt, wo
ich den 128 drann hab, geht das nicht mehr ...

Hermann
Gast #110581
Lesenswert?
• ▲
▼
Hmm .. also Linker und Compileroptionen muss ich mal schaun .. habe da
noch nicht so die mega Erfahrung drinn. Das gleiche bezieht sich auf
das ASM-Listing (s.o.)

Find es nur merkwürdig, dass ganz simple Funktionsaufrufe nicht gehen!

hermann
Angehängte Dateien:
Gast #110582
Lesenswert?
• ▲
▼
So .. also es scheint am Compiler / Linker zu liegen ...
nach nem Upgrade und dem Versuch als Device den 128 mit m103 option zu
nehmen, ging es ..

Danach ergeben sich einige Unterschiede bei der Herstellung:

    iccavr -o Mega128 -LC:\Programme\uC\ICC\lib\ -ucrtatmega.o
-bfunc_lit:0x60.0x20000 -dram_end:0xfff  -bdata:0x60.0xfff
    iccavr -o Mega128 -LC:\Programme\uC\ICC\lib\ -ucrtatmega.o
-bfunc_lit:0x8c.0x20000 -dram_end:0x10ff -bdata:0x100.0x10ff

Der untere Eintrag geht nicht richtig .. der obere (mit m103 supp.)
einwandfrei .. Wobei das m103 Flag nicht programmiert ist!

Hermann
Gast #110583
Lesenswert?
• ▲
▼
Hmm .. muss mich berichtigen .. das Flag war doch programmiert! Ist das
so bei Auslieferung? ... Weil kann mich nicht drann erinnern, das getan
zu haben!

Egal .. jetzt geht wieder alles ganz normal ...

Thx

 Hermann

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