- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 57

Thema: Gibt es noch Optimierungspotential? (Mega8 an 320x240 GLCD Textmodus)

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #34
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Hab' mir nochmal angesehen, warum Dein Code so langsam ist. Hier:
    ...dass aus 2 schnöden Takten, oft genug durchlaufen, schnell mal 1000 werden.
    hatte ich bereits richtig geraten. Auch wenn ich die (mFlag<<M) Geschichte nicht gut finde, weil er da in einer Schleife schiebt, was völlig unnötig ist, da vermeidbar, so wird dieser Teil nicht oft durchlaufen.

    Das Problem macht dies hier:
    Code:
        mov    r25,r21
        ldi    r24,k00
        subi    r24,k00
        sbci    r25,kFF
    Denn das wird 40 mal pro ISR eingebaut und ist das Resultat aus:
    Code:
    : "r" (&font[charRow][0]), "r" (tempChar) \
    So etwas kannst Du vermeiden, indem Du zu Beginn der ISR die globale Variable in eine lokale kopierst und am Ende wieder zurück. Damit erlaubst Du dem Compiler zu optimieren, d.h. diese lokale Variable in einem Prozessorregister zu halten.
    Code:
        #define char_put() \
    ...
                            : "r" (&font[l_charRow][0]), "r" (tempChar) \
    ...
           }
        
        ISR(TIMER0_OVF_vect)
        {
          unsigned char l_charRow = charRow;
    ...
            if(l_charRow==CHAR_HEIGTH)
    ...
                l_charRow=0;
    ...
            l_charRow++;
              charRow = l_charRow;
        }
    Spart pro ISR-Lauf ca. 160 Takte, macht dann bei 12 x 20 x 75 = ~2900000 Takte
    Geändert von MagicWSmoke (03.05.2012 um 09:19 Uhr)

Ähnliche Themen

  1. Zusätzlich zu der M32 noch ein mega8?
    Von AsuroPhilip im Forum Robby RP6
    Antworten: 40
    Letzter Beitrag: 04.11.2011, 10:43
  2. Gibt es noch Realismus im Fernsehen?
    Von HannoHupmann im Forum Offtopic und Community Tratsch
    Antworten: 43
    Letzter Beitrag: 03.08.2011, 14:34
  3. GLCD (GDM12864B) mit KS0108B gibt PixelFehler
    Von SvenS im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 21.04.2011, 10:05
  4. Gibt es noch den Crazy-Car Wettbewerb?
    Von Reinald im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 7
    Letzter Beitrag: 23.10.2008, 11:28
  5. DISAVR - Gibt´s den noch (funktionierend)?
    Von roboguy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 21.09.2005, 22:59

Berechtigungen

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

Labornetzteil AliExpress