Forum: Mikrocontroller und Digitale Elektronik ATMega16 / ATiny2313 hex File größe / interner Flash


von Daniela (Gast)


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

von Sebastian (Gast)


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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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).

von Daniela (Gast)


Lesenswert?

Danke für die Infos.
werde mir die genannten uC mal ansehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.