ATMega16 / ATiny2313 hex File größe / interner Flash

Gast #690412
Lesenswert?
• ▲
▼
Hallo,
ich habe ein Programm in C geschrieben, das ich auf einem Testboard mit 
ATMega16 getestet habe. Da ich nur sehr wenige I/O Ports benötige, 
möchte ich das ganze auf einen kleineren uC portieren (z.B. ATiny2313?). 
Über die Register-Anpassungen bin ich mir schon im klaren.
Wie verhält sich aber die Programmgröße (hex File) zu dem internen Flash 
des Prozessors? Der Mega16 hat 16kB, der Tiny2312 nur 2kB.

Mein *.hex File hat z.Z. 10kB. Entspricht das der Größe, die es auch im 
Flash belegt?

Ich kann das Programm leicht noch schlanker machen, da ich sehr viele 
Debuginfos (Klartext) über RS232 an den PC schicke, die nicht notwendig 
sind.

Oder gibt es einen kleineren (bezogen auf das DIL gehäuse) uC mit
- 1 * uart
- 6 I/O Ports
der sich besser eignet als der Tiny2313?

vielen Dank euch schon mal
 Daniela
Gast #690424
Lesenswert?
• ▲
▼
ATTiny45 hat nur 8 Pins. Wenn die Anschlüsse für die serielle 
Schnittstelle in den 8 I/O-Ports schon drin sind und interner Oszillator 
ausreicht, ist das wohl der kleinste. Hat 4k. Und die Größe des 
Hex-files ist nicht der verbrauchte Flash, sondern die des Bin-files, 
falls man eines erstellt. Hex ist immer größer.
Moderator Persönliche Seite #690442
Lesenswert?
• ▲
▼
Daniela wrote:

> Mein *.hex File hat z.Z. 10kB. Entspricht das der Größe, die es auch im
> Flash belegt?

Natürlich nicht.  Das Hexfile ist, wie der Name ja suggeriert, eine
hexadezimale Codierung des Binärcodes, den der Controller ausführt.
Damit hat man also schon mindestens den Faktor 2 als Größe (2 Bytes
hexadezimal für 1 Byte binär).  Außerdem kommt noch Overhead hinzu für
die Adressierung, eine Prüfsumme sowie die Zeilenstruktur, das macht
so (je nach Zeilenlänge) einen Faktor von 2,5 ... 3.  Je nachdem, wie
viele Debugstrings du da drin hast, könnte es also klappen oder auch
nicht, das auf einen kleineren Controller zu portieren.

> Oder gibt es einen kleineren (bezogen auf das DIL gehäuse) uC mit
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^

Beliebig, sowie du von DIL weggehst. ;-)

> - 1 * uart
> - 6 I/O Ports
> der sich besser eignet als der Tiny2313?

Der genannte ATtiny45 wäre wohl in der Tat die kleinste Option, aber
er ist dann in diesem Modus nur noch mittels HV-Programmierung
benutzbar, da du das /RESET-Pin zum normalen IO-Pin umfunktionieren
musst.

Die nächstgrößere Klasse sind die 4er ATtinys: ATtiny24/44/84.  Die
sind im 14pinnigen Gehäuse.  Ich hab' sie bislang nur als SO-14
gesehen (was heutzutage auch für einen Bastler keine Herausforderung
mehr ist), aber laut Datenblatt soll es sie auch als DIL geben.

Bekannt und beliebt sind die Megas der 8er Serie: ATmega8 (eher schon
veraltet) und dessen Nachfolger ATmega48/88/168.  Die kommen im
28pinnigen Gehäuse (im Falle der SMD-Version 32pinnig mit 2 ADC-Ports
mehr als bei DIL).

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.