- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 7 von 7

Thema: Attiny2313: Arbeitsspeicher läuft über?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    39
    Beiträge
    4.255
    Du solltest die konstanten Strings in das Flash verlagern.

    Wenn du die Strings so wie bei dir definiert, landen sie zunächst einmal im Flash (damit sie dauerhaft erhalten bleiben) und werden dann beim Bootvorgang ins RAM kopiert. Aus Sicht des Compilers sind es nämlich ganz gewöhnliche Variablen, die auch zur Laufzeit geändert werden könnten. Somit wird dauerhaft eine Menge RAM belegt, und das ist auf nem Tiny oft tödlich.

    Daher sollte man bei solchen langen konstanten Texten eine separate Funktion schreiben, die die Daten direkt aus dem Flash lädt (mit LPM bzw. den entsprechenden avr-libc-Funktionen).

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Du solltest die konstanten Strings in das Flash verlagern.
    Das hab ich getan:

    vorher:
    Code:
    Device: attiny2313
    
    Program:    1704 bytes (83.2% Full)
    (.text + .data + .bootloader)
    
    
    Data:        120 bytes (93.8% Full)
    (.data + .bss + .noinit)
    nachher (Programm wurde sogar noch etwas erweitert!!):
    Code:
    Device: attiny2313
    
    Program:    1776 bytes (86.7% Full)
    (.text + .data + .bootloader)
    
    
    Data:         14 bytes (10.9% Full)
    (.data + .bss + .noinit)
    Das ist einfach der blanke Wahnsinn - FETTES DANKEE!! :-D

    Jetz muss ich nur noch versuchen, auch noch die Funkbrücke in anderer Richtung zu implementieren ohne dass mir der Flashspeicher ausgeht..

    Gruß
    -schumi-

    PS: Die Fehlerkorrekturfunktion arbeitet im übrigen schon so gut, dass ich mit den RFM12-Modulen ohne Antenne 140cm überbrücken kann. Einziger Fehler der noch auftritt ist, dass die Bestätigung des Empfängers manchmal verloren geht und dann der Sender aufgrund des Timeouts ein weiteres mal sendet -> Ich bekomme manchmal Zeichen doppelt
    Aber das lässt sich sicher auch noch fixen :-D
    Geändert von -schumi- (27.06.2011 um 22:01 Uhr)

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    39
    Beiträge
    4.255
    Wenns dann wieder eng wird, könntest du die Texte noch ins EEPROM verlagern, da hast du noch mal 128 Bytes zur Verfügung...

Ähnliche Themen

  1. Temperaturmessung über I2C und LM75 läuft nicht
    Von michaelkoemm im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 16.10.2007, 18:50
  2. Attiny2313 Senden über RS232 mit Bascom
    Von nose im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 12.10.2006, 15:45
  3. Arbeitsspeicher?
    Von GagaPeter im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 18.05.2005, 19:08
  4. Arbeitsspeicher für VIA EPIA-TC 10000
    Von Johannes im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 9
    Letzter Beitrag: 03.05.2005, 08:51
  5. kleine frage am rande (arbeitsspeicher)
    Von Felixx87 im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 24.10.2004, 10:22

Berechtigungen

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

Solar Speicher und Akkus Tests