Programm läuft mit ATMEGA8, nicht jedoch mit AT90S4433

Gast #177264
Lesenswert?
• ▲
▼
Ich habe vergeblich versucht, ein externes LED-Display (hat eigenen
einen Controller) mit einem AT90S4433 anzusteuern, daraufhin habe ich
einen (Pinkompatiblen) ATMEGA8 verwendet und hiermit funktionierte es.


Nun habe ich an dem Quellcode ( bis auf MCU = xy in dem makefile)
absolut nichts geändert, der Compiler (gcc) gibt mir weder Fehler noch
Warnungen aus, auch eine Kontroll LED, die der MCU zum testen ein und
ausschalten sollte, verhielt sich wie erwartet. Der MEGA8 läuft mit dem
internen Oszillator mit 8 MHZ, der 90S4433 mit einem externen 8MHZ
Quarz, somit schließe ich Timingprobleme aus. Den 90S4433 habe ich auch
mal duch einen anderen getauscht, mit dem gleichen Ergebnis. Sowohl
Batteriebetrieb, wie auch den Betrieb mittels Spannungsregler +
Netzteil habe ich versucht.

Da jedoch die erzeugten Binaries je nach eingestelltem MCU
unterschiedlich groß sind, habe ich mir mal das Assemblerlisting
angesehen und zwischen MEGA8 und 90S4433 verglichen. Bei dem ATMEGA8
werden 3x je zwei mov duch movw zusammengefasst und zusätzlich Anstelle
von (beim 90S4433):
  subi r28,lo8(-(1))
  cpi r28,lo8(16)
  brsh .+2
  rjmp .L17
folgenedes geschrieben (MEGA8):
  subi r28,lo8(-(1))
  cpi r28,lo8(16)
  brlo .L17
demnach müsste das Binary für den MEGA8 4 Wörter (= 8Byte) kleiner
sein, als das für den 90S4433.
Dem ist jedoch nicht so, das Binary für den MEGA8 ist 4 Byte größer
als das dür den 90S4433.
Kann es an dem Compiler liegen, dass das Programm nicht wie gewünscht
läuft, oder hat das dies doch elektrische Ursachen?
Angehängte Dateien:
Gast #177266
Lesenswert?
• ▲
▼
Ok, die unterschiedliche Anzahl der Interruptvektoren würde
Code-Größenunterschiede zwischen den einzelnen AVRs erklären.
Es muss sich bei mir wohl definitiv um ein elektrisches Problem
handeln, da das obige für einen 90S4433 compiliertes Programm (keine
Interrupts, keine Verwendung von "spezila Hardware" wie Timern oder
UART) auch in einem MEGA8 fehlerfrei läuft (umgekehrt würde es wegen
dem erweitertem Befehlssatz des MEGA8 selbstverständlich nicht gehen).

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.