- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: zu viel für Mega 32?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    12.08.2006
    Beiträge
    70

    zu viel für Mega 32?

    Anzeige

    E-Bike
    Hallo,
    ich bin noch nicht lange dabei beim Roboten. aber langsam werden meine Programme immer länger und jetzt krieg ich Probleme. Ich arbeite derzeit an einem Programm in dem ich 23 Variabeln habe. 15 singles, 3 Strings, 2Subs 2 Arrays u. 1 Funktion. dann kommen auch noch einige Gotos dazu. Das Programm ist langsam gewachsen und funktionierte anfänglich ganz gut. Mehr Variabeln und Gotos reingepackt und es wurde instabil.
    Kann es sein das das für mein RN-Control mit Mega 32 zu viel ist? Beim Flashen sagt Bascom mir das ich nur 24% brauche. Aber ich denke ich verstehe die Grundlagen nicht richtig. HWStack, SW Stack, Framesize kapier ich nicht. Hab alles gelesen was es drüber gibt, aber nicht verstanden. Kanns mir jemand erklären ? Kann ich diese Werte beliebig einstellen? Und wie stellt man Sie richtig ein?
    Kann ich mein Problem lösen wenn ich mir ein Mega 128 hole??

    Bin hier an einem Punkt wo ich nicht mehr weiter weis und wäre Euch für Hilfe echt dankbar.


    Gruß

    Andreas

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,
    scheint Du bist zumindest an die Grenzen des SRAMs gestossen,
    der M32 hat 2KB also 2048 Byte zur Verfügung, in dieses müssen die ganzen Stacks und deine Variablen reinpassen, evtl. kannst Du das nachrechnen wie viel Platz deine Variablen alle zusammen brauchen, und ob dann noch etwas für den Stack überbleibt.
    Der Stack wird bei Funktions- und Interruptaufrufen genutzt.

    Der M128 hat zwar 4KB SRAM, die müssen aber auch effektiv genutzt werden damit es nicht eng wird.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    12.08.2006
    Beiträge
    70
    ......das ist ja schon mal ein Hinweis. O.K. Für die Variabel kann ich die Bytes wohl nachrechnen, da hatte ich was gelesen...das finde ich wieder. Aber wie berechne ich die Stacks. Geth's hier nur um HW- und SW-Stack oder gibts da noch mehr? ........und was hat es mit diesem" Framesize" auf sich?

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Den für Variablen verbratenen SRAM findest du in der "*.RPT" File.

    Und mit den Stacks ist das etwa so:
    https://www.roboternetz.de/wissen/in...acks_.26_Frame
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.08.2006
    Beiträge
    70
    O.K den Lesestoff über über die Stacks muß ich erst mal verdauen.......Der Tip mit dem .RPT File auch gut. Hilft mir aber nicht auf Anhieb. Hab ihn mir angesehen. Lauter infos. Meine Variabeln habe ich auch wiedergefunden und auch was über Stacksize, Framesize und vieles mehr. Ist aber alles in Hex oder Dec angegeben. Welches davon ist die Info die ich Suche und wie muß ich sie interpretieren??

    Da steht auch was von Warnings, aber überall steht "Not used" Wie kann ich die den "Usen"? Kann man das irgendwo anschalten?

    Gruß

    Andreas

    PS: .....hilft es wenn Ihr Euch mein Programm mal anseht???? ...ist aber ziemlich lang!

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    In der .RPT file stehen deine Variable mit ihrer adresse dezimal und hexadezimal.
    Verwendet wird als adresse letze Variable + die Länge der variablen .
    Davon darfst du dez'96' abziehen
    Das ist der verbratene SRAM-Bereich.
    Beim Mega32 hast du 2048 Byte SRAM
    Also kanst du ausrechen, was übrig ist für die Stacks.
    HWstack sollte bei Interrupts nicht weniger als ~48 sein
    SWstack kommts eben wirklich ganz auf's programm an, wie viele Argumente du bei den Subs und Functions hast.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    12.08.2006
    Beiträge
    70
    O.K. Bei der letzten Variablen steht bei mir 368 (Dec) davon 96 abziehen sind 272. Also noch jede Menge SRAM übrig oder? Das kann also nicht mein Problem sein (schade eigentlich). Sollte ich mit HW-und SW-Stack experimentieren? Darf ich die so groß machen wie ich will, also bis alles zusammen 2048 Byte SRAM hat ????

    Gruß

    Andreas

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Zu groß können sie nicht sein.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    ich benutze mehr Variablen und 75 % Flash , läuft ohne Probleme.

    Die Stack's kannst Du Testweise ruhig auf 256 erhöhen.

    Was RICHTIG Zeit kostet sind ständige LCD ausgaben.

    Gento

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.08.2004
    Ort
    Potsdam
    Beiträge
    190
    @Baby2b:
    Lass Dich nicht vom verbrauchten Flash irritieren.
    Flash und Arbeitsspeicher sind zwei paar Schuhe und ein größerer µC wird auch nichts helfen wenn Du der Fehlerursache nicht auf den Grund gehst.
    Ich denk auch das die Instabilität von einem Stacküberlauf herrührt.
    Mit meinem Wissenstand hab ich auch so meine Probleme was die Größe des Stacks anbelangt weshalb ich (zumindest bei den kleinen Controllern) immer dazu neige die verbliebenden freien SRAM dem Stack zuzuordnen. Im Simulator von Bascom wird ein Stacküberlauf auch angezeigt. Dazu muss man aber genau hinschauen weil die Anzeige nur kurz erscheint.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test