- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 21 bis 30 von 34

Thema: Eine RGB-Led und ein AtTiny13

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #21
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    So werden's 72%:
    Code:
    Dim C_r As IRam Byte At 12                                                      'Channel Rot
    Dim C_g As IRam Byte At 13                                                      'Channel Grün
    Dim C_b As IRam Byte At 14                                                      'Channel Blau
    Und das bringt's auf 66%:
    Code:
    On Timer0 Isr_timer0 Nosave
    ' ...
    'ISR TIMER0
    Isr_timer0:
            !push        r16
            !push        r17
            !push        r20
            !push        r21
            !push        r23
            !push        r24
            !push        r26
            !push        r30
            !push        r31
            !in          r24, SREG
            !push        r24
       Incr Pwm_count                                                               'PWM-Variable erhöhen
       If Div = 10000 Then                                                          'Teilervariable bei 10000 resetten
          Div = 0
          Set Flag_a
       End If
         Div = Div + 1                                                              'Teilervariable erhöhen
            !pop        r24
            !out        SREG,r24
            !pop        r31
            !pop        r30
            !pop        r26
            !pop        r24
            !pop        r23
            !pop        r21
            !pop        r20
            !pop        r17
            !pop        r16
    Return
    Außerdem kommt man dann ordentlich mit dem HWStack hin. Es hatte vorher lediglich keine Auswirkung wenn SWStack und Frame überschrieben wurden. Das Sichern der Register kostete 26 Bytes HWStack und der Aufruf von Incr Div nochmal 2 Bytes, 8 Bytes waren also viel zuwenig. Nun werden nicht mehr als 10 Byte Stack verwendet, bei Bedarf an mehr Platz für Variablen können folgende Stackangaben nochmal verkleinert werden, SWStack und Frame werden sowieso nicht benutzt.
    Code:
    $hwstack = 16
    $swstack = 16
    $framesize = 24
    Hinweis dazu: die selektive Registersicherung per Nosave/Push/Pop ist nur solange als gültig zu betrachten, solange die ISR nicht verändert wird, evtl. muss man auf die Bascom-Version achten, hier 2.0.7.4
    Interessanterweise wird mit ausgeschalteter Optimierung jeweils 1% weniger Speicher belegt.
    Benötigt die Deklaration Var = Var + 1 tatsächlich weniger Speicher als ein einfaches Incr Var?
    Nein, das ist falsch. Incr Byte_Var und Byte_Var = Byte_Var +1 erzeugen zwar identischen Code, hingegen wird Word_Var = Word_Var +1 Inline compiliert, dagegen Incr Word_Var als Funktionsaufruf. Es hängt also erst einmal von der Zielvariablen ab.
    Eine Funktion aufzurufen, d.h. Setzen der Register und ein RCALL/CALL, kostet weniger Flashspeicher als wenn der Code Inline eingebaut wird.
    Hat man viele Stellen im Code, in denen eine Word-Variable um 1 erhöht wird, so ist es also genau anders herum, man spart mit der Incr-Version Speicherplatz. Das kann sich aber mit der Bascom-Version ändern.
    In unserem Fall ist Div = Div + 1 besser, da es etwas weniger Stack braucht und schneller ist.
    Geändert von MagicWSmoke (12.03.2012 um 10:08 Uhr)

Ähnliche Themen

  1. Samarai: Eine Drohne wie eine Ahornfrucht
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 15.08.2011, 15:20
  2. ATTiny13 PWM
    Von Jacob2 im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 13.05.2009, 18:08
  3. attiny13
    Von epos im Forum AVR Hardwarethemen
    Antworten: 8
    Letzter Beitrag: 05.10.2007, 21:39
  4. Antworten: 5
    Letzter Beitrag: 02.02.2007, 10:03
  5. Antworten: 7
    Letzter Beitrag: 17.10.2006, 16:10

Berechtigungen

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

LiFePO4 Speicher Test