Beiträge von DerHagen

    [font="Calibri"]Hallo,[/font]

    [font="Calibri"]heute haben wir eine email von Axel M. zum Thema cberry28 und Raspberry 3 erhalten.[/font]
    [font="Calibri"]Die Erkenntnisse möchte ich gerne mit euch teilen:[/font]

    [font="Calibri"]"[/font]
    [font="Calibri"]Bislang hatte das Display jedoch geschmiert (die Zeilen waren verschoben) und hat durch Falschfarb-Darstellung auf sich aufmerksam gemacht.[/font]
    [font="Calibri"] [/font][font="Calibri"]Am Wochenende ist mir aufgefallen, dass man in der Datei tft.c den Clock-Divider anpassen muss, wenn man auf dem Raspberry 3 eine saubere Anzeige haben möchte:[/font]
    [font="Calibri"]Alt:[/font]
    [font="Calibri"]bcm2835_spi_setClockDivider( BCM2835_SPI_CLOCK_DIVIDER_2 );[/font]
    [font="Calibri"]Neu:[/font]
    [font="Calibri"]bcm2835_spi_setClockDivider( BCM2835_SPI_CLOCK_DIVIDER_4 );[/font]
    "

    Viel Spass weiterhin.
    DerHagen

    Moin,

    das fb2cberry greift auf den spi -bus zu. Da werden dann die video-Daten rausgefeuert.
    Der Port KANN dann natürlich NICHT für anderer SPI devices benutzt werden.

    Wie auch? Letztlich "kämpfen" die fb2cberry und die andere SW um die gleichen Pins.
    Da die Videodaten kontinuierlich ge-updated werden, besteht zeitlich keine Möglichkeit, mal eben was anders über die Pins rauszugeben.


    DerHagen

    Moin

    die Frage ist schwierig zu beantworten. Warum?

    1) HW-mässig, hat das cberry 320x240 Pixel da kann man nix machen.
    2) SW kann man in der config.txt natürlich eine andere Auflösung einstellen. fb2cberry kopiert (und skaliert) exakt diesen Bereich, um ihn dann auf dem cberry darzustellen. Es ist verständlich, das ein downscale von HD->auf 320x240 etwas weniger gut aussieht, als ein downscale von 640x480 auf 320x240.

    DerHagen


    Hallöchen :helpnew:

    ich habe mir letztens das Display-Modul "C-Berry Raspberry Pi" von admatec gekauft. Ich wollte das Display unter Raspbian und RetroPi als normalen Bildschirm verwenden, aber ich schaffe es noch nicht so ganz. Ich komme bis jetzt soweit, dass ich es schaffe, dass auf dem C-Berry Display ich den normalen Desktop bzw. die Konsole sehen kann aber sobald ich den Raspberry einmal ausschalte "friert" das bild ein wenn sich der raspberry ausschaltet und das Bild bleibt auch dann noch zu sehen wenn der Raspberry vollständig ausgeschaltet ist. Wenn ich den Raspberry jetzt wieder einschalte bleibt Bild auf dem Display unverändet. Ich gehe nach den folgenden Codes vor:



    Wenn jemand weiter weiß oder mir sagen könnte was ich falsch mache, dem wäre ich sehr dankbar :D :danke_ATDE:


    Moin,
    das c-berry hat einen eigenen Video-Speicher, aus diesem liest der controlller auf dem TFT die Daten aus und stellt sie da.
    Wenn keine neuen Daten mehr reinkommen (zB wenn du den Raspberry ausgeschaltet hast), zeigt er halt das letzte Bild an .
    Wie lange, das hängt von der Stromversorgung ab. Eigentlich bekommt das c-berry den Strom vom Raspberry, ist der eine ohne Strom ist es der andere auch. oder hast Du da was geändert??

    Nach dem nächsten Neustart musst du nur "sudo fb2cberry &[/code]" oder mit Pfad wenn es bei Dir woanders liegt wie aufrufen und es sollte dann gehen.

    DerHagen

    Moin,

    das liegt daran, das ein neuer Chip verbaut wurde.
    Da haben die Jungs dann gleich ein paar Adressen verschoben.

    ete001
    14. Februar 2015 um 12:00


    DerHagen


    Update:
    Diese library kommt nicht von admatec. Die können daher an der Situation nicht so viel ändern.
    Aber:
    Es gibt eine neue BCM2835 in der Version 1.42, wenn man die installiert geht es sofort. In der history steht drin, das diese library auch die Pi 2 unterstützt.

    Moin,

    beim fb2cberry sind die sourcen doch dabei ...
    Nach screenshot und rüberkopieren legt sich der Task zum Schlafen nieder.
    Nach der eingestellten Zeit wacht er wieder auf, Screenshot, kopieren, schlafen etc.
    Wenn du die Schlafzeit verkürzt ... ist die update rate höher.

    also:
    1) aktuelle Version ziehen
    2) sourcen öffnen, schleife suchen, zeit reduzieren, kompilieren, fertig.


    DerHagen

    Hi,

    ich habe mir gerade bei admatec das package nochmal gezogen.
    Da ist jetzt ein verbessertes fb2cberry enthalten.
    So wie ich das verstehe, wird nicht mehr der gesamte Screen rüberkopiert, sondern nur noch das delta.

    War bei der 1ten Version die CPU-load von der reinen Bildwiederholfrequenz abhängig, jetzt spielt das nur noch dann eine Rolle, wenn sich der Bildinhalt auch ändert.


    Rein bei nix-tun, gibt es kaum CPU load (3%), unabhängig von der eingestellten fps-Zahl.

    DerHagen


    Hallo,

    Wie ist denn der Ressourcenverbrauch und die refresh Rate beim framebuffer Treiber
    gegenüber fb2cberry ? Denn da ist ja einiges einzurichten und zu kompilieren vorher :)

    Oder wurde/wird der Treiber in aktuelle images für den Pi eingepflegt ?

    Bei Notro's-SW habe ich gesehen, das man auch kleine Ausschnitte auf dem TFT umprogrammieren kann, in diesem Treiber nicht.

    Kann jdm was zur Performance des fb-drivers sagen?
    "Lohnt" sich der Aufwand?
    Was geht dadurch anders, oder sogar besser?

    DerHagen

    Moin,
    ich würde das so machen:

    uint16_t TFT_StatusRead( )
    {
    uint16_t data;

    bcm2835_gpio_write( RAIO_RS, HIGH );
    bcm2835_gpio_write( RAIO_CS, LOW );
    bcm2835_gpio_write( RAIO_RD, LOW );

    bcm2835_delayMicroseconds( 1 );

    bcm2835_gpio_write( RAIO_RD, HIGH );
    bcm2835_gpio_write( RAIO_CS, HIGH );

    data = TFT_SPI_data_in();

    return ( data );
    }

    Allerdings müssen zum Lesen noch 2 ICs nachgelötet werden (Typ nach Schaltplan).
    Mir ist klar, das TFT_SPI_data_in() noch fehlt, genauso wie die Initialisierung.
    Wenn Interesse besteht (PM), kann ich den rest auch noch posten.

    so, falls wer darauf gewartet hat, hier der Zusammenhang
    zwischen fps und CPU load [%]:

    fps............sec..............CPU mit Bildausgabe......CPU ohne Bildausgabe
    1..............1.................4.................................0
    2..............0,5..............7-9..............................0
    4..............0,25............15................................0
    8..............0,125...........25...............................0
    10............0,1..............30................................0
    20............0,05............45................................0-1
    40............0,025...........61...............................1
    100..........0,01.............77...............................3

    ohne Bildausgabe bedeutet, dass die Zeile ꞋRAIO_Write_PictureꞋ auskommentiert ist.

    was soll uns das sagen?
    1) die vc -Sachen laufen quasi ohne CPU Beteiligung ab
    2) das Kopieren der Daten zum Display kostet Zeit
    3) Je höher die framerate, desto höher der CPU load (irgendwie klar)

    -> Ziel: Nur dann (und auch dann nur das) zu übertragen, was wirklich von Bild zu Bild geändert wurde.
    Das würde die CPU load deutlich reduzieren.

    Wer Ideen und/oder Lösungsvorschläge hat ... können wir gerne diskutieren.

    DerHagen

    ach so, ja ...

    make
    makefile ist dabei, fb2cberry als "exe" auch. Wenn du nichts an den sourcen änderst, stellt make das fest und compiiliert/linkt nicht neu. Aufruf siehe unten.
    Richtig Sinn macht nur die Änderung der fps -> usleep( 100 * 1000 ).
    *1000 ist um von µs auf ms zu kommen. 1000ms/100ms = 10-> also 10 fps

    Aufrufen
    zum Testen: "sudo ./fb2cberry" , kann man mit "STRG-C" wieder abbrechen.
    wenn es ok ist, dann "sudo ./fb2cberry &" (ohne Anführungszeichen), durch das & wird das Programm in den Hintergrund geschickt und die Console ist wieder frei.
    Wenn alles "richtig" eingestellt ist, kann man das auch in den autostart mit einpflegen.

    Auflösung
    Ich habe ein 1920x1080 Monitor als main display. Der BCM skaliert die Auflösung des main displays unter auf die Auflösung des TFTs (320x240). Gut, man kann alles erkennen, aber natürlich nicht wirklich lesen.
    Wer NUR den CBERRY als Monitor einsetzten möchte, der kann natürlich in der Datei
    /boot/config.txt die gewünschte Auflösung einstellen.
    Nativ habe ich 640x480 als kleinste Auflösung gesehen, dh immer noch 4x größer als das cberry.

    Ausprobieren!
    Wem das immer noch nicht gut genug ist: kann man aber auch manuell einstellen

    framebuffer_width=320
    framebuffer_height=240

    und alles andere auskommentieren.
    Dann ist der main monitor in der selben Auflöung wie das cberry und man kann alles wunderbar lesen.

    DerHagen