ASM für M3 probieren?

OP #3364570
Moin,
ich hab hiern nen SAM3X der mit 84 MHz läuft und ein Touch-Display, 
272x480, 24bit Farbe ansteuern soll. Eigentlich ziemliche Haushaltsware, 
wenn da nicht das Problem wäre, das komplette Timing (HSYNC,VSYNC + 
Austastung) selber machen zu müssen da die Schnittstelle mehr oder 
weniger nur eine Art großes dummes Schieberegister darstellt. Der Chip 
könnte zwar mehr, jedoch ist der SPI-Bus nicht herausgeführt.

Im Moment habe ich zwei Probleme:
- Obwohl ich nun seit drei Tagen dran rumfrickel und mich ungefähr exakt 
an das etwas chaotische, ursprünglich chinesische Datenblatt des 
Herstellers halte bekomme ich nicht mal einen reproduzierbaren Balken 
hin.

- Ich habe mal auf dem Oszi die Zeit gestoppt um die Farbinformation für 
den nächsten Pixels zu ermitteln: Für ein paar in C geschriebene Zeilen 
Code sind die Zeiten ernüchternd, es reicht nie und nimmer für eine 60Hz 
Wiederholrate.
Verlockend an diesen Dingern ist der niedrige Preis von ca 16EUR im 
Vergleich zu den fast doppelt so teuren Displays mit sog. 
8080-kompatiblen Controller. Bis jetzt habe ich aber nur Code für uC 
gefunden die ein eingebautes LCD-Modul (STM32F427, LPC 1788) nutzen.
Somit stehe ich jetzt am Scheideweg:
Das ganze mühsam in Asm angehen? Lernen schadet zwar nie, aber der 
Aufwand ist mMn halt sehr hoch.
Oder das Ganze lassen lassen und auf nen anderen Chip ausweichen zumal 
eigentlich noch viel mehr Code in den Chip mit rein soll?
Gast #3364593
Hmm, also 272*480 bei 60 Hz ergibt ohne Austastlücken ca. 23 Mhz 
Pixeltakt, entsprechendt etwa 3,5 Taktzyklen pro Pixel. Daß das nicht 
reicht, ist nicht verwunderlich.
Gast #3364598
Ich sollte nicht so kurz nach dem Aufstehen rechnen...
Es ergibt natürlich 7,8 Mhz (23 MB/s bei 24 Bit) entsprechend ca. 10,7 
Taktzyklen pro Pixel, was immer noch ziemlich sportlich ist.
#3364600
Soweit schon - aber muss man unbedingt komplette 24 Bits pro Pixel 
erzeugen? Wenn man sich auf weniger Farben beschränkt, dann reduziert 
sich die Datenrate des µCs dementsprechend. Nur kann es sein, dass man 
dann extern etwas zusätzliche Logik benötigt.
Gast #3364614
A. K. schrieb:
> Atmel sagt, der SAM3X habe DMA. Das wär mal eine wahrhaft lohnende
> Anwendung dafür, wenn man Timer plus DMA so verheiratet kriegt, dass die
> Pixel-Übertragung damit automatisch ablaufen kann.

Sowas gibt's z.B. bei Renesas, nennt sich dort Direct Drive, bzw. exDMA.
OP #3364631
>Nur kann es sein, dass man dann extern etwas zusätzliche Logik benötigt.
Das wollte ich halt komplett umgehen. Einige Boards die ich sah haben 
noch externes RAM, das tu ich mir hw-mäßig aber nicht an.
Eine Alternative wäre das neue Discovery-Board mit nem STM32F427 mit LCD 
Controller + LCD auf der Platine.

Was ich noch zum Refresh sagen wollte: Wenn ich das Bild einfriere (den 
uC im Reset halte) fällt es immerhin nicht zusammen, d.h. der letzte 
übergebene Frame wird gespeichert. In sofern wäre das Timing viielleicht 
doch kein so großes Problem, vor allem wenn man mit der Farbauswahl 
runtergeht.
Aber was mich halt fuchst ist dass der Code nicht funktionieren will, 
obwohl es eigentlich nur erweiterte Bitschubserei ist; da werd ich wohl 
alleine durch müssen. Das per DMA zu lösen hätte was; aber ob ich das 
hinbekomme...
#3364665
Joachim ... schrieb:
> Für ein paar in C geschriebene Zeilen
> Code sind die Zeiten ernüchternd

Ohne diese Zeilen zu sehen, kann man nichts dazu sagen.
Man kann in C sehr leicht was hinschreiben, wo der Compiler sich echt 
einen abbrechen muß, um daraus Code zu machen.
Oder vielleicht hast Du auch nur die Optimierung ausgeschaltet.
#3364726
Guest schrieb:
> Sowas gibt's z.B. bei Renesas, nennt sich dort Direct Drive, bzw. exDMA.

Möglicherweise geht das auch mit normalem DMA. Der Timer erzeugt dann 
den Pixeltakt am Pin und löst ausserdem einen DMA-Transfer zum Port aus. 
Worst case ist, wenn das DMA zufällig mal zu lange braucht und es dann 
ein falsches Pixel gibt.
OP #3364748
Ich werde mich das Wochenende über mal einlesen und die DMA-Examples 
ausprobieren.

Autor: A. K. (prx) schrieb:
>Und wo war jetzt die Frage,
So wie's aussieht also doch kein ASM ;-) Danke an Alle für einen 
"Stolperstein in eine neue Richtung".

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.