- 12V Akku mit 280 Ah bauen         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 22 von 22

Thema: Problem mit ATMEGA32. Variablen spielen verrückt.....

  1. #21
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    38
    Beiträge
    795
    Anzeige

    Praxistest und DIY Projekte
    Hier bin ich nochmal,

    Ich hätte noch eine Frage bezüglich der Speicherplatzverwaltung:

    Ich habe in meinem Programm den Ausdruck:
    LCD_FONT_6x8( 1, 4," Standby ");

    Wo wird " Standby " abgespeichert?

    Ich habe sehr viele solche Ausdrücke, und ich vermute, dass diese auch
    im RAM gespeichert werden.... .

    Gibt es da auch eine elegante lösung?
    Als String im Flash speichern?
    Gruß,
    Franz

  2. #22
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Ein Blick in den generierten Assembler beantwortet die Frage: Das Ding steht im Flash und wird vom StartUp ins SRAM kopiert. (Section .data wahrscheinlich).

    Wie man die Strings im Flash lässt steht in [wiki="avr-gcc"]. Wo das Zeug landet kannst du sehen
    -- im Assembler (Object-Sections bzw. wie es zugrgriffen wird
    -- evtl. im Mapfile
    -- evtl im Disassemble des Objects (auch .data disassemblen)
    -- im Disassemble des elf
    -- anzeigbar mit avr-nm, falls lokale Symbole nicht in der Tonne landen

    Du schreibst die eine Funktion
    void LCD_FONT_6x8_P (int, int, const char *)
    die nichst aud dem SRAM liest, sondern aus dem Flash.

    Aufruf:
    Code:
    #include <avr/pgmspace.h>
    
    extern void LCD_FONT_6x8_P (int, int, const char *);
    
    ...
        LCD_FONT_6x8_P (1, 2, PSTR ("Standby"));
    Disclaimer: none. Sue me.

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress