Atmel MC; ATTiny45/85 Alternative mit mehr Flash - 16kByte, Rest möglichst gleich, stromsparend,.

Gast #3136439
Lesenswert?

Hallo,

habe bei einem Projekt einen ATTiny45 gewählt. Stromsparend, 128kHz, 3x 
8bit ADC, 1xIO Output... Nun komme ich leider mit dem Code an die 
Grenzen der *.hex. ATTiny45 geht schon nicht mehr. Der 85er wird wohl 
auch nicht reichen. Der Code bildet eine Logik ab, die kaum zu 
reduzieren ist und sollte weiterhin ANSI-C gcc sein.

Welchen Atmel ATxxxx würdet ihr empfehlen, der einen "ATTiny85-V-DIL" 
aber mit min. 16kByte gut ersetzen könnte. Anzahl der DIL wird wohl 
wachsen. Dachte da z.B. an einen ATMEGA32L8 DIP,... Geschwindigkeit ist 
untergeordnet, Energieverbrauch ist Prio 1.

Gruß und Dank Markus
#3136485
Lesenswert?

mgolbs schrieb:
> Der Code bildet eine Logik ab, die kaum zu
> reduzieren ist und sollte weiterhin ANSI-C gcc sein.

Das halte ich aber für ein Gerücht.
8kB ist schon ne riesen Menge für so nen kleinen MC.
Das Programm mußt Du mir erstmal zeigen, das da nicht reinpaßt.

Du solltest vielleicht nicht für jede Bitvariable long long verwenden, 
die Optimierung einschalten (-Os) und keinen Copy&Paste-Monstercode, 
sondern Unterfunktionen mit Parametern.
Gast #3136848
Lesenswert?

Hallo,

danke für die vielen Hinweise. Wass soll das Programm machen. Es werden 
drei AD's benötigt, wo die drei Achsen des MEM's dran hängen. Der MEMS 
ist beweglich an einem Objekt befestigt, oder besser das Objekt kann 
keinen festen Bezug zur Erdbeschleunigung in Abhängigkeit vom Gehäuse 
sicherstellen. Code muss vollkommen unabängig von räulicher Lage 
funktionieren, Lage erkennen..

Dabei muss jede Sekunde der Betrag des Absolutbeschleunigungsvektors 
berechnet und klassiert werden. Eine spezielle Einlauffunktion ist 
ebenfalls notwendig. Weiterhin muss der Algorithmus noch 
Zeitklassierungen von jeweils 25% Fenstern machen. Das alles ist durch 
die Systembedingungen fest und fix.

Am Ende kommt noch eine Modul für die Datenanalyse. Code ist zu 90% 
fertig und hat aktuell 7kB. Ich habe 3xfloat für die Fließzahlen (g's), 
ein double (Wurzelfunktion) und einige int die anteilig byte sein 
könnten....

Ich werde mir also mal die ATmega328P und ATMega168P anschauen.

Gruß und Dank Markus
#3136959
Lesenswert?

mgolbs schrieb:

> habe bei einem Projekt einen ATTiny45 gewählt. Stromsparend, 128kHz, 3x
> 8bit ADC, 1xIO Output... Nun komme ich leider mit dem Code an die

128kHz? Es könnte vom Energieverbrauch her günstiger sein, eine deutlich 
fettere Architektur wie z.B. PIC32 (da gibts auch einige im SDIP28 
Gehäuse, die rechnen eine Zehnerpotenz schneller als ein AVR, ohne dafür 
das 10-fache an Leistung zu benötigen) zu verwenden, die die Aufgabe in 
deutlichst kürzerer Zeit löst und dafür längere Zeit im Sleep-Zustand 
verbringt, bis der nächste Zyklus startet.

fchk
Gast #3137404
Lesenswert?

Hallo,

danke für die Rückmeldungen. Habe jetzt alles auf int umgestellt, mit 
einigen vertretbaren Abstrichen bei Genauigkeit. Bin nun mit einer 
lauffähigen Grundversion bei knapp 8kB - ATTiny85.

Diese werde ich erst mal praktisch testen. Sollte die Logik weiter 
wachsen müssen, werde ich auf 16kB AT... umsteigen. Die Logik macht 
einfach den benötigten Flash Speicher aus. Sicher ist auch mein C-Code 
nicht das absolute Optimum. Wenn es funktioniert und ich 1€ mehr für die 
MC-Unit ausgebe, ist das mein bevorzugter Weg :-)

Auf andere Systeme möchte ich nicht umsteigen, auch wenn diese eventuell 
besser sind. Das ist für einen gelegenheits Hobbyelektroniker von der 
Vielfalt dann nicht zu beherrschen, Standdards sind für mich Prio 1.

Gruß und Dank
Markus
Gast #3138215
Lesenswert?

Hallo,

habe wohl doch noch einen größeren Fehler gemacht. Bin bei der Bewertung 
für die Programmgröße im Flash immer von der hex Dateigröße im 
Dateimanager ausgegangen. Mit AVRDude wird mir nach der Programmierung 
aber ein deutlich kleinerer Flashbedarf angezeigt. Wie ist das zu 
verstehen?

Gruß und Dank Markus
Gast #3138234
Lesenswert?

Hi

>Wie ist das zu verstehen?

Ein Hex-File ist keine Binärdatei. Jedes Byte wir durch zwei 
ASCII-Zeichen dargestellt. Dazu kommen noch zusätzliche Informationen. 
Pi mal Daumen ist ein Intel-Hex-File etwa zweieinhalb so groß wie die 
darin enthaltenen Daten als Binärfile.

MfG Spess

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