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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren