-         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 24 von 24

Thema: ATtiny85 Speicher knapp, was tun?

  1. #21
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.749
    Anzeige

    Zitat Zitat von Ceos Beitrag anzeigen
    Dinge wie strings, modulo rechnung oder floating point berechungen kosten MASSIV speicher, da immer gleich die ganze bibliothek eingebunden wird, ohne das auszukommen ist aber definitiv nicht einfach
    ich hätte es zwar auch gerne empfohlen aber da mir eine hinreichende alternative fehlte hab ich mich da lieber rausgehalten
    wie ich es meinte, war:
    der einfache ANSI C-string (klein geschrieben) Datentyp char * wird ja immer eingebunden,
    C++ std::string (klein geschrieben) gibt es bei Arduino überhaupt nicht,
    die C++ String Klasse (groß geschrieben) samt ihrer Klassen-Methoden wird aber, soweit ich weiß, nur eingebunden, sobald man sie tatsächlich benutzt;
    dass die C++ String Klasse viel Zusatz-Speicher braucht, sobald man sie benutzt, deckt sich aber mit den Beobachtungen des OP.

    Ob und wie weit das mit dem Zusatz-Speicherbedarf aber für die ANSI C string library Funktionen (string.h, klein geschrieben, mit strcpy und strcat) in der Arduino IDE ebenfalls gilt, wäre echt mal auszutesten - auch diese lib muss ja nicht explizit #included werden, denn die Arduino IDE macht das automatisch, implizit.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  2. #22
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    34
    Beiträge
    3.406
    auch was die math lib und die string lib angeht, kann man in den compiler einstellungen rumspielen, sodass er nicht immer die komplette lib benutzt sondern nur einen teil davon, aber das geht zu tief in die materie "wie konfiguriere ich meinen compiler"

    ich kann nur wärmstens empfehlen sich entweder ein Buch für den ansi-c compiler zu holen und sich mit den compiler flags auseinander zu setzen und zusätzlich im Inet schlau zu machen wie man den compiler von arduino "justieren" kann ... oder lass den Buch opart weg und such dir eine online referenz (warnung, fast nur in englisch zu haben)

    da fällt mir noch was wichtiges ein, wenn man den GANZEN printf kram weg lässt spart man ebenfalls UNMENGEN speicher, leider ist aber die arduino lib schon damit zugepflastert und man kann es nicht wirklich umgehen
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #23
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.749
    Zitat Zitat von Ceos Beitrag anzeigen
    auch was die math lib und die string lib angeht, kann man in den compiler einstellungen rumspielen, sodass er nicht immer die komplette lib benutzt sondern nur einen teil davon, aber das geht zu tief in die materie "wie konfiguriere ich meinen compiler"

    ich kann nur wärmstens empfehlen sich entweder ein Buch für den ansi-c compiler zu holen und sich mit den compiler flags auseinander zu setzen und zusätzlich im Inet schlau zu machen wie man den compiler von arduino "justieren" kann ... oder lass den Buch opart weg und such dir eine online referenz (warnung, fast nur in englisch zu haben)

    da fällt mir noch was wichtiges ein, wenn man den GANZEN printf kram weg lässt spart man ebenfalls UNMENGEN speicher, leider ist aber die arduino lib schon damit zugepflastert und man kann es nicht wirklich umgehen
    wie es grundsätzlich geht, weiß ich von GCC auf dem Pi.
    Ich spreche hier also nur über die Arduino-IDE mit den default-Einstellungen, so wie sie jeder normale Arduino-Nutzer verwendet, und wie es die Arduino IDE eben dann automatisch macht: Da wird normalerweise nichts an Compile- oder Build-Flags oder Makefile herummanipuliert.

    Es geht also nur darum, inwiefern sich allein dadurch etwas ändert, dass man vollständig ohne die String-Klasse im eigenen Sourcecode auskommt, sondern stattdessen alleine char* oder char[] verwendet (d.h. nullterminierte C-strings), und dann entweder mit oder ohne Verwendung von zusätzlichen cstring-lib-Funktionen wie strcat oder strcpy arbeitet: was ändert das am Speicherbedarf für ansonsten identische Programme?
    Das war die Frage an den OP.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  4. #24
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    43
    Beiträge
    620
    Zitat Zitat von spunky9003 Beitrag anzeigen
    ok, ich probiere das mal...

    ...hab dann noch überlegt, alle Daten bit-weise zu übertragen, es sollen ja mehrere Module seriell verbunden werden, könnte dann bei 8 Modulen so aussehen, das erste Byte gibt eine Fehlermeldung weiter, das zweite Byte gibt die aktuelle Modul-Nummer ans nächste Modul:

    Modul 1 sendet: 00000000 00000001 (Modul 1 ok)
    Modul 2 sendet: 00000000 00000010 (Modul 1+2 ok)
    Modul 3 sendet: 00100000 00000011 (Modul 1+2 ok, Modul 3 Fehler)
    Modul 4 sendet: 00100000 00000100 (Modul 1+2+4 ok, Modul 3 Fehler)
    Modul 5 sendet: 00100000 00000101 (Modul 1+2+4+5 ok, Modul 3 Fehler)
    Modul 6 sendet: 00100000 00000110 (Modul 1+2+4+5+6 ok, Modul 3 Fehler)
    Modul 7 sendet: 00100010 00000111 (Modul 1+2+4+5+6 ok, Modul 3+7 Fehler)
    Modul 8 sendet: 00100010 00001000 (Modul 1+2+4+5+6+8 ok, Modul 3+7 Fehler)

    Auf dem Modul brauch keine Auswertung erfolgen, es muss nur die empfange Modul-Nummer um 1 erhöht werden und bei einem Fehler muss ein bit an der richtigen Stelle auf 1 gesetzt werden.

    ---

    Edit: mit der binären Übertragung brauche ich nur 3 kByte Programmspeicher, da spare ich mir das ganze String-Geraffel, warum nicht gleich so...


    Das zweite Byte kann man sich sparen, denn wenn Modul x etwas empfängt kann der Sender ja nur Modul x-1 sein.
    Oder habe ich was übersehen?

    Edit: Es sei denn, die Module werden nicht fortlaufend bzw. zufällig zusammengesteckt...
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. Weltrekord: Kleiner Quadrocopter steigt in knapp 4 Sekunden um 100 Meter
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 25.02.2016, 08:10
  2. BMW: Neuer i3 soll knapp 240 km elektrisch fahren
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 19.01.2016, 11:50
  3. Antworten: 8
    Letzter Beitrag: 21.10.2014, 10:18
  4. Suche Attiny85 im DIP-Gehäuse
    Von RAM im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 2
    Letzter Beitrag: 16.10.2011, 15:43
  5. Suche einen OPV der bis knapp unter die Versorgungsspannung ausgesteuern kann
    Von alex91 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 4
    Letzter Beitrag: 20.05.2011, 20:04

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •