www.mikrocontroller.net

Forum: Compiler & IDEs Probleme bei der Portierung von ATMEGA163 auf ATMEGA16


Autor: Lolly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo leuts,

ich versuche gerade mein Programm für eine Wetterstation vom ATMEGA163
auf den ATMEGA16 zu portieren. Auf dem ATMEGA163 hat das Programm nur
ca. 11KByte. Gebe ich dem AVRGCC jetzt an, er solle das gleiche Progg
für den 16er compilieren meint er der Platz würde nicht ausreichen, da
das Programm zu gross sei!
Warum wird das Programm über 5kByte größer??

Danke schon mal,
Gruß Lolly

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

da ATMega163 und ATMega16 der selben Architektur (avr5) angehöhren
sollte der generierte Code eigentlich identische sein. Kannst du den
Code hier mal reinstellen? Ich jag ihn dann mal durch den Compiler und
schau mir an was dabei rauskommt.

Matthias

Autor: Lolly (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Matthias,

hier das C-File

Gruss Lolly

Autor: Lolly (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
und das H-file

Gruss Lolly

Autor: Matthias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Im Anhang findest du eine Version die für den ATMega16 durchkompiliert
(aktueller WINAVR). Es kommen zwar einige Warnungen aber die behebst du
bitte selber oder schaust ob man sie ignorieren kann.

Jetzt noch ein paar Bemerkungen:

1. Teile deinen Source in mehrere Dateien. Das Ding ist
unübersichtlich.

2. Verwende kein outp(xxx,yyy); xxx = yyy; tuts auch und ist klarer.

3. sbi(UCSRB,3); Schreibt man besser als UCSRB |= (1<<3);

4. Funktionsprototypen sollten so
   datentyp funktionsname(datentyp);
   und nicht so
   datentyp funktionsname();
   aussehen. Wobei void als Datentyp zu betrachten ist.

5. Verwende unbedingt einen aktuellen Compiler.

6. Achte darauf was der Compiler dir sagt. Zwei Meldungen deuten auf
einen Programmierfehler hin.

Nicht böse sein. Das sind nur gut gemeinte Hinweise die einem das Leben
erleichtern.

Matthias

Autor: Lolly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, danke mal! Die Wetterstation war mein erstes Programm in C.
Bisher habe ich mich mit Bascom durchgeschlagen.

Ich verwende den avrgcc unter linux und bin grad dabei mir die neuen
versionen zu besorgen. Das Programm ist prinzipiell fertig und läuft
auch schon auf 20 Wetterstationen.
Jetzt wollten noch ein paar leute die wetterstation nachbauen und
reichelt verkauft keine atmega163 mehr :-(
Um die Warnings werd ich mich kümmern, danke für die tipps. Meine Docu
zur avrlib waren schon ziemlich alt und in der stand z.b. ausdrücklich
drin, dass register=wert nicht funktioniert.
Durchkompiliert ist das Proggi immer.. es sei nur zu gross für den
atmega16.

Vielen Dank für deine schnelle Reaktion.

Bis dann,
Florian

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

dann war das aber ein sehr alter GCC. IIRC funktioniert register =
wert; schon über ein Jahr. Daher evtl. auch die Probleme mit dem
ATMega16.

Matthias

Autor: Lolly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja wars.. ist irgendwie version 1.2002

ich hab das ganze paket fertig von einem bekannten gekriegt..

naja.. grad compiliert mir die neueste version vom gcc...

Cu then,
Lolly

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

binutils und avrlibc nicht vergessen.

Matthias

Autor: Lolly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach mehreren Stunden die neue Version vom GCC zum compilen zu bewegen
funktioniert es jetzt endlich.
Ich habe jetzt einen selbstkompilieren gcc-3.3.2-avr mit den neuesten
binutils und avr-libc. Und siehe da: es funktioniert auch mit dem
atmega16. Das file wird nun nur noch 20Byte größer als für den 163er.

Vielen Dank für die Hilfe Matthias.

Cu then,
Lolly

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.