- SF800 Solar Speicher Tutorial         
Seite 2 von 6 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 57

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

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Anzeige

    E-Bike
    Zitat Zitat von MisterMou Beitrag anzeigen
    Hmm, von asm hab ich nicht so viel Ahnung, sonst hätte ich gleich alles so geschrieben
    So 'ne Routine in ASM ist eigentlich kein Problem, nur beim C Inline Assembler hab' ich so meine Bauchschmerzen.
    Aber es lesen zu können reicht hier ja auch schon. Die Rechnerei die der Compiler beim Progmem Zugriff veranstaltet hatte, sagte mir dass es besser ist dort einen Pointer zu verwenden.
    Ich habe die neuste AVR-Studio 5 Version instaliert
    Und ich die 4er Version.

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.05.2009
    Ort
    Stralsund
    Alter
    33
    Beiträge
    436
    Zitat Zitat von MagicWSmoke Beitrag anzeigen
    Die innerste und damit wichtigste Loop sieht jetzt so aus, da wüsste ich nicht mehr viel zu optimieren:
    Code:
    L0673:
        ld      r24,X+
        movw    r30,r18
        add     r30,r24
        adc     r31,r1
        lpm     r30,Z
        out     p18,r25
        out     p15,r30
        out     p18,r1
        out     p18,r25
        swap    r30
        out     p15,r30
        out     p18,r1
        cp      r26,r16
        cpc     r27,r17
        brne    L0673

    Was macht diese Zeile?

    Code:
     adc     r31,r1
    r1 müsste doch 0 sein...
    Was der Befehl macht weiß ich(denke ich), aber warum?
    r31 verändert sich doch nicht, welche Rolle spielt das Carry?

  3. #13
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von MisterMou Beitrag anzeigen
    Was macht diese Zeile?
    Sie addiert den Übertrag zu R31, der möglicherweise bei der Zeile vorher entstanden ist.

    Code:
        add     r30,r24
        adc     r31,r1
    R24 wird zum 16-Bit Wert in R30:31 addiert.
    MfG
    Stefan

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von MisterMou Beitrag anzeigen
    Was macht diese Zeile?
    Code:
     adc     r31,r1
    Sie sorgt dafür, wie Du richtig erkannt hast, dass eine 0 addiert und das Carry übernommen wird.
    r31 verändert sich doch nicht, welche Rolle spielt das Carry?
    Doch, R31 muss sich ändern, da der Fontblock nicht aligned ist, siehst Du wenn Du Dir den Pointer ausgeben lässt, bei mir startete der bei 0x26.

    Wenn Du dem Compiler klarmachen kannst, dass er für den Font auf ein Alignement auf einen 256 Byte Block macht, dann sparst Du Dir den ADC, 1 Takt, mehr aber nicht, da das MOVW gleichviel wie ein MOV braucht.
    Und sollte Dir der Code nicht zu hässlich werden und wenn Du genügend Flash über hast, dann kannst Du diese innere Schleife entrollen und einfach 40 mal wiederholen, das spart Dir dann mehr, nämlich 2 Takte pro Durchlauf.

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.05.2009
    Ort
    Stralsund
    Alter
    33
    Beiträge
    436
    Ahh, genau, der Flash hat ja 16Bit Adressen und das Array liegt bestimmt nicht nur in einem 256Byte Block, damit ist alles klar
    Ich sag ja, asm ist nicht meine Welt.

    Das mit dem Entrollen hatte ich gestern schon mal probiert, dabei wurde "k" durch Konstanten ersetzt. Das Ergebnis war langsamer o.O

    Bild hier  

    http://www.myvideo.de/watch/8517232/...GLCD_Textmodus
    Geändert von MisterMou (22.04.2012 um 18:32 Uhr)

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    So mag ich das, wenn da passende Grüße kommen
    Zitat Zitat von MisterMou Beitrag anzeigen
    Das mit dem Entrollen hatte ich gestern schon mal probiert, dabei wurde "k" durch Konstanten ersetzt. Das Ergebnis war langsamer o.O
    Langsamer muss es nicht zwingend sein, mit Konstanten wird's aber nix. Nachdem der Compiler in mancher Beziehung extrem stur ist, hab' ich's nochmal anders versucht.
    Wenn's geht, was ich doch hoffe, zumindest die Simulation sah gut aus, so wären das 107Hz@16MHz. Optimierung -Os.
    Code:
     /*
         *B0-CP
         *B1-LOAD
         *B2-FRAME
         *
         *C0-D0
         *C1-D1
         *C2-D2
         *C3-D3
         *
         *Mega8 @ 16MHz
         */ 
    
        #define CP 0
        #define LOAD 1
        #define FRAME 2
    
        #include <avr/io.h>
        #include <avr/interrupt.h>
        #include <avr/pgmspace.h>
    
        //8x12 Schrift
        //http://www.mikrocontroller.net/topic/54860
        //Danke Benedikt!
    
        const unsigned char schrift[12][256] PROGMEM ={
        {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x00,0x0C,0x83,0x00,0x03,0x00,0x0C,0x00,0x01,0x06,0x00,0x87,0xC0,0x00,0x00,0x03,0x00,0x0C,0x03,0x0C,0x00,0x00,0xCC,0x00,0xC3,0x00,0x00,0xE0,0xC0,0xC0,0xC0,0xC0,0x00,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x55,0xD6,0x81,0x81,0xC0,0x87,0x06,0x00,0x66,0x66,0x00,0x66,0x00,0xCC,0x00,0x81,0x81,0x00,0x81,0x00,0x81,0x00,0x67,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0xCC,0x00,0x87,0x00,0x06,0x00,0x81,0x87,0x00,0x81,0x00,0xFF,0x00,0x00,0x06,0xFF,0x81,0x00,0x87,0x06,0x00,0x67,0x00,0x00,0x00,0x81,0x87,0x06,0x60,0x81,0x00,0xC0,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
     {0x00,0xE7,0xE7,0x00,0x01,0x81,0x81,0x00,0x00,0x00,0x00,0xE3,0xC3,0x00,0xF7,0x00,0x08,0x20,0x81,0x66,0xF7,0xE7,0x00,0x81,0x81,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x66,0xC6,0x03,0x00,0x07,0x03,0xC0,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xC7,0x01,0x87,0x87,0xC0,0xCF,0x83,0xEF,0x87,0x87,0x00,0x00,0xC0,0x00,0x06,0x87,0xC7,0x03,0xCF,0xC3,0x8F,0xEF,0xEF,0xC3,0xCC,0x87,0xE1,0x6E,0x0F,0x6C,0x6C,0x83,0xCF,0x83,0xCF,0x87,0xCF,0xCC,0xCC,0x6C,0xCC,0xCC,0xEF,0xC3,0x00,0xC3,0x83,0x00,0x03,0x00,0x0E,0x00,0xC1,0x00,0x83,0x00,0x0E,0x81,0xC0,0x0E,0x87,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0x81,0x0E,0x37,0x00,0x87,0xCC,0x81,0x87,0xCC,0x06,0xC6,0x00,0x87,0xCC,0x06,0xC6,0x83,0x03,0xCC,0xCC,0x81,0x00,0xE3,0x87,0xCC,0x06,0x87,0x06,0x66,0xCC,0x00,0x00,0x66,0xA3,0x00,0xB1,0x81,0x81,0x81,0x81,0x67,0xCD,0x87,0x87,0x03,0x83,0x00,0x26,0x36,0x03,0x00,0x00,0x29,0xAA,0xBD,0x81,0x81,0x81,0xCC,0x03,0x83,0x66,0x66,0x00,0x66,0x03,0xCC,0x00,0x81,0x81,0x00,0x81,0x00,0x81,0x67,0xCD,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x03,0x8F,0xCC,0xCC,0x03,0x0F,0x03,0xCC,0xCC,0x81,0x00,0xFF,0x00,0x81,0x03,0xFF,0x03,0x87,0xCC,0x03,0x67,0xCD,0x00,0x00,0x0F,0x03,0xCC,0x03,0xC0,0x03,0xCF,0x81,0x00,0x00,0x00,0x33,0xF7,0xE7,0x00,0x00,0xC3,0xCC,0x00,0x03,0x87,0x87,0x00,0x00},
     {0x00,0x3C,0xFF,0x44,0x83,0xC3,0xC3,0x00,0x00,0x00,0x00,0xE0,0x66,0x00,0x36,0x81,0x0C,0x60,0xC3,0x66,0xBD,0x36,0x00,0xC3,0xC3,0x81,0x00,0x00,0x00,0x00,0x01,0xEF,0x00,0x87,0x66,0xC6,0xC7,0x00,0x8D,0x03,0x81,0x03,0x00,0x00,0x00,0x00,0x00,0x20,0x6C,0x03,0xCC,0xCC,0xC1,0x0C,0x06,0x6C,0xCC,0xCC,0x00,0x00,0x81,0x00,0x03,0xCC,0x6C,0x87,0x66,0x66,0xC6,0x26,0x66,0x66,0xCC,0x03,0xC0,0x66,0x06,0xEE,0x6C,0xC6,0x66,0xC6,0x66,0xCC,0x4B,0xCC,0xCC,0x6C,0xCC,0xCC,0xEC,0x03,0x08,0xC0,0xC6,0x00,0x81,0x00,0x06,0x00,0xC0,0x00,0xC6,0x00,0x06,0x81,0xC0,0x06,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x81,0x03,0xAD,0x00,0xCC,0xCC,0x03,0xCC,0xCC,0x03,0xC6,0x00,0xCC,0xCC,0x03,0xC6,0xC6,0x81,0x00,0xCC,0x00,0x00,0x87,0xCC,0xCC,0x03,0xCC,0x03,0x66,0x00,0xCC,0x00,0x06,0xC6,0x00,0x81,0x03,0x03,0x03,0x03,0xCD,0x00,0xCC,0xCC,0x03,0x44,0x00,0x6E,0x6E,0x03,0x00,0x00,0x94,0x55,0x6B,0x81,0x81,0x00,0x00,0x00,0x44,0x66,0x66,0x00,0x66,0x03,0xCC,0x00,0x81,0x81,0x00,0x81,0x00,0x81,0xCD,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x8D,0xC6,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x81,0x00,0xFF,0x00,0x81,0x00,0xFF,0x00,0xCC,0x00,0x00,0xCD,0x00,0x00,0x0E,0x06,0x00,0x00,0x00,0x81,0x00,0x00,0x03,0x00,0x03,0x00,0x66,0xBD,0x36,0x03,0x00,0x66,0x00,0x00,0x07,0xC0,0xC0,0x00,0x00},
     {0x00,0x18,0xFF,0xEE,0xC7,0xC3,0xE7,0x00,0x00,0x00,0x00,0xA3,0x66,0x00,0xF7,0xBD,0x0E,0xE0,0xE7,0x66,0xBD,0x03,0x00,0xE7,0xE7,0x81,0x81,0x03,0x00,0x42,0x01,0xEF,0x00,0x87,0x66,0xEF,0x0C,0x4C,0x8D,0x03,0x03,0x81,0x66,0x81,0x00,0x00,0x00,0x60,0xEC,0x0F,0xCC,0xC0,0xC3,0x0C,0x0C,0x6C,0xCC,0xCC,0x83,0x83,0x03,0x00,0x81,0xC0,0x6C,0xCC,0x66,0x6C,0x66,0x06,0x26,0x6C,0xCC,0x03,0xC0,0xC6,0x06,0xEF,0x6E,0x6C,0x66,0x6C,0x66,0xCC,0x03,0xCC,0xCC,0x6C,0xCC,0xCC,0x89,0x03,0x0C,0xC0,0x6C,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x06,0x00,0x06,0x00,0x00,0x06,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x81,0x03,0xEC,0x01,0xCC,0x00,0x00,0x00,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x87,0xCF,0x00,0x8D,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0xCC,0x00,0x06,0xEC,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x6C,0xCC,0xCC,0x00,0xAB,0x00,0xC6,0xC6,0x00,0x00,0x00,0x42,0xAA,0xD6,0x81,0x81,0x03,0x03,0x03,0xAB,0x66,0x66,0x00,0x66,0x87,0xCC,0x00,0x81,0x81,0x00,0x81,0x00,0x81,0x00,0x03,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0xC0,0x66,0xCF,0xCF,0xCF,0x03,0x87,0x87,0x87,0x81,0x00,0xFF,0x00,0x81,0x87,0xFF,0x87,0xCC,0x87,0x87,0x00,0x87,0x00,0x06,0xC7,0xCC,0xCC,0xCC,0x00,0xCC,0x00,0x00,0x00,0x03,0x00,0xC3,0xBD,0x03,0x03,0x00,0x66,0x00,0x00,0x03,0x83,0x81,0xCF,0x00},
     {0x00,0x5A,0xBD,0xEF,0xEF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x27,0x66,0x00,0x36,0xE7,0x8F,0xE3,0x81,0x66,0xBD,0xC3,0x00,0x81,0x81,0x81,0xC0,0x06,0x0C,0x66,0x83,0xC7,0x00,0x87,0x42,0xC6,0x0C,0xCC,0x07,0x06,0x06,0xC0,0xC3,0x81,0x00,0x00,0x00,0xC0,0xED,0x03,0xC0,0xC0,0xC6,0x0C,0x0C,0x60,0xCC,0xCC,0x83,0x83,0x06,0xE7,0xC0,0x81,0xED,0xCC,0x66,0x0C,0x66,0x46,0x46,0x0C,0xCC,0x03,0xC0,0xC6,0x06,0xEF,0x6F,0x6C,0x66,0x6C,0x66,0x0C,0x03,0xCC,0xCC,0x6C,0x87,0xCC,0x81,0x03,0x06,0xC0,0x00,0x00,0x00,0x87,0xC7,0x87,0xC7,0x87,0x06,0x67,0xC6,0x87,0xC3,0x66,0x81,0xCF,0x8F,0x87,0xCD,0x67,0xCE,0x87,0xCF,0xCC,0xCC,0x6C,0x6C,0x66,0xCF,0x06,0x81,0x81,0x00,0x83,0x0C,0xCC,0x87,0x87,0x87,0x87,0x8F,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x4C,0xEF,0x8D,0x87,0x87,0x87,0xCC,0xCC,0x66,0xCC,0xCC,0x87,0x06,0x6D,0x00,0xE7,0x87,0x87,0x87,0xCC,0x8F,0x6E,0xE7,0x87,0x03,0xAA,0x00,0x87,0x87,0x03,0x33,0xCC,0x29,0x55,0xBD,0x81,0x81,0x87,0x87,0x87,0x2A,0x6E,0x66,0xEF,0x6E,0xCC,0x87,0x00,0x81,0x81,0x00,0x81,0x00,0x81,0x87,0x87,0x76,0xF7,0x7E,0xFF,0x76,0xFF,0x7E,0x00,0x60,0x66,0x4C,0x4C,0x4C,0x03,0x03,0x03,0x03,0x81,0x00,0xFF,0x00,0x81,0x03,0xFF,0xCC,0x8D,0xCC,0xCC,0x87,0xCC,0x66,0xC7,0x66,0xCC,0xCC,0xCC,0x66,0xCC,0x00,0x00,0x00,0xCF,0x00,0x8F,0xBD,0xC3,0x00,0x00,0x66,0x00,0x00,0x03,0xC0,0x03,0xCF,0x00},
     {0x00,0x18,0xFF,0xEF,0xEF,0x7E,0xFF,0x00,0x00,0x00,0x00,0x8F,0xC3,0x00,0x36,0x7E,0xEF,0xEF,0x81,0x66,0xB7,0x66,0x00,0x81,0x81,0x81,0xEF,0xEF,0x0C,0xFF,0x83,0xC7,0x00,0x03,0x00,0xC6,0x87,0x81,0xAF,0x00,0x06,0xC0,0xFF,0xE7,0x00,0xEF,0x00,0x81,0x6D,0x03,0x81,0x83,0xCC,0x8F,0x8F,0xC0,0x87,0xC7,0x00,0x00,0x0C,0x00,0x60,0x03,0xED,0xCC,0xC7,0x0C,0x66,0xC7,0xC7,0x0C,0xCF,0x03,0xC0,0x87,0x06,0x6D,0xEF,0x6C,0xC7,0x6C,0xC7,0x07,0x03,0xCC,0xCC,0x6D,0x03,0x87,0x03,0x03,0x03,0xC0,0x00,0x00,0x00,0xC0,0x66,0xCC,0xCC,0xCC,0x8F,0xCC,0x67,0x81,0xC0,0xC6,0x81,0x6D,0xCC,0xCC,0x66,0xCC,0xE6,0xCC,0x06,0xCC,0xCC,0x6C,0xC6,0x66,0xC8,0x0C,0x00,0xC0,0x00,0xC6,0x0C,0xCC,0xCC,0xC0,0xC0,0xC0,0xC0,0xCC,0xCC,0xCC,0xCC,0x81,0x81,0x81,0xCC,0xCC,0x0C,0xB1,0xEF,0xCC,0xCC,0xCC,0xCC,0xCC,0x66,0xCC,0xCC,0xCC,0xCF,0x6D,0x6C,0x81,0xC0,0x81,0xCC,0xCC,0xCC,0x6F,0x00,0x00,0x06,0xAB,0xCF,0x03,0x73,0x03,0x66,0x66,0x94,0xAA,0x6B,0x81,0x8F,0xCC,0xCC,0xCC,0x2A,0x60,0x66,0x60,0x60,0x0C,0xCF,0x8F,0xF1,0xFF,0xFF,0xF1,0xFF,0xFF,0xC0,0xCC,0x06,0x06,0x00,0x00,0x06,0x00,0x00,0x6C,0xE7,0x6F,0x0C,0x0C,0x0C,0xCF,0x03,0x03,0x03,0x8F,0xF1,0xFF,0x00,0x00,0x03,0xFF,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x66,0x66,0x66,0xCC,0xCC,0xCC,0x66,0xCC,0x00,0x00,0xCF,0x03,0x8F,0x73,0xB7,0x66,0xCF,0x00,0xC3,0x00,0x81,0x87,0x87,0xC7,0xCF,0x00},
     {0x00,0xDB,0x3C,0xEF,0xC7,0x7E,0xE7,0x00,0x00,0x00,0x00,0xCC,0x81,0x00,0x36,0x7E,0x8F,0xE3,0x81,0x00,0xB1,0x66,0x00,0x81,0x81,0x81,0xC0,0x06,0x0C,0x66,0xC7,0x83,0x00,0x03,0x00,0xC6,0xC0,0x03,0xED,0x00,0x06,0xC0,0xC3,0x81,0x00,0x00,0x00,0x03,0x6F,0x03,0x03,0xC0,0xEF,0xC0,0xCC,0x81,0xCC,0x81,0x00,0x00,0x06,0xE7,0xC0,0x03,0xED,0xCF,0x66,0x0C,0x66,0x46,0x46,0xEC,0xCC,0x03,0xCC,0xC6,0x26,0x6C,0xED,0x6C,0x06,0xEC,0xC6,0x81,0x03,0xCC,0xCC,0x6D,0x87,0x03,0x06,0x03,0x81,0xC0,0x00,0x00,0x00,0xC7,0x66,0x0C,0xCC,0xCF,0x06,0xCC,0x66,0x81,0xC0,0x87,0x81,0x6D,0xCC,0xCC,0x66,0xCC,0x67,0x06,0x06,0xCC,0xCC,0x6D,0x83,0x66,0x81,0x06,0x81,0x81,0x00,0x6C,0x0C,0xCC,0xCF,0xC7,0xC7,0xC7,0xC7,0x0C,0xCF,0xCF,0xCF,0x81,0x81,0x81,0xCC,0xCC,0x8F,0xF7,0x8D,0xCC,0xCC,0xCC,0xCC,0xCC,0x66,0xCC,0xCC,0xCD,0x06,0x6D,0xC6,0x81,0xC7,0x81,0xCC,0xCC,0xCC,0xED,0xEF,0xEF,0x0C,0x2B,0xC0,0xE6,0xF6,0x87,0xCC,0x33,0x42,0x55,0xD6,0x81,0x81,0xCC,0xCC,0xCC,0x2A,0x60,0x66,0x60,0x60,0x0C,0x03,0x81,0x00,0x00,0x81,0x81,0x00,0x81,0xC7,0xCC,0x06,0x06,0x00,0x00,0x06,0x00,0x00,0xC7,0x6C,0x66,0x8F,0x8F,0x8F,0x00,0x03,0x03,0x03,0x00,0x81,0xFF,0xFF,0x81,0x03,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x66,0x66,0x66,0xCC,0xCC,0xCC,0x66,0x87,0x00,0x00,0x00,0x03,0x00,0xF6,0xB1,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCF,0x00},
     {0x00,0x99,0x7E,0xC7,0x83,0x81,0x81,0x00,0x00,0x00,0x00,0xCC,0xE7,0x00,0x76,0xE7,0x0E,0xE0,0xE7,0x00,0xB1,0xC3,0xEF,0xE7,0x81,0xE7,0x81,0x03,0xEF,0x42,0xC7,0x83,0x00,0x00,0x00,0xEF,0xC0,0x06,0xCC,0x00,0x03,0x81,0x66,0x81,0x00,0x00,0x00,0x06,0x6E,0x03,0x06,0xC0,0xC0,0xC0,0xCC,0x03,0xCC,0x81,0x83,0x83,0x03,0x00,0x81,0x00,0x0C,0xCC,0x66,0x6C,0x66,0x06,0x06,0x6C,0xCC,0x03,0xCC,0xC6,0x66,0x6C,0xEC,0x6C,0x06,0xED,0x66,0xCC,0x03,0xCC,0xCC,0xC6,0xCC,0x03,0x26,0x03,0xC0,0xC0,0x00,0x00,0x00,0xCC,0x66,0x0C,0xCC,0x0C,0x06,0xCC,0x66,0x81,0xC0,0xC6,0x81,0x6D,0xCC,0xCC,0x66,0xCC,0x06,0x81,0x06,0xCC,0xCC,0x6D,0x83,0x66,0x06,0x03,0x81,0x03,0x00,0x6C,0xCC,0xCC,0x0C,0xCC,0xCC,0xCC,0xCC,0x0C,0x0C,0x0C,0x0C,0x81,0x81,0x81,0xCF,0xCF,0x0C,0x8D,0x8D,0xCC,0xCC,0xCC,0xCC,0xCC,0x66,0xCC,0xCC,0xCE,0x06,0x6E,0x83,0x81,0xCC,0x81,0xCC,0xCC,0xCC,0xEC,0x00,0x00,0x0C,0xAA,0xC0,0x3C,0xBD,0x87,0xCC,0x33,0x29,0xAA,0xBD,0x81,0x81,0xCF,0xCF,0xCF,0xAB,0x6E,0x66,0x6E,0xEF,0xCC,0xCF,0x81,0x00,0x00,0x81,0x81,0x00,0x81,0xCC,0xCF,0xF7,0x76,0xFF,0x7E,0x76,0xFF,0x7E,0xC6,0x6C,0x66,0x0C,0x0C,0x0C,0x00,0x03,0x03,0x03,0x00,0x81,0xFF,0xFF,0x81,0x03,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x66,0xC7,0xC7,0xCC,0xCC,0xCC,0x66,0x03,0x00,0x00,0x00,0x00,0x00,0xBD,0xB1,0xC3,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCF,0x00},
     {0x00,0x3C,0xFF,0x83,0x01,0x81,0x81,0x00,0x00,0x00,0x00,0xCC,0x81,0x00,0x7E,0xBD,0x0C,0x60,0xC3,0x66,0xB1,0xC0,0xEF,0xC3,0x81,0xC3,0x00,0x00,0x00,0x00,0xEF,0x01,0x00,0x03,0x00,0xC6,0x8F,0xCC,0xCD,0x00,0x81,0x03,0x00,0x00,0x83,0x00,0x83,0x0C,0x6C,0x03,0xCC,0xCC,0xC0,0xCC,0xCC,0x03,0xCC,0x03,0x83,0x83,0x81,0x00,0x03,0x03,0x0C,0xCC,0x66,0x66,0xC6,0x26,0x06,0x66,0xCC,0x03,0xCC,0x66,0x66,0x6C,0x6C,0xC6,0x06,0xC7,0x66,0xCC,0x03,0xCC,0x87,0xC6,0xCC,0x03,0x6C,0x03,0x60,0xC0,0x00,0x00,0x00,0xCC,0x66,0xCC,0xCC,0xCC,0x06,0xC7,0x66,0x81,0xC0,0x66,0x81,0x6D,0xCC,0xCC,0x66,0xCC,0x06,0xCC,0xC6,0xCC,0x87,0xC6,0xC6,0xC3,0x4C,0x03,0x81,0x03,0x00,0xEF,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x0C,0x0C,0x0C,0x81,0x81,0x81,0xCC,0xCC,0x4C,0x8D,0x8D,0xCC,0xCC,0xCC,0xCC,0xCC,0xC3,0xCC,0xCC,0xCC,0x0C,0xC6,0xC6,0x8D,0xCC,0x81,0xCC,0xCC,0xCC,0x6C,0x00,0x00,0xCC,0x44,0xC0,0x68,0x3B,0x87,0x66,0x66,0x94,0x55,0x6B,0x81,0x81,0xCC,0xCC,0xCC,0x44,0x66,0x66,0x66,0x00,0x87,0x03,0x81,0x00,0x00,0x81,0x81,0x00,0x81,0xCC,0xCC,0x00,0x66,0x00,0x66,0x66,0x00,0x66,0xC7,0x6C,0xC6,0x4C,0x4C,0x4C,0x00,0x03,0x03,0x03,0x00,0x81,0xFF,0xFF,0x81,0x03,0x00,0xCC,0x8F,0xCC,0xCC,0xCC,0xCC,0x66,0x06,0x06,0xCC,0xCC,0xCC,0xC3,0x03,0x00,0x00,0x00,0xCF,0x8F,0x3B,0xB1,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCF,0x00},
     {0x00,0xE7,0xE7,0x01,0x00,0xE7,0xE7,0x00,0x00,0x00,0x00,0x87,0x81,0x00,0x6E,0x81,0x08,0x20,0x81,0x66,0xB1,0x6C,0xEF,0x81,0x81,0x81,0x00,0x00,0x00,0x00,0xEF,0x01,0x00,0x03,0x00,0xC6,0x03,0xC8,0x67,0x00,0xC0,0x06,0x00,0x00,0x83,0x00,0x83,0x08,0xC7,0xCF,0xCF,0x87,0xE1,0x87,0x87,0x03,0x87,0x07,0x00,0x81,0xC0,0x00,0x06,0x03,0xC7,0xCC,0xCF,0xC3,0x8F,0xEF,0x0F,0xE3,0xCC,0x87,0x87,0x6E,0xEF,0x6C,0x6C,0x83,0x0F,0xC0,0x6E,0x87,0x87,0x87,0x03,0xC6,0xCC,0x87,0xEF,0xC3,0x20,0xC3,0x00,0x00,0x00,0x67,0xCD,0x87,0x67,0x87,0x0F,0xC0,0x6E,0xE7,0xCC,0x6E,0xE7,0x6C,0xCC,0x87,0xC7,0xC7,0x0F,0x87,0x83,0x67,0x03,0xC6,0x6C,0xC0,0xCF,0xC1,0x81,0x0E,0x00,0x00,0x87,0x67,0x87,0x67,0x67,0x67,0x67,0x87,0xC7,0xC7,0xC7,0xE7,0xE7,0xE7,0xCC,0xCC,0xCF,0xFE,0xED,0x87,0x87,0x87,0x67,0x67,0xC0,0x87,0x87,0x87,0xEF,0x8B,0x6C,0x07,0x67,0xE7,0x87,0x67,0xCC,0x6C,0x00,0x00,0x87,0x83,0x00,0xC0,0xF3,0x03,0x33,0xCC,0x42,0xAA,0xD6,0x81,0x81,0xCC,0xCC,0xCC,0x83,0x66,0x66,0x66,0x00,0x03,0x03,0x81,0x00,0x00,0x81,0x81,0x00,0x81,0x67,0xCC,0x00,0x66,0x00,0x66,0x66,0x00,0x66,0x6C,0xC7,0x8F,0xCF,0xCF,0xCF,0x00,0x87,0x87,0x87,0x00,0x81,0xFF,0xFF,0x81,0x87,0x00,0x87,0x0C,0x87,0x87,0x87,0x87,0xB7,0x0F,0x0F,0x87,0x87,0x87,0xC0,0x87,0x00,0x00,0x00,0x00,0x00,0xF3,0xB1,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x00,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0x00,0x00,0xCC,0x00,0x00,0x00,0x00,0x00,0x06,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF1,0x30,0x00,0x00,0x00,0x29,0x55,0xBD,0x81,0x81,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x00,0x03,0x00,0x81,0x00,0x00,0x81,0x81,0x00,0x81,0x00,0x00,0x00,0x66,0x00,0x66,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0xFF,0xFF,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0xE7,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
     {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0x00,0x00,0x87,0x00,0x00,0x00,0x00,0x00,0x0F,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0xAA,0x6B,0x81,0x81,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x81,0x00,0x00,0x81,0x81,0x00,0x81,0x00,0x00,0x00,0x66,0x00,0x66,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
        };
    
        #define char_put() \
          {asm volatile("ld __tmp_reg__, x+"      "\n\t" \
                        "movw  r30, %A0"          "\n\t" \
                        "add   r30, __tmp_reg__"  "\n\t" \
                        "adc   r31, __zero_reg__" "\n\t" \
                        "lpm   %A1, z"            "\n\t" \
                        : \
                        : "r" (&schrift[j][0]), "r" (temp) \
                        : "r26", "r27", "r30", "r31" \
                       ); \
                PORTB=(1<<CP); \
                PORTC=temp; \
                PORTB=0; \
                PORTB=(1<<CP); \
                asm volatile ("swap %0" : "=r" (temp) : "0" (temp)); \
                PORTC=temp; \
                PORTB=0; \
           }
    
    
        int main(void)
        {
            unsigned char text[20][40];
            unsigned char zeichen = 0;
            volatile unsigned char dummy;
            unsigned char temp = 0;
            unsigned char *tptr;
        
            for (unsigned char y = 0; y < 20; y++)
            {
                for (unsigned char x = 0; x < 40; x++)
                       text[y][x] = zeichen++;
            }
                dummy = text[19][39];  // optimierung verhindern
        
            DDRC=0x0F;
            DDRB=0x07;
        
        
            PORTB=(1<<FRAME)|(1<<LOAD);       
        
            while(1)
            {
            tptr = &text[0][0];
                PORTB=(1<<FRAME)|(1<<CP);            
                for(volatile unsigned char lines =0; lines<20;lines++)
                {
                    for(volatile unsigned char rows =0; rows<12;rows++)
                    {
                    unsigned char j = rows;
                        asm volatile("movw r26, %A0" : : "r" (tptr) : "r26", "r27");
                        char_put() char_put() char_put() char_put();
                        char_put() char_put() char_put() char_put();
                        char_put() char_put() char_put() char_put();
                        char_put() char_put() char_put() char_put();
                        char_put() char_put() char_put() char_put();
                        char_put() char_put() char_put() char_put();
                        char_put() char_put() char_put() char_put();
                        char_put() char_put() char_put() char_put();
                        char_put() char_put() char_put() char_put();
                        char_put() char_put() char_put() char_put();            
                    PORTB=(1<<LOAD);    
                    }
                tptr += 40;
                }
                PORTB=(1<<LOAD)|(1<<FRAME);
            }
        }
    Nachtrag:
    So werden's 114Hz:
    Code:
          const unsigned char schrift[12][256] PROGMEM __attribute__((aligned(256))) ={
          //  ...
        #define char_put() \
          {asm volatile("ld __tmp_reg__, x+"      "\n\t" \
                        "movw  r30, %A0"          "\n\t" \
                        "add   r30, __tmp_reg__"  "\n\t" \
                        "lpm   %A1, z"            "\n\t" \
                        : \
                        : "r" (&schrift[j][0]), "r" (temp) \
                        : "r26", "r27", "r30", "r31" \
                       ); \
                PORTB=(1<<CP); \
                PORTC=temp; \
                PORTB=0; \
                PORTB=(1<<CP); \
                asm volatile ("swap %0" : "=r" (temp) : "0" (temp)); \
                PORTC=temp; \
                PORTB=0; \
           }
    Geändert von MagicWSmoke (23.04.2012 um 12:13 Uhr)

  7. #17
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.05.2009
    Ort
    Stralsund
    Alter
    33
    Beiträge
    436
    Oh man...
    Jetzt ist es vorbei, bis gestern war der Code kein Problem, jetzt muss ich erst einmal rausbekommen was was macht
    Woher hast Du das Wissen? Gibt es da ein Zauberbuch?

    Das Display macht keine Probleme, es läuft auch noch bei 132Hz, jetzt sind es 114,6Hz mit -O2 bzw. -O3.

  8. #18
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von MisterMou Beitrag anzeigen
    Woher hast Du das Wissen? Gibt es da ein Zauberbuch?
    286/386er in Assembler geschrieben, auch dazu gibt's natürlich Bücher, und dann irgendwann mal auf AVR. Da kennt man das Meiste schon und braucht eigentlich nur noch ein Instruction Set Datenblatt.
    Mehr Kopfzerbrechen hatte mir der C-Inlineassembler gemacht, der recht kryptisch ist und auch durchaus kreativ Code generiert hatte. Manchmal unfunktionell, aber immer wieder interessant. Für den Assembler gibt's Quellen im Netz, so auch hier im Forum, und manches bringt man durch Trial & Error raus.
    Das Display macht keine Probleme, es läuft auch noch bei 132Hz, jetzt sind es 114,6Hz mit -O2 bzw. -O3.
    So wie ich's verstehe läuft die aktuelle Hardware mit dem neuen Code, ist das richtig ? Konnte nur "trocken" probieren, war also nicht sicher.

  9. #19
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.05.2009
    Ort
    Stralsund
    Alter
    33
    Beiträge
    436
    Du bist also ein "alter" Hase
    Ich fang ja erst an
    Normalerweise wüsste ich nicht einmal was was ein AVR ist 2.Semester Elektrotechnik...

    Genau, läuft alles wunderbar, hatte bloß mal zum Test 18,4MHz drauf gegeben
    Ich schlage schon Alarm, wenns nicht läuft^^

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Ja, ich mach' das schon 'ne geraume Zeit

    Ist in Ordnung, schaut doch auch ganz gut aus.
    Hilft außerdem immer mit den Stoff weiter zu sein als der Rest.

    Ich denke, dass es noch schneller geht, aber dann müsste man die Schleifen komplett in Assembler machen, da ließe sich noch was sparen.
    Wie's jetzt ist, find' ich 'ne gute Mischung, es ist noch weitestgehend C und da optimiert, wo der Compiler selbst nicht wollte - zum Teil kam da schon wildes Zeug raus.

Seite 2 von 6 ErsteErste 1234 ... LetzteLetzte

Ä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
  •  

fchao-Sinus-Wechselrichter AliExpress