- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: BASCOM AVR

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330

    BASCOM AVR

    Anzeige

    Powerstation Test
    Hallo an alle,

    habe mir das Bascom AVR runtergeladen...

    Zuerrst habe ich ein hallowelt Programm geschrieben und die Simulation gestartet. Die Simulation lief an. Es tat sich aber nichts.

    Naja, dann habe ich den Code verbessert. Und jetzt lässt sich die Simulation gar nicht mehr starten, er schreibt immer:
    "Out of SRAM space"

    Anfangs habe ich $hwstack = 100
    $swstack = 100
    benutzt, dann sogar 300 und 3000, er schrieb immer die selbe Meldung...


    Hoffe da kann mir jemand wieder mal weiterhelfen...

    Mfg

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Die Meldung besagt, dass deine Variablen nicht mehr in das SRAM des µC passen.
    hwstack und swstack liegen auch im SRAM. Wenn du die Werte also größer machst, wird es nur noch schlimmer.
    Welchen Controller hast du denn und wie sieht dein programm aus?

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Ich benutze einen Attiny 13.

    Und für so ein kurzes Programm müsste das doch reichen... Ich habe ihn ja auch in C schon programmiert.


    Das Programm ist sehr kurz, ein Hallo-Welt Programm eben.
    Ich habe das auf dem anderen Computer, poste das hier später.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Der Tiny13 hat nur 64 Byte RAM...
    Also HWStack + SoftStack + Variablen sollten da darunter liegen.

    Dass es in C funktioniert liegt daran, dass C nicht dieses seltsame Konstrukt mit HWStack, Softstack, Framesize hat; diese Bascom-Erfindung ist etwas unglücklich aufgebaut. In C gibts nur den normalen Stack und der ist so gross, wie er auch wirklich sein kann.
    Die Werte in Bascom werden auch ohne Bedarf einfach reserviert.
    #ifndef MfG
    #define MfG

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Code:
     $regfile = "Attiny13.dat"
     $crystal = 100000
     $hwstack = 100
     $swstack = 100
    
     Ddrb = &B00001111
    
     Do
    
     Portb.0 = 1
    
     Waitms 500
    
     Portb.0 = 0
    
     Waitms 500
    
     Loop
    
     End
    So, hier ist der Code...

    In C gibts nur den normalen Stack und der ist so gross, wie er auch wirklich sein kann.
    Und in Bascom muss man immer nachrechnen, wie viel man braucht??

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Zitat Zitat von runner02
    In C gibts nur den normalen Stack und der ist so gross, wie er auch wirklich sein kann.
    Und in Bascom muss man immer nachrechnen, wie viel man braucht??
    So quasi. Das wär das genaueste. Eine grobe Abschätzung reicht aber.
    Hier:
    http://halvar.at/elektronik/kleiner_...swstack_frame/
    ist ne Beschreibung der Angaben; da wird für nen ATTiny13 z.B. angegeben:
    $hwstack = 32
    $swstack = 5
    $framesize = 20

    Bleiben dir noch 7 Bytes für Variablen. Aber HW-Stack kann man z.B. runterdrehen.
    #ifndef MfG
    #define MfG

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo runner02,
    Bascom reserviert Speicherplatz für verschiedene Zwecke.
    HwStack: Register Backup beim Interrupt, Rücksprungadressen
    SwStack: Adressen von Funktionsparametern
    Frame: Werte der Funktionsparameter, Typkonvertierungen

    Im Moment bräuchtest du überhaupt keinen Stack, da du weder Interrupts noch Funktionen oder Subs noch Prints oder LCD Befehle benutzt.

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Ah danke, dann werde ich es mal wie folgt versuchen:

    $swstack = 5
    $framesize = 20

    hwstack lasse ich dann aus, weil ich keine Interrupts etc. brauche...

    Ich muss sagen, dass ist in C schon unvergleichlich konfortabler...
    Sind die BASCOM-Programmierer nicht auf die Idee gekommen?

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Auslassen würd ich den Wert nicht, da er irgendwo in den Projekteinstellungen auch noch steht. Fehlt die Angabe im Quellcode, wird einfach dieser Wert verwendet. Also wenn du keinen brauchst, explizit auf 0 setzen.

    Dass das in Bascom so "kompliziert" ist, ist glaub ich einer der Nachteile, den man sich über die sonstige Einfachheit von Bascom einhandelt...
    #ifndef MfG
    #define MfG

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von runner02
    Ich muss sagen, dass ist in C schon unvergleichlich konfortabler...
    Sind die BASCOM-Programmierer nicht auf die Idee gekommen?
    Auf der MCS Seite wird dies in den Foren seitenlang diskutiert. Mark Alberts hat auch einige Erklärungen dazu abgegeben.

    Die Sache an sich wird - wie vieles - total überbewertet. Das Problem tritt bei jedem - und ich meine wirklich bei jedem - Bascom User irgendwann einmal auf. Dann versteht man den Zusammenhang und von da ab stehen die Werte immer im Programm und sind groß genug, dass nichts passiert.
    Problematisch sind dann in der Regel nur die winzigen Tinys, bei denen man recht schnell den "Out of SRAM" Fehler bekommt.

    Ich gehe davon aus, dass eine ähnliche Art der Speicherung dieser Werte (Rücksprüngadressen, Adressen und Werte von Parametern usw.) in C auch benutzt wird. Nur ist der Platz dafür nicht im vorherein festgelegt. Wenn dann eine Überschreitung passiert, wird dies auch zu Problemen führen.
    Daher weiß ich nicht, ob das in C "komfortabler" ist.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress