www.mikrocontroller.net

Forum: Compiler & IDEs Probleme mit dem AVR-GCC


Autor: Joachim Bonath (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe ein Problem mit dem AVR-GCC. Zum Testen habe ich kleines
C-Programm für einen AT90S8515 geschrieben. Der AVR-GCC übersetzt
dieses auch ohne Probleme. Der Mikrocontroller funktioniert allerdings
nicht mit dem erzeugten HEX-File. Nach mehreren erfolglosen Versuchen,
habe ich im AVR-Studio 3.56 das ganze mal mit dem Debugger unter die
Lupe genommen und festgestellt, dass es offensichtlich ein Problem mit
der Prozedur delay_1s gibt. Die Prozedur tut das, was sie tun soll.
Beim Rücksprung ins Hauptprogramm geht aber offensichtlich etwas
schief. Der Befehlszaehler geht den ganzen Flash-Speicher durch bis zum
bitteren Ende. Dann beginnt das Programm wieder von ganz vorne. Ich
habe den Quelltext (8515tmr1.c) das HEX-File, Objekt-File und die
MAKE.BAT im Anhang beigefügt, mit der Hoffnung, dass jemand das Problem
lösen kann. Ich bin noch recht unerfahren und verstehe nicht, was ich
hier falsch gemacht habe.
Aber man möchte ja dazulernen. Ich tippe auf ein STACK-Problem seitens
des Compilers.
Für Antworten möchte ich mich schon jetzt bedanken.

Gruß,
Joachim

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

1.sbi(), cbi(), loop_..., outp() usw sollten nicht verwendet werden.
Normaler C-Syntax für Bitoperationen (z.B. PORTD|=(1<<2);) reicht.

2.Bei mir funktioniert der Code im AVRStudio4 problemlos.

3.Du solltest für C nicht den g++ starten

4.Warum den -O2? -Os und nichts anderes sollte man verwenden

5.Warum verwendest du kein makefile?

Matthias

Autor: Joachim Bonath (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Matthias,

Vielen Dank fuer den Tip mit dem Makefile. Ich habe das bisher immer
ohne gemacht, da ich wie gesagt noch Anfänger bin. Jetzt habe ich mir
das mal näher angeschaut und festgestellt, dass es ja gar nicht so
schwer ist, das Makefile richtig abzustimmen. Das Problem ist übrigens
damit verschwunden. Das Programm funktioniert jetzt wunderbar.
Das mit den Bit-Operationen hab ich auch ausprobiert. Funktioniert
bestens und ist auch recht übersichtlich. Hab allerdings am Anfang
nicht verstanden was das (1<<2)genau bewirkt. Aber auch das ist
mittlerweile klar. Die 2 steht für das gewuenschte Bit, die 1 bedeutet,
dass dieses Bit durch verodern gesetzt wird - sprich: Die 1 wird um 2
Stellen nach links geschoben (ergibt 4) und das ganze dann mit dem
Inhalt von z.B. PORTD verodert. Hat natürlich den Vorteil, dass evtl.
bereits vorher gesetzte Bits nicht einfach überschrieben werden. Somit
ist diese Lösung natürlich sauberer als einfach mit outp einen Wert an
den Port auszugeben.

Gruß und Vielen Dank nochmals,
Joachim

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wie wäre es denn mit der AVREdit3.5 Version. Hier nach richtiger
Einstellung des Controllers und ein paar Daten das passendes Makefile
mit Compilierung erzeugt. Der Link ist bei den AVRfreaks zu finden.

Grüße

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVRedit gilt als völlig überaltert, was den Compiler/die Bibliotheken
betrifft.

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.