www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Source Problem ICC


Autor: Hermann Gebert (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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??

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich benutz den icc compiler nicht aber trotzdem mal ein paar vorschläge.
ist das argument bei delay die mikro oder millisekunden der pause?

Autor: Praktikant (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: Marko B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Code ist zwar etwas seltsam, sollte aber funktionieren. Was sagt
denn das Assemblerlisting?

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

was ist nada ? ist LED aus oder an, ist es sicher dass sie nicht ganz
schnell blinkt - also dass was mit delay nicht stimmt ?
kannst Du das mit nem oszi checken ?

gerhard

Autor: Hermann Gebert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marko B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du die Compiler- und Linkeroptionen richtig eingestellt? Ansonsten
wie gesagt das Assemblerlisting lesen!

Autor: Hermann Gebert (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Hermann Gebert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hermann Gebert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.