Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » VGA-Adapter für A7100 » Themenansicht

Autor Thread - Seiten: -1-
000
14.11.2023, 21:23 Uhr
Ordoban



Hallo,

mein neuestes Projekt hat gerade das erste Lebenszeichen von sich gegeben: Ein VGA-Adapter für den A7100.


Das ganze basiert auf einem ESP32 S3, aufgebaut erst einmal auf Steckbrett.



Für die Ausgabe auf VGA benutze ich den LCD/CAM Kontroller. Die Video-Signale vom A7100 lese ich über den SPI-Port ein. Der Adapter hat noch seine Macken. Zum Beispiel verliert es ab und zu Zeilen, so dass das Bild zuckt. Die erste Spalte fehlt, und zum rechten Rand hin geht die Pixelsynchronisation verloren. Das lässt sich aber alles in den Griff krigen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
15.11.2023, 07:36 Uhr
erocdraH_XAM



Erst letztens hatte ich deine Experiment gesehen, wo du irgendwie mit dem Logic Analyzer ein Bild herbeigezaubert hattest.
Definitv sehr spannend!
Ich selbst habe aktuell "nur" einen A7150, mein Vater hat ein einfaches Kabel gelötet womit er an einem VGA LCD Monitor Problemlos Dargestellt wird. Jedoch Digitales Capturing an einem modernen System mittels VGA Capturing oder HDMI Capturing von einem VGA Rescaler, ist mir bei heute leider nicht gelungen. Für die Rescaler sitzt das Bild zu weit außerhalb des unteren Bildbereichs und wird zu mindestens 1/3 abgeschnitten. Die LCD Monitore zeigen das Robotron Bild ja auch immer im unteren Bildbereich an.
Den von dir Entwickelten aktiven Adapter will ich demnächst auf Basis der Platine von BICa5105 nachbauen und hoffe, dass der Rescaler damit dann klar kommt.
Andernfalls wäre die Frage ob die Methode, die du hier versuchst auch möglich wäre?
Oder gibt es einen Entwickler der mal endlich eine Digitale Grafikkarte für den A7150 Bus auf den Markt bringt.... Vielleicht schreiben wir mal AMD oder Nvidia an, wobei Intel ja jetzt auch im kommen ist

Dieser Beitrag wurde am 15.11.2023 um 07:36 Uhr von erocdraH_XAM editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
15.11.2023, 09:53 Uhr
RP



Die Frage ist nur für was brauche ich das?

VGA am A7150 ist ja kein Problem , die meisten Monitore speichern die verschobenen Frequenzen des A7150 und sonst ist es eine kurze Korrektur der Einstellungen am Monitor.

Der A7100 und EC1834 mit mon. Karte ist da schon eine Herausforderung.
VGA an der Grafikkarte geht nicht. Da ist Stefan mit seiner Lösung schon auf einen machbaren Weg.
Da die fast unverwüstlichen Robotron K7229 Monitore jetzt auch mit Bildröhren und Zeilentrafo Ausfall kaputt gehen.

Ich habe schon mehrere Hercules mono Monitore umgebaut, so das sie am A7100 gehen. Aber auch diese Monitore sind vom Aussterben bedroht und eigentlich zu schade für einen Umbau.

Eine völlig neue Grafikkarte für diese Rechner zu entwerfen und zu bauen wo zu ? der A7100 ist ohnehin zu nichten zu verwenden, fast alles was der kann, kann auch ein alter 8 bit Rechner.
Die Anwendungen für den A7150 sind auch sehr begrenzt.
So sind diese Rechner nur noch schöne funktionierende Ausstellungsstücke.

Rolf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
15.11.2023, 10:10 Uhr
MarioG77

Avatar von MarioG77

@Rolf,

ich glaube diese Frage sollte man hier so nicht stellen... Viele Sachen hier haben einen fraglichen "Sinn" für außenstehende.
Ich finde das faszinierend, dass obiges anscheinend schon recht gut geht.
Wer weiß, welche Möglichkeiten das sonst noch bietet.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
15.11.2023, 11:44 Uhr
RP



Mario,

den Rechner reparieren und erhalten ist unser Hobby, ohne Monitor geht das kaum, da machen die Lösungen von Stefan für mich Sinn.
Die funktionieren ja auch im wesentlichen mit der original Hardware der Robotron Rechner.
Einen Umbau der Zeilentrafos im K7229 ist auch, aber sehr aufwendig, möglich. Das entfernen der Epoxidharz Masse vom original Zeilentrafo ist eine "scheiß" Arbeit. HV Wicklung entfernen und dann funktioniert das parallel schalten eines Dioden Splitt Trafos auch.

Rolf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
15.11.2023, 12:30 Uhr
MarioG77

Avatar von MarioG77

Hi Rolf,

dann habe ich dich falsch verstanden...

Ich habe nämlich mit den anderen 1715 auch noch das Thema, dass ich kein volles Bild habe. Das wird dann in so eine Richtung gehen...

Ich bin ja schon glücklich, dass dich dank dir wenigstens einen 1715 Monitor habe.
Danke nochmal
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
15.11.2023, 17:21 Uhr
Ordoban




Zitat:
erocdraH_XAM schrieb
Die LCD Monitore zeigen das Robotron Bild ja auch immer im unteren Bildbereich an.


Das ist beim A7150 normal. Auf dem scheinbar leeren oberen Bildschirmbereich können auch Grafiken dargestellt werden.
Für den A7150 ist der Ansatz mit dem ESP32 nur schlecht zu gebrauchen. Der A7150 bringt die Farb-Signale schon als analoge RGB-Signale raus - exakt wie bei VGA. Die wieder in ordentliche digitale Signale umzuwandeln dürfte nicht einfach sein. Immerhin ist die Pixel-Frequenz etwa 24MHz.

Beim A7100 sind die beiden Farbsignale noch digital, netterweise open Kollektor - was mir die Umwandlung in 3,3V für den ESP32 erspart. Ja, der A7100 kann nur 4 Farben, wenn man schwarz als Farbe mit zählt.


Zitat:
MarioG77 schrieb
Ich habe nämlich mit den anderen 1715 auch noch das Thema, dass ich kein volles Bild habe. Das wird dann in so eine Richtung gehen...


Welche Art von Bildsignal hat denn der PC1715?
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
15.11.2023, 21:13 Uhr
Ordoban



Na also



Jetzt noch das ganze fest aufbauen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
15.11.2023, 21:17 Uhr
Klaus



Hallo,

ich habe gerade den Sinclair QL auf dem Tisch… ja ich weiß, nix DDR…
Da mir die Bildausgabe RGB an SCART nicht so richtig gefallen hat, habe ich bei meiner Suche ein Projekt bei Github gefunden. Hier wird das RGB-Signal in VGA gewandelt.

https://github.com/holmatic/video_if_ql_vga

Da der Raspberry Pi PICO ja sehr preiswert zu haben ist, habe ich die kleine Schaltung für den QL mal in fliegender Verdrahtung aufgebaut.
Das Bild sieht sehr gut aus,... habe aber bisher nur mit einem recht alten Monitor getestet. Ich probiere morgen mal noch andere Monitore mit VGA-Eingang.

Nun habe ich leider von dem Raspberry bzw. vom Programmieren in C (oder C++) absolut keine Ahnung.

Vielleicht sind hier ja Profis, die herausfinden können, ob man die Software (Schaltung) auch modifizieren kann und so u.U. auch die alten DDR Rechner über den kleinen Konverter an VGA Monitore anschließen kann.

Ja ich weiß, da gibt es schon reichlich Konverter. Teilweise für sehr viel Geld. Der kleine Pico ist preiswert und schön klein.

Evtl. kann einer der Spezialisten sich das Projekt mal anschauen … ob da evtl. was für unsere alten Schätzchen machbar ist.

Viele Grüße,
Klaus

Dieser Beitrag wurde am 15.11.2023 um 21:18 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
16.11.2023, 09:50 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb

Zitat:
MarioG77 schrieb
Ich habe nämlich mit den anderen 1715 auch noch das Thema, dass ich kein volles Bild habe. Das wird dann in so eine Richtung gehen...


Welche Art von Bildsignal hat denn der PC1715?


Prinzipiell ist das ein Standard Monochrom Signal, aber frag mich nicht nach Details.
Zur Erzeugung wird ein Intel 8275 CRT Controller genutzt.
Ich habe bis jetzt dafür noch kein Projekt gefunden, was das Signal Sauber für moderne Monitore verarbeitet.

Prinzipiell wäre mir ein Adapter lieber, als den BWS nachzubauen (Aufgrund des Aufwand/Kosten).

In einer Elektor von diesem Jahr war eine Artikel-Serie zu Videosignalen und Projekte mit u.A. Pi Pico. Allerdings kann ich die Infos zu Videosignalen einfach nicht länger als 5 Minuten im Kopf behalten. Das ist irgendwie ein Thema für sich. Mein Respekt gilt allen, die damit arbeiten.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
16.11.2023, 10:12 Uhr
RP



Die PC1715 weichen alle geringfügig in der hor. und vert Frequenz von der TV Norm ab, aber jeder anders, das Problem haben auch einige alte CGA Karten. Alte Monitore und Fernseher gleichen das über die synchron Impulse aus.
Diese Unterschiede verschieben das Bild bei digitaler Aufbereitung des Video Signals des PC1715 in eine andere Richtung.
Deshalb stelle ich keinen reparierten K7222 und K7221 Monitor mit einen PC1715 ein, der BIC hat an der DSE das gleiche Signal für den K7222 mit 100% TV Norm, da stimmen die Bilder am Fernseher und am Monitor überein.

Rolf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
16.11.2023, 12:49 Uhr
Heiko_P



Der CRT-Controller beim PC1715 muss nach dem Einschalten initialisiert werden, das passiert nach dem Laden des BIOS (deshalb bringt der 1715 nach dem Einschalten erst einmal kein Bild, sondern erst wenn das Betriebssystem erfolgreich geladen wurde). Bei der Initialisierung müssen u.a. Zeilen- und Bildfrequenz eingestellt werden. Hier gibt es zwischen den verschiedenen CP/M-Versionen Abweichungen, die sich beim Original-Bildschirm als Lageabweichung bemerkbar machen und am Monitor korrigiert werden können (oder man patcht die Werte im BIOS, sofern man die Stellen weiß ...). Die Einstellmöglichkeiten des CRT-Controllers bei der Initialisierung sind allerdings begrenzt, deshalb ist die Nutzung handelsüblicher VGA-Konverter nicht problemlos möglich.

Gruß
Heiko
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
18.11.2023, 19:48 Uhr
Ordoban



Sagt mal, wie genau waren denn die Schwingquarze in den DDR-Rechnern? Und wie genau sind die heute noch? Driften die von der Frequenz her weg, wenn die altern?
Der 16MHz-Quarz in der A7100-Grafikkarte ist soweit daneben, dass sich am Ende jeder Bild-Zeile die Pixel-Position verschiebt. Das liegt vermutlich nicht am Schwingquarz des ESP32, denn ich hatte das Problem auch schon bei der Software für den Logikanalyzer.
Ich habe das für mich im ESP32 per Software gelöst, aber das ist keine universelle Lösung für alle.
Gibt es eine Möglichkeit die Frequenz von Schwingquarzen zu justieren? Ich hätte nämlich die Möglichkeit in dem ESP32 die Frequenzen zu messen, und den Korrekturfaktor automatisch anzupassen. Um das ordentlich testen zu können, muss ich aber Quarze mit verschiedenen Abweichungen simulieren können.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
19.11.2023, 10:29 Uhr
RP



https://www.mikrocontroller.net/topic/520751

mal nachlesen, die Quarze waren und sind schon recht genau.

In den ersten IBM XT Rechnern und auf einigen CGA Karden sind Keramische Trimmer eingebaut um die Frequenz zu korrigieren.

Rolf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
19.11.2023, 17:30 Uhr
Ordoban



Ahja. Danke, genau das hab ich gesucht
Also ist die Genauigkeit von einem Schwingquarz nicht nur vom Quarz abhängig, sondern auch von der Oszillatorschaltung. Von der einfachen Schaltung mit 74S04-Gattern würde ich nicht erwarten, dass die allzu genau ist. Für analoge Monitore war das auch kein Problem.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
23.11.2023, 22:21 Uhr
Ordoban



So, der feste Aufbau ist fertig und funktioniert. Eingebaut in einen Phönix Schraubklemmen-Stecker.
In dem Ding ist aber so extrem wenig Platz, dass ich die VGA-Beschaltung von Rot und Blau weggelassen habe. Grün sieht eh stilechter aus



Ich werde demnächst noch Schaltplan und Firmware-Quelltext auf Github packen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
24.11.2023, 09:04 Uhr
MarioG77

Avatar von MarioG77

Wie hast du die R (u.a.) ohne Kurzschluss auf dem ESP32 Gehäusedeckel hinbekommen?
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
24.11.2023, 16:44 Uhr
Ordoban



Die 3 sichtbaren Widerstände sind mit den Drähten an den Kontaktflächen des ESP32 und alle zusammen an dem Festspannungsregler gelötet. Die liegen also nicht auf dem ESP auf, sondern haben einen halben Millimeter Abstand. Das ganze ohne Kurzschluss zu löten war schon eine Herausforderung. Ich habe dafür auch ausnahmsweise mal bleihaltiges Lötzinn verwendet. Mit bleifreiem hätte das vermutlich nicht geklappt.

Ich bin noch am überlegen, ob ich das noch als Leiterplatte planen und fertigen lassen sollte. Hättet ihr Bedarf für solche Adapter? Wenn ja: was würdet ihr bevorzugen: SMD oder klassisch?
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
24.11.2023, 17:44 Uhr
Heiko_P




Zitat:
Ordoban schrieb
Ich bin noch am überlegen, ob ich das noch als Leiterplatte planen und fertigen lassen sollte. Hättet ihr Bedarf für solche Adapter? Wenn ja: was würdet ihr bevorzugen: SMD oder klassisch?



Mich würde zuerst einmal die Schaltung und Software für den ESP32 interessieren, vielleicht lässt sich daraus auch etwas für den PC1715 "zaubern". Falls das klappen sollte wäre der Bedarf an Platinen sicher deutlich größer.

Gruß
Heiko
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
24.11.2023, 18:02 Uhr
MarioG77

Avatar von MarioG77

Für meine 2 1834 mit der Mono Karte könnte ich mir das vorstellen - wenn das da geht (Grün - klingt danach... )

Aber ja, wenn man damit was für die 1715 machen könnte, wäre ich so oder so auf jeden Fall dabei.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
24.11.2023, 18:33 Uhr
ambrosius



Ich wäre auch mit 2 Stck dabei.
--
Viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
24.11.2023, 18:40 Uhr
Ordoban



Die Schaltung ist simpel.


Das Programm ansich auch: https://imoriath.com/downloads/privat/a7100/VGA_Adapter_main.c
Der Sync-Impuls löst im ESP32 einen Interrupt aus, der startet dann das Einlesen der Farb-Signale und des Sync-Signals an Digital-Ports über die SPI-Schnittstelle und DMA-Kontroller. Die SPI-Übertragung geht nur als Block. Der Block darf erst enden, wenn schon der nächste Sync-Impuls angefangen hat. Wir brauchen den aufgezeichneten Sync-Impuls zum Ausrichten des Pixel-Anfangs. Während schon die nächste Zeile in den nächsten DMA-Puffer gesaugt wird kopiert die CPU die Pixel in den VGA-Speicher.
--
Gruß
Stefan

Dieser Beitrag wurde am 24.11.2023 um 21:43 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
24.11.2023, 19:25 Uhr
MarioG77

Avatar von MarioG77

Klingt prinzipiell, als ob das machbar sein sollte... Sage ich so laienhaft...
Nur Mal kurz den Code überfliegend und über die 1715 Signale nicht 100% Bescheid wissend...

Prinzipiell hatte ich so was auch im Kopf.
Ich hatte aber eher an den RP2040 gedacht, weil man dessen Ports noch Hardwarenäher programmieren kann. Aber ein 1715 sollte ja nicht mehr Bild-Informationen liefern, als ein 7100.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
24.11.2023, 19:35 Uhr
Ordoban



Die wichtigste Frage wäre: sind die Farb-Signale beim 1715 analog oder digital?
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
24.11.2023, 19:45 Uhr
MarioG77

Avatar von MarioG77

Farbe? Nix Farbe.
Da ich im Servicehandbuch gerade keine direkte Aussage zur Bildinformation gefunden habe, habe ich im Schaltplan nachgesehen. Das Video Signal kommt aus einem NAND Gatter.
Ein zweites NAND liefert noch ein Signal für Intensität.

Ich wollte es vorher nicht sagen, aber dachte mir das schon...

Wir reden also über digitale Signale. Das dürfte jetzt nicht gerade schlecht sein...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
24.11.2023, 19:54 Uhr
Ordoban



Jap. Analoge Signale wieder digital einzulesen wird mit mehreren MHz schwer.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
24.11.2023, 20:57 Uhr
Rolly2



Beim 1715 sind die Signale "Video, Sync und Intensität" alle digital. Ausgegeben über 7437. Mit Farbe ist da nichts.
Habe im 1715 die VGA-Karte von Heiko drinnen, funzt sehr gut.
VG, Andreas

Dieser Beitrag wurde am 24.11.2023 um 21:10 Uhr von Rolly2 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
24.11.2023, 21:37 Uhr
schlaub_01



Ich hatte das vor vielen Jahren mal mit einem Spartan3 Demoboard ausprobiert am PC1715, aber das Problem war da, daß man eine sehr genaue Synchronisierung braucht, damit die Pixel nicht flattern. Ich hatte mich auf das Sync Signal mit einem Pixelzähler synchronisiert, aber auf dem Demoboard war auch kein für den Pixeltakt idealer Taktgenerator. Weiterhin habe ich auch Experimente mit einer 3-fach Überabtastung gemacht, bei der mindestens 2 Bits 1 sein müssen, damit das Pixel als gesetzt gilt, aber das brauchte auch keine wirkliche Verbesserung. Hatte das dann aber nicht weiter verfolgt. Es gab in der Richtung im Netz auch viele Experimente, z.B. C64, aber die waren auch nicht gerade wirklich perfekt. Das Bild vom ESP32 sieht aber auf den ersten Blick relativ sauber aus - ist die Frage, wie das dort gemacht wird. Auf jeden Fall hätte eine externe Lösung den Charme, daß man da an verschiedene Rechner einfach anpassen kann.
Aber Andreas hat da schon recht - eine digitale Lösung, quasi mit eigener Bildspeicherkarte ist immer am saubersten.

Viele Grüße,
Sven.

Dieser Beitrag wurde am 24.11.2023 um 21:40 Uhr von schlaub_01 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
24.11.2023, 22:09 Uhr
Ordoban



Das mit dem Pixelflattern hatte ich bei den ersten Versuchen auch. Zuerst hatte ich mit 16MHz abgetastet, exakt die selbe Frequenz wie der Pixeltakt im A7100. Das Problem ist, dass der Taktgeber der Abtastung mit dem Taktgeber der Grafikkarte nicht phasen-synchron läuft. Es kann immer mal passiern, dass die Abtastung genau zwischen 2 Pixeln passiert. Dann wird das Pixel mal hier und mal da erkannt.

Ich hab das so gelöst, dass ich mit der maximal möglichen Frequenz abtaste: mit 80MHz. Ich sample auch das Sync-Signal mit, und suche dann in den Samples die fallende Flanke des Sync (die genaugenommen schon zur nächsten Zeile gehört), und rechne dann bis zum ersten Pixel zurück. Durch die 5-fache übersamplung kann ich genau die Pixel in der Mitte treffen, und bekomme ein stabiles Bild - zumindest theoretisch. Wie ich schon geschrieben habe scheint die Pixel-Frequenz vom A7100 leicht daneben zu liegen. Das habe ich gelöst, indem ich 2 Samples nebeneinander Oder-verknüpfe. Es sind auch noch andere Arten der Frequenzanpassung möglich.

Im Prinzip müsste das System auch für den 1715 funktionieren, man muss "nur" die passenden Parameter rausfinden. Und irgendeine Art von "Autodetect" für die verschiedenen Parametersätze von den verschiedenen CP/M-Versionen schreiben.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
24.11.2023, 23:05 Uhr
schlaub_01



Der ESP32 ist natürlich gegenüber einem FPGA auch preislich in einer ganz anderen Liga und der Aufwand an der Stromversorgung ist auch sehr minimal. Hat schon seinen Charme. Die 1715 Parameter könnte man ja anhand des Sync Timings herausfinden und so viele Modi hat der 8275 nicht. Wäre alles sicher irgendwie machbar. Man müsste das nur alle paar Bilder machen, daß man beim Wechseln des Modus das auch irgendwie erkennt. Naja, wenn mal viel Zeit ist, kann ich mir das mal anschauen. Du hast ja die Quellen für die Bilderkennung schon in [21] abgelegt.

Viele Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
25.11.2023, 13:30 Uhr
MarioG77

Avatar von MarioG77

Mal schauen, wie schnell ich mit dem D008 voran komme.
Über die Feiertage habe ich 2 Wochen frei, vermutlich überkommt mich das bis dahin...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
031
26.11.2023, 22:28 Uhr
MarioG77

Avatar von MarioG77

Da ich nach Urlaub und Krankheit jetzt doch Mal wieder im Büro schauen muss, ob mein Arbeitsplatz noch da ist, habe ich die Tage keinen Zugriff auf Werkstatt.
Also habe ich mir jetzt die Bildparameter Mal angeschaut.

Leider habe ich zum A7100 kaum Infos gefunden. Wenn ich mir die Daten vom Monitor anschaue, haben wir es da mit 22KHz Horizontalfrequenz zu tun.

Beim 1715 sind 2 verschiedene Monitore möglich. Wenn ich vom K7222.25 ausgehe, haben wir folgendes:
16KHz
Auflösung 80x24 (8x12 Pixel pro Zeichen): 640 x 288 (Plus ein paar weitere für Sync)
Punktfrequenz: 13,8MHz
Gesamtzeit für 1 Bild mit Strahlrücklauf (26 Zeilen): 19,5ms
Bildwiederholfrequenz: 51 Hz

Die Werte sind abweichend zum K7221.25 - vielleicht rühren einige Probleme ja auch daher. Ich finde keine Hardwareseitige Einstellmöglichkeit, also könnte das ja die vorgesehene Einstellung im BIOS sein.

Jedenfalls ist der Aufwand einiges niedriger, als beim A7100.
Man müsste in der Interruptroutine jetzt wohl nur die Anzahl der Daten im DMA Transfer entsprechend reduzieren. Wie genau habe ich aber noch nicht raus.

Die Routine, die die Daten dann für VGA aufbereitet muss dementsprechend auch für die Auflösung angepasst werden. Sollte kein Hexenwerk sein...
Schwieriger ist eher, einen passenden ESP32-S3 zu finden. eBay findet in DE nur die Developer Boards. Muss wohl bei mouser bestellen... Bei dem Stückpreis könnte/sollte man eine Sammelbestellung machen.
Welchen ESP32 Typ hast du da genau genommen Stefan? Ich vermute, mit 8MB RAM sollte das auskommen, oder?
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
032
26.11.2023, 22:29 Uhr
MarioG77

Avatar von MarioG77

Gerade habe ich das hier im CPA Handbuch gefunden:

Zitat:

Die Anpassung des Bildschirmformats erfolgt beim Kaltstartvor-
gang automatisch. Beim Bürocomputer wird dabei Bit 6 vom Port
0Ah abgefragt (16*64, wenn =1; 24*80, wenn =0). Da am PC1715
eine solche Hardware-Abfrage nicht möglich ist, erfolgt die
Abfrage folgendermaßen:
Bei der Systemgenerierung wird ein Bildschirmformat als
Anfangszustand vorgegeben (i.a. 24*80). Dies wird für die
Kaltstart-Meldungen zunächst angenommen. Beginnt der Nutzer
die Uhrzeiteingabe beim Kaltstart nicht innerhalb einer maxi-
malen Zeitspanne von 20 s, so wird angenommen, daß der Bild-
schirm nicht lesbar ist und auf das andere Format umgeschal-
tet. Der gleiche Effekt ist durch Betätigen von ESC statt
einer Zifferntaste erreichbar. Dies wiederholt sich solange,
bis die Uhrzeit eingegeben ist.
Ein falsches Bildschirmformat führt am PC1715 hardwarebedingt
zu einem nichtsynchronisiertem Monitorbild, beim richtigen
Format wird es (wieder) stabil.



Ist das nur bei CPA so?
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
033
26.11.2023, 22:55 Uhr
Rüdiger
Administrator



Zitat:
MarioG77 schrieb
Ist das nur bei CPA so?



Bei SCP wird das Bildschirmformat bei der Generierung festgelegt.
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
034
27.11.2023, 08:09 Uhr
MarioG77

Avatar von MarioG77

ok Danke...

Den ESP32-S3 gibt es auch bei tme.eu, wenn man sonst nichts von mouser braucht, muss man nicht erst 15 Stück bestellen...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
035
27.11.2023, 16:59 Uhr
Ordoban




Zitat:

Welchen ESP32 Typ hast du da genau genommen Stefan? Ich vermute, mit 8MB RAM sollte das auskommen, oder?


Ja, der VGA-Konverter kommt sogar mit dem internen RAM aus. Ich hab mir aber auch die 8MB-Variante (ESP32-S3-WROOM-1-N4R8CT-ND) geholt, um für spätere Projekte gerüstet zu sein. Es sollten auch Module mit weniger IO-Pins gehen. Für reinen Grün-Betrieb reichen 8 IO's. Es muss nur einer aus der S3-Serie sein. Bei S2 fehlt der TFT-Kontroller (für VGA), die C und H-Serien sind warscheinlich zu langsam.


Zitat:

Schwieriger ist eher, einen passenden ESP32-S3 zu finden. eBay findet in DE nur die Developer Boards. Muss wohl bei mouser bestellen... Bei dem Stückpreis könnte/sollte man eine Sammelbestellung machen.


Die gibts mittlerweile bei Reichelt. Es spricht auch nichts gegen so ein Entwickler-Board (außer dem Preis...). Da muss man sich wenigstens nicht mit den irre kleinen Anschlusspads rumärgern.


Zitat:

Leider habe ich zum A7100 kaum Infos gefunden. Wenn ich mir die Daten vom Monitor anschaue, haben wir es da mit 22KHz Horizontalfrequenz zu tun.


Beim A7100 sind das 21.7KHz, 50.3Hz, 16MHz und 640x400. Siehe https://www.tiffe.de/robotron/MMS16/Doku/A7150/ABG-K7072.pdf Seiten 4 und 14.


Zitat:

Jedenfalls ist der Aufwand einiges niedriger, als beim A7100.
...
Die Routine, die die Daten dann für VGA aufbereitet muss dementsprechend auch für die Auflösung angepasst werden. Sollte kein Hexenwerk sein...


Durch die krumme Pixelfrequenz wirst du mehr Aufwand in die VGA-Auswertung stecken müssen. Die Abarbeitung dieser Auswertung ist absolut zeitkritisch. Zu lange an einer Zeile herumzurechnen bedeutet von der nächsten Zeile überholt zu werden.


Zitat:

Man müsste in der Interruptroutine jetzt wohl nur die Anzahl der Daten im DMA Transfer entsprechend reduzieren. Wie genau habe ich aber noch nicht raus.


Zeile 106

Quellcode:

        .rxlength = 28720,                     // nur 28k Samples einlesen


Durch die längere Zeilen-Zeit wirst du die Anzahl der Samples eher erhöhen müssen. Die maximale Anzahl Samples für einen DMA-Transfer sind 4092 Bytes bzw. 32736 Bits. In meinem Programm wird das nur einmal beim Booten eingestellt. Wenn du das im laufenden Betrieb (z.B. in der Interruptroutine) verändern möchtest, dann am besten direkt in das entsprechende SPI-Register schreiben.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
036
27.11.2023, 22:03 Uhr
MarioG77

Avatar von MarioG77

ok, ich sehe schon, das wird kein Kinderspiel...

Das beste wäre, ich würde einfach mal einen ESP holen und etwas damit herum probieren.

Danke für die Infos so weit. Bestellung bei reichelt ist schon Mal raus.
Komme in den nächsten 2 Wochen leider nicht dazu, wird also ein Feiertagsprojekt...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
037
06.12.2023, 18:26 Uhr
MarioG77

Avatar von MarioG77

Endlich kam die Reichelt Bestellung an. Allerdings auch alle anderen (fehlende Teile für D008, tiny AC1...).
Denke, ich werde mich Hardwaremäßig schon Mal nebenbei an den Aufbau machen. Das müsste ja schnell gehen.
Die Software wird wohl das kniffligere sein...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
038
07.12.2023, 18:31 Uhr
Ordoban



Na dann mal ein paar Tips von mir dazu:
In den meisten Anleitungen wird das Programmieren der ESP32 mit Zusatz USB-UART Chip beschrieben. Den brauchen wir nicht, der S3 kann direkt über die eigene USB-Schnittstelle programmiert werden.
Spiel ruhig mit dem ESP32 rum. Lass mal ne LED blinken.

Für das VGA-Projekt:
In den Projekteinstellungen
a. Component config-->ESP System settings-->CPU Frequency--> auf 240MHz stellen (default 160 ist zu langsam)
b. Component config-->ESP System settings-->Also watch CPU1 interrupt-->Entfernen
c. Component config-->ESP System settings-->Enable Task Watchdog timer-->Entfernen (ansonsten resettet der ESP dauernd, weil wir eine Endlosschleife drin haben)
d. Compiler Options-->Optimization Level-->auf "Optimize for performance" stellen (sonst zu langsam)

Den VGA-Teil ausprobieren, z.b. Zeilen 227-230 so machen:

Quellcode:

for (int b=0;b<640*400;b++)  // VGA-Puffer leeren
{
    VGA_BUF[b]=(b & 255);
}


Schön bunt...

Die 3 Signale von der 1715-Grafikkarte und die 2 Debug-Pins vom ESP32 (GPIO10 und GPIO11) an den Logikanalyzer anschließen.
Die 3 Signale vom 1715 sehen eventuell so aus:


HSYNC sind kurze LOW-Impulse, VSYNC ist ein längerer LOW-Impuls, durch kurze HIGH Impulse unterbrochen.
Dazu die Reaktion des ESP32 auf GPIO10 ansehen. Der sollte nach VSYNC HIGH bleiben, und ab dem 28. HSYNC auf LOW gehen, wenn die SPI-Schnittstelle Daten einliest. (Der Pin ist genau genommen das Chipselect vom SPI)

Die Länge des Einlesens darf nicht zu kurz sein - der nächste HSYNC muss mit drauf sein. Es darf auch nicht zu lang sein, das Einlesen muss fertig sein, bevor das nächste gestartet werden kann.
Die Länge kannst du in Zeile 106 einstellen.
Ideal wäre ungefär so:

Als nächstes müsstest du herausfinden an welcher Sample-Position meistens der HSYNC beginnt - z.B. so:
Zeile 245+

Quellcode:

// Wir suchen den nächsten BSYNC-Impuls
for (int a=0; a<b; a++)
{
    if ((buf[a] & 0x04)!=0x04)
    {
        sync = a;  // gefunden!
        break;
    }
}
printf("Sync=%d\n",sync);
ABG_DMALIST[0] = 0x80ffffff;
ABG_DMALIST[3] = 0x80ffffff;
continue;


Das dürfte im Terminal ein paar Zahlen ausgeben. Von der, die du am häufigsten siehst, ziehst du ein paar ab (vlt 20?)und trägst die unter BSYNC_SUCHE_START in Zeile 35 ein.
Beachte, dass printf() relativ lange dauert, und es deshalb zum Stau im DMA-Puffer kommt. Irgendwie kommt dadurch die DMA-Engine zum Stop.

Jetzt wäre die Anpassung auf die Pixelfrequenz vom 1715 dran. Mein Vorschlag wäre Zeile 261+:

Quellcode:

for (int i=0;i<128;i++) // wir machen 5 Pixel pro Durchlauf, also 128*5 = 640 Pixel
{
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=6;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=6;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=6;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=6;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=5;  // <--- die 5 statt 6 ist Absicht!
}


Dadurch hast du eine Austastfrequenz von 13,7931MHz (80MHz : 5 4/5). Ich hoffe mal, dass das die Pixel trifft.
Jetzt noch die Bildgrenzen ermitteln und einstellen:
Das erste Pixel pro Zeile wird mit BSYNC_PIXEL_ABSTAND (Zeile 34) eingestellt, herausfinden durch probieren.
Die erste sichtbare Bildschirmzeile in Programmzeile 53. Die sollte in der Doku vom 1715 stehen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
039
07.12.2023, 20:01 Uhr
MarioG77

Avatar von MarioG77

ok, wow...
Besten Dank.

Vermutlich werde ich mir auf die schnelle was auf dem Breadboard zusammen stecken. Dann müsste ich schnell dabei sein.

Hoffentlich wird es nicht kälter. Das würde mich frustrieren, wenn mich die Temperatur jetzt abhält...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
040
08.12.2023, 16:24 Uhr
ambrosius



Hallo Mario,

da solltest Du vielleicht lieber über 'frostieren' sprechen.
--
Viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
041
09.12.2023, 07:27 Uhr
Ordoban



Werkstatt zu kalt? Nimm halt ein Schmiedefeuer statt Lötkolben
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
042
09.12.2023, 18:09 Uhr
MarioG77

Avatar von MarioG77

Schmiedefeuer? Rauchig, könnte mit SMD aber funktionieren...
Aber dem Wetter nach wird frostieren kein akutes Thema sein.

Ich hab jetzt endlich VSCode und ESP-IDF so weit hingebogen, dass er den (original) Code kompiliert.

Sieht aber so aus, dass ich heute nicht mehr dazukomme, die Schaltung aufzubauen. Morgen steht schon wieder Weihnachtsfeier an. Da komme ich auch nicht weiter...
Tag bräuchte mehr Stunden.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
043
09.12.2023, 21:33 Uhr
felge1966



Wenn dir die 24 Stunden nicht reichen, nimm doch die Nacht dazu...

Gruß Jörg
--
http://felgentreu.spdns.org/bilder/jacob120.gif
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
044
15.12.2023, 19:31 Uhr
MarioG77

Avatar von MarioG77

Ein paar Drähte an den WROOM dran zu löten habe ich echt unterschätzt.
Die Pads sind eng beieinander, wenn man einen dickeren Draht für das Steckbrett braucht.

Braucht doch etwas länger Zeit, wenn das Provisorium "ordentlich" machen will.
Zum Glück habe ich keine Eile.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
045
15.12.2023, 20:00 Uhr
Ordoban



Ich hab das so gemacht, dass ich ein langes Stück blanken Draht um den WROOM gewickelt hab, immer genau mittig auf die Kerbe von den Anschlusspads. Dann alle Pads gleichzeitig verlötet. Wenn sich Brücken bilden, dann kann man die in Richtung Oberseite wegstreichen. Dann die Drähte bündig an der WROOM-Oberseite mit einem spitzen Elektronik-Seitenscheider aufscheiden - fertig.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
046
16.12.2023, 11:32 Uhr
MarioG77

Avatar von MarioG77

Ja, das ist smart...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
047
16.12.2023, 19:52 Uhr
MarioG77

Avatar von MarioG77

ok, Aufgebaut ist es.
Wenn man die Drähte nicht versucht flach dran zu löten, geht das deutlich besser.



Ich musste GPIO0 erst auf Low ziehen, damit ich flashen konnte. Jungfräulich war er nur am resetten.
Danach lief es auch mit GPIO auf H Pegel.

Morgen dann ein paar Tests.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
048
17.12.2023, 17:29 Uhr
MarioG77

Avatar von MarioG77

Hmmm.

Der crasht in der Schleife von Zeile 224-236 permanent.
Auf VGA erhalte ich im Moment auch noch kein Signal - der Monitor bleibt aktuell noch bei "No signal".

---- Eine Kaffeepause später ----

...Irgendwie hat das SDK seine Settings nicht mehr gehabt....

Jetzt crasht er nicht mehr. Bringt aber auch keine Sync Ausgabe.
Ebenfalls bleibt GPIO10 komplett ohne Lebenszeichen. GPIO11 tut aber was.

Das BSYNC kommt hingegen im LA. Ich muss alles nochmal genau prüfen. Nicht, dass ich irgendwas falsch angeschlossen habe oder am Steckbrett was nicht passt.

Für heute und die nächsten Tage war es das aber. Komme erst wieder Ende der Woche in die Werkstatt und dann geht es zuerst am D008 weiter.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
049
19.12.2023, 19:05 Uhr
MarioG77

Avatar von MarioG77

Wenn ich mir den Code so offline anschaue, sieht es doch so aus, als ob der zweite Core sich noch langweilt, oder?

Sollten also noch Leistungsreserven (vermutlich mit Einschränkungen) vorhanden sein.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
050
19.12.2023, 22:41 Uhr
Ordoban



Jap. Core #0 ist normalerweise für "Systemfunktionen" wie WLAN reserviert, während der Anwender-Code auf Core #1 läuft. Man kann aber auch Threads auf Core #0 starten. Empfohlen wird das nicht. Aber seid wann lasse ich mir von einem Chip-Hersteller vorschreiben, wie ich sein Produkt zu missbrauchen habe?

Die Idee das Bild nicht auf VGA, sondern über WLAN und HTTP oder VNC zu streamen hatte ich auch schon...
Immer eins nach dem anderen

Jetzt schaffe ich erst einmal einen bequemeren Weg für den Datenaustausch mit dem A7100 (Paralellportkabel klappt schon zu 50%), dann krigt das Ding einen IDE-Kontroller rein getackert, und dann... schau mer mal.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
051
20.12.2023, 17:14 Uhr
Ordoban



Sag mal, wie hast du denn die Umwandlung von 5V TTL auf 3,3V gemacht?
In #26 wird gesagt, dass die Signale aus 7437 kommen - das sind normale 5V TTL-Ausgänge. Bei A7100 sind das Open-Kollektor Ausgänge, da reicht es den Pullup-Widerstand auf 3,3V statt auf 5V zu machen. Am 1715 wird das nicht funktionieren, damit grillst du dir den ESP32.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
052
20.12.2023, 17:27 Uhr
Enrico
Default Group and Edit



Zitat:
Ordoban schrieb

Die Idee das Bild nicht auf VGA, sondern über WLAN und HTTP oder VNC zu streamen hatte ich auch schon...



Du machst mich fertig.

Das wäre genau das richtige für bzw. Vorträge.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
053
20.12.2023, 17:54 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Sag mal, wie hast du denn die Umwandlung von 5V TTL auf 3,3V gemacht?
In #26 wird gesagt, dass die Signale aus 7437 kommen - das sind normale 5V TTL-Ausgänge. Bei A7100 sind das Open-Kollektor Ausgänge, da reicht es den Pullup-Widerstand auf 3,3V statt auf 5V zu machen. Am 1715 wird das nicht funktionieren, damit grillst du dir den ESP32.



Oh verflucht. Das kommt davon, wenn man es schnell aufbauen will. Daran hatte ich überhaupt nicht gedacht.
Vielleicht ist das der Grund, warum BSYNC nicht erkannt wird. Vielleicht ist der Eingang schon gegrillt.
Muss ich mir nochmal anschauen...

Das mit dem Streaming... Ja, in die Richtung ich auch Gedanken...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
054
20.12.2023, 18:02 Uhr
Ordoban



Ich hatte eine Diskusion gelesen, ob die ESP32-Eingänge 5V tollerant sind. Da war man sich nicht sicher. Die halten das wohl eine Weile aus, sind aber nicht dafür spezifiziert, haben Schutzdioden zum 3,3V-Potential.
Im Zweifelsfall kannst du auch auf andere Eingänge switchen. Die sind beim ESP32 recht universell nutzbar.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
055
20.12.2023, 18:10 Uhr
PIC18F2550

Avatar von PIC18F2550

Hallo Ordoban,
deine VGA RGB Pegel sind nicht Norm gerecht.
Ich musste bei meinem VGA Modul noch 1k Wiederstände gegen Masse löten.
Die beiden Anderen wurden in 470 und 240 geändert.

Das brachte auf allen Testmonitore die besten Farbwerte.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen

Dieser Beitrag wurde am 20.12.2023 um 18:17 Uhr von PIC18F2550 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
056
20.12.2023, 18:16 Uhr
Ordoban



Die Farb-Signale? Ich war davon ausgegangen, dass die im Monitor mit 75 Ohm terminiert sind.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
057
20.12.2023, 18:19 Uhr
PIC18F2550

Avatar von PIC18F2550

Das dachte ich bei meinem M105 Projekt auch.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
058
20.12.2023, 18:26 Uhr
Ordoban



Wie könnte man das besser machen? Meine Monitore haben definitiv Abschlusswiderstände drin. Wenn ich noch extra welche in die Schaltung setze, dann wird dann Bild viel dunkler. Einen RGB-Signal-Verstärker dran zu setzen bläht die Schaltung ganz schön auf.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
059
20.12.2023, 18:30 Uhr
PIC18F2550

Avatar von PIC18F2550

Das waren damals die Unterschiede.



--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen

Dieser Beitrag wurde am 20.12.2023 um 18:35 Uhr von PIC18F2550 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
060
20.12.2023, 18:37 Uhr
PIC18F2550

Avatar von PIC18F2550

Hast du einen CRT oder LCD?
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
061
20.12.2023, 18:46 Uhr
Ordoban



Das sieht etwas übersteuert aus. Ja, da sind extra Widerstände sinnvoll.

Das hier ist ein Dell U2412M LCD. Nichts brandneues, aber auch nix von "damals".
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
062
20.12.2023, 19:48 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Ich hatte eine Diskusion gelesen, ob die ESP32-Eingänge 5V tollerant sind. Da war man sich nicht sicher. Die halten das wohl eine Weile aus, sind aber nicht dafür spezifiziert, haben Schutzdioden zum 3,3V-Potential.



Stimmt, jetzt wo du es sagst, erinnere ich mich auch, was in der Richtung gelesen zu haben.


Zitat:

Im Zweifelsfall kannst du auch auf andere Eingänge switchen. Die sind beim ESP32 recht universell nutzbar.


Im Zweifel wäre das mein Plan.
Aber bisher hatte ich so auch noch nichts gegrillt.
Ich gehe erst Mal davon aus, dass mein Problem woanders liegt.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
063
20.12.2023, 19:50 Uhr
Bert




Zitat:
Ordoban schrieb
Die Idee das Bild nicht auf VGA, sondern über WLAN und HTTP oder VNC zu streamen hatte ich auch schon...


Du muß man doch sicher mit Kompression arbeiten, oder?
Ich hab mal VGA-Signale digital und 'raw' in UDP-Pakete gesteckt und am anderen Ende vom Netzwerk angezeigt. Das hat irgendwo um die 150 MBit/s an Bandbreite verschlungen...

Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
064
20.12.2023, 19:54 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Bert schrieb
Du muß man doch sicher mit Kompression arbeiten, oder?
Ich hab mal VGA-Signale digital und 'raw' in UDP-Pakete gesteckt und am anderen Ende vom Netzwerk angezeigt. Das hat irgendwo um die 150 MBit/s an Bandbreite verschlungen...


Smarter...

Da sollte man nur Änderungen drüber senden und sicher nicht mit der Bildwiederholfrequenz des Monitors. So schnell sind die Rechner dann auch nicht...

Edit: das dürfte enorm an Rechenleistung sparen, die in dem Maße dafür nicht da sein wird.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 20.12.2023 um 19:55 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
065
20.12.2023, 20:29 Uhr
Ordoban



Ja, und du musst auch nicht mit TrueColor arbeiten. 2 Bit "Farben" reichen aus.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
066
24.12.2023, 15:38 Uhr
Enrico
Default Group and Edit



Zitat:
PIC18F2550 schrieb
Das dachte ich bei meinem M105 Projekt auch.


Was ist den daraus geworden?
Man davon ja gar nichts mehr gehört.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
067
24.12.2023, 15:40 Uhr
Enrico
Default Group and Edit



Zitat:
Ordoban schrieb
Die Farb-Signale? Ich war davon ausgegangen, dass die im Monitor mit 75 Ohm terminiert sind.


Im Commodore 1960 (Röhre) sind drin.
Genauer 120R || 200R Trimmer.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
068
28.12.2023, 16:18 Uhr
MarioG77

Avatar von MarioG77

Gerade sind Pegelwandler von Amazon angekommen.
Ich hoffe, die sind ausreichend. Morgen probiere ich mich mal wieder daran.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
069
29.12.2023, 12:26 Uhr
MarioG77

Avatar von MarioG77

Rein vom Prinzip müsste aber auch ein VGA Signal zum Monitor gehen, auch wenn kein Eingangssignal vorliegt. Oder sehe ich das falsch?

D.h. der Monitor sollte im Normalfall, wenn der ESP Spannung bekommt, doch auch einen Sync haben, da das - soweit ich es erkenne - ja von der ESP Hardware gesteuert wird und nicht vom Code.
Das passierte beir mir noch nicht.

Edit: Schaltung gerade mit dem Oszi geprüft.
HSYNC 60Hz und VSYNC 37kHz kommen aber raus...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 29.12.2023 um 13:09 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
070
29.12.2023, 16:05 Uhr
Enrico
Default Group and Edit


Müssten das nicht 50 Hz zu 31kHz sein?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
071
29.12.2023, 16:13 Uhr
MarioG77

Avatar von MarioG77

800x600x60Hz
So kommt das, wie im Code vorgesehen, raus.
Die Werte passen zu der Auflösung.

Vielleicht fehlt im Stecker ja nur eine Masse.... War noch dabei zu prüfen.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
072
29.12.2023, 16:15 Uhr
Ordoban



37kHz ist schon korrekt, es sollte dieses Timing sein: http://tinyvga.com/vga-timing/800x600@60Hz
Bei allen anderen Auflösungen wollte der ESP32 ums verrecken kein stabiles Bild liefern. Von den 800x600 werden nur 640x400 genutzt.
Der Monitor sollte zumindest aus dem Energieparmodus raus kommen. Um was anderes als Schwarz zu sehen dann z.B. das hier:

Zitat:
Ich schrieb
Den VGA-Teil ausprobieren, z.b. Zeilen 227-230 so machen:

Quellcode:

for (int b=0;b<640*400;b++)  // VGA-Puffer leeren
{
    VGA_BUF[b]=(b & 255);
}


Schön bunt...



Edit:
Eventuell möchte dein Monitor 5V Sync Signale haben statt 3,3V. Vielleicht zum Testen irgendein 74er HCT Gatter als Verstärker dran pappen. Ich hatte das auch erst, um das als Fehlerursache auszuschließen. Am Ende hat sich herausgestellt, dass der Moni auch mit 3,3V klar kommt.
--
Gruß
Stefan

Dieser Beitrag wurde am 29.12.2023 um 16:22 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
073
29.12.2023, 16:59 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
37kHz ist schon korrekt, es sollte dieses Timing sein: http://tinyvga.com/vga-timing/800x600@60Hz
Bei allen anderen Auflösungen wollte der ESP32 ums verrecken kein stabiles Bild liefern. Von den 800x600 werden nur 640x400 genutzt.
Der Monitor sollte zumindest aus dem Energieparmodus raus kommen.


Genau das hatte ich eigentlich auch vermutet.


Zitat:

Um was anderes als Schwarz zu sehen dann z.B. das hier:

Zitat:
Ich schrieb
Den VGA-Teil ausprobieren, z.b. Zeilen 227-230 so machen:

Quellcode:

for (int b=0;b<640*400;b++)  // VGA-Puffer leeren
{
    VGA_BUF[b]=(b & 255);
}


Schön bunt...




Ja, den Code hatte ich momentan deaktiviert, aber hier wollte ich auch wieder ansetzen. Nicht, dass er ohne Signal nicht aus dem Standby kommt, halte ich aber für unwahrscheinlich.


Zitat:

Edit:
Eventuell möchte dein Monitor 5V Sync Signale haben statt 3,3V. Vielleicht zum Testen irgendein 74er HCT Gatter als Verstärker dran pappen. Ich hatte das auch erst, um das als Fehlerursache auszuschließen. Am Ende hat sich herausgestellt, dass der Moni auch mit 3,3V klar kommt.


Das ist ein guter Gedanke. Ich habe ja genügend Pegelwandler, das sollte kein Problem sein.
Bastel ich mal drauf.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
074
29.12.2023, 18:27 Uhr
MarioG77

Avatar von MarioG77

Irgendwie tut sich da noch nichts.
Mit der Code Änderung sehe ich auf jeden Fall den Pegel bei den RGB Ausgängen.

Vielleicht ist der TXS0108 nicht schnell genug. Im Oszi sieht der Pegel am Ausgang nicht (immer) nach 5V aus. Vielleicht liegt das aber auch am fliegenden Aufbau.

Vielleicht ist ein 74HCT08 oder 74HCT32 doch besser. Probiere ich morgen. Hab ich wegen D008 jedenfalls genug da.

3 verschiedene Monitore zeigen jedenfalls keinen Sync an...

Edit: bin gespannt, was es dann am Ende war...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 29.12.2023 um 18:27 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
075
29.12.2023, 18:37 Uhr
Ordoban



Ähhhm...

Quellcode:

#define PIN_NUM_VGA_VSYNC 17
#define PIN_NUM_VGA_HSYNC 18




*facepalm*

Tausch mal irgendwo HSYNC und VSYNC.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
076
29.12.2023, 18:48 Uhr
MarioG77

Avatar von MarioG77

ok, da habe ich tatsächlich auch schon geschaut, aber ich glaube, ich habe nicht nach Vertauschung geprüft.

Muss ich mir morgen nochmal ansehen.
Ich habe mit Oszi gemessen und die Adern laut Pinout von der VGA Buchse kontrolliert, aber manchmal auch nach deinem Plan...
Wer weiß, wo ich am Ende wirklich war...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
077
30.12.2023, 12:02 Uhr
MarioG77

Avatar von MarioG77

Hatte die SYNC Signale vertauscht.
Ein NEC Multisync 1970NXP bekam zumindest ein Sync (die anderen weiterhin nicht), aber kein Bild. Mir ist aber auch gerade GND an der Buchse abgebrochen.

Starrer Draht ist Mist. Ich muss da doch Mal etwas Litze dran löten. Wahrscheinlich am einfachsten, ein paar Jumper Wires opfern.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
078
30.12.2023, 14:25 Uhr
MarioG77

Avatar von MarioG77

ok, die geopferten Dupont-Kabel waren richtig.
Jetzt hab ich auch ohne Pegelwandler einen Sync am Fujitsu...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
079
30.12.2023, 15:18 Uhr
MarioG77

Avatar von MarioG77

Ach verflucht...
Weiter gesucht im Code/Monitorausgabe und über GPIO41/BSYNC2 stutzig geworden. Dann erst die kleine Brücke zwischen GPIO40/GPIO41 gesehen...


--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
080
30.12.2023, 15:44 Uhr
MarioG77

Avatar von MarioG77

Aber einen Interrupt bekomme ich leider immer noch nicht.
Vielleicht doch nochmal mit dem jungfäulichen Dev Board probieren, was ich mittlerweile da habe.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
081
30.12.2023, 17:29 Uhr
Ordoban



Woran erkennst du dass kein Interrupt ausgelöst wird? An dem Signal an Pin11? Der Pulst erst, wenn die Unterscheidung zwischen langem und kurzem BSYNC richtig funktioniert.
Wie lang ist denn der kurze Impuls (Zeilen-Impuls) beim 1715? Es könnte sein, dass der viel länger als beim A7100 ist, und immer als der lange Seiten-Impuls erkannt wird. Mach doch mal folgendes:


Quellcode:

// Interrupt: wird bei fallender Flanke von BSYN aufgerufen
static void IRAM_ATTR abg_bsync_interrupt(void *args)
{
    VGA_BUF[0]++;
    usleep(1);  // kurz warten. Je nachdem wie der ESP heute drauf ist, ist der kurze BSYN-Impuls noch nicht ganz vorbei
    if (gpio_get_level(PIN_NUM_ABG_BSYNC2)!=0)
    {
        VGA_BUF[10]++;
        // bsync Impuls ist vorbei - war ein VSYNC
        if (ABG_Scan_Line > 28)
        {
            REG_SET_BIT(GDMA_IN_LINK_CH1_REG, GDMA_INLINK_RESTART_CH1);  // das bewirkt, dass der DMA-Kontroller die Address-Tabelle neu einliest
            REG_SET_BIT(SPI_CMD_REG(2), SPI_USR);                        // neuen SPI-Transfer starten - die Parameter sind ja schon drin
        }
        ABG_Scan_Line++;
    }
    else
    {
        VGA_BUF[20]++;
        // bsync Impuls liegt immer noch an - ist ein HSYNC
        ABG_Scan_Line = 0;
    }
}


Damit siehst du 2 oder 3 bunt flackernde Pixel, wenn ein Interrupt ausgelöst wird.

Wenn das kurze BSYNC tatsächlich zu lang sein sollte, dann kannste ja mal das usleep größer machen.
--
Gruß
Stefan

Dieser Beitrag wurde am 30.12.2023 um 17:34 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
082
30.12.2023, 18:16 Uhr
MarioG77

Avatar von MarioG77

Mit dem Dev Board das sauber aufgebaut, aber trotzdem das gleiche Ergebnis.
Der Interrupt wird anscheinend nie aufgerufen, bzw. kein BSYNC erkannt.

Jetzt leuchtet dummerweise die RGB LED vom DevBoard laufend, das nervt, weil die so hell ist...

Also BSYNC wird aktuell noch nicht erkannt.

Ich habe mir jetzt mal die Doku vom 1715 und vom 7150 angeschaut.
Die Sync Impulse unterscheiden sich schon etwas. Ich muss mir den Code jetzt wohl nochmal näher anschauen, ob die Lösung dort liegt.

Im 1715 ist der Sync Impuls jeweils 6µS lang, beim 7150 1µS.
Die Zeilendauer liegt bei 66µS zu 46µS.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
083
30.12.2023, 18:18 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Woran erkennst du dass kein Interrupt ausgelöst wird? An dem Signal an Pin11? Der Pulst erst, wenn die Unterscheidung zwischen langem und kurzem BSYNC richtig funktioniert.
Wie lang ist denn der kurze Impuls (Zeilen-Impuls) beim 1715? Es könnte sein, dass der viel länger als beim A7100 ist, und immer als der lange Seiten-Impuls erkannt wird. Mach doch mal folgendes:


Quellcode:

// Interrupt: wird bei fallender Flanke von BSYN aufgerufen
static void IRAM_ATTR abg_bsync_interrupt(void *args)
{
    VGA_BUF[0]++;
    usleep(1);  // kurz warten. Je nachdem wie der ESP heute drauf ist, ist der kurze BSYN-Impuls noch nicht ganz vorbei
    if (gpio_get_level(PIN_NUM_ABG_BSYNC2)!=0)
    {
        VGA_BUF[10]++;
        // bsync Impuls ist vorbei - war ein VSYNC
        if (ABG_Scan_Line > 28)
        {
            REG_SET_BIT(GDMA_IN_LINK_CH1_REG, GDMA_INLINK_RESTART_CH1);  // das bewirkt, dass der DMA-Kontroller die Address-Tabelle neu einliest
            REG_SET_BIT(SPI_CMD_REG(2), SPI_USR);                        // neuen SPI-Transfer starten - die Parameter sind ja schon drin
        }
        ABG_Scan_Line++;
    }
    else
    {
        VGA_BUF[20]++;
        // bsync Impuls liegt immer noch an - ist ein HSYNC
        ABG_Scan_Line = 0;
    }
}


Damit siehst du 2 oder 3 bunt flackernde Pixel, wenn ein Interrupt ausgelöst wird.

Wenn das kurze BSYNC tatsächlich zu lang sein sollte, dann kannste ja mal das usleep größer machen.



Ich hätte die Seite vor dem Post neu laden sollen...
Das usleep in der ISR verlängern ist eine gute Idee?
Ok, der Int sollte jetzt nicht vorher neu auslösen.

Probieren tue ich das...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
084
30.12.2023, 18:23 Uhr
MarioG77

Avatar von MarioG77

Oh ja! Es lebt...
Jetzt bekomme ich haufenweise Sync=0 und 3 Pixel

Edit:
An GPIO10/11 sind nun auch Lebenszeichen.
also weiter Ran tasten

Edit 2:
Für heute bin ich erst Mal zufrieden. Ich mache morgen weiter...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 30.12.2023 um 18:34 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
085
30.12.2023, 21:42 Uhr
Ordoban



Hmm...
"Sync=0" heißt, dass der nächste Sync-Impuls nicht mit in den Samples ist.


Zitat:

Die Zeilendauer liegt bei 66µS zu 46µS.


66µs ist verdammt lang. In den 4K DMA-Buffer passen bei 80MHz Sampletakt nur 51.15µs.
Du könntest versuchen, die Samplerate zu reduzieren:

Quellcode:

        .clock_speed_hz = SPI_MASTER_FREQ_40M,


Das könnte auch noch reichen, um ein klares Bild zu bekommen.

Nach Adam Riese / Eva Zwerg müssten 60µs bei 40MHz = 2400 Samples * 8Bit = 19200Bits sein. Die mal als Länge für SPI-Transfer (=Sample-Prozess) eintragen:

Quellcode:

.rxlength = 19200,


Damit müsste der PIN10-Impuls ein Stückchen mit dem BSYN überlappen. (wie in #38 zu sehen)

Das "Sync" sollte dann eine Zahl größer 0 ausspucken, ich vermute mal irgenwas zwischen 2200 und 2400.
Das
Quellcode:
printf("Sync=%d\n",sync);"

crasht dir auf jeden Fall den Pixelkopier-Prozess. Sobald du eine brauchbare "Sync="-Zahl hast solltest du das wieder rauswerfen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
086
31.12.2023, 11:57 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Das "Sync" sollte dann eine Zahl größer 0 ausspucken, ich vermute mal irgenwas zwischen 2200 und 2400.
Das
Quellcode:
printf("Sync=%d\n",sync);"

crasht dir auf jeden Fall den Pixelkopier-Prozess. Sobald du eine brauchbare "Sync="-Zahl hast solltest du das wieder rauswerfen.



2172/2173
Ich habe den Wert auf 2150 gesetzt:



Wir nähern uns...

Mit deinen Angaben komme ich jetzt immer besser in die Funktionsweise rein.
Ich habe noch das 5fache Oversampling drin. Das dürfte hier nicht mehr passen.
Das sind jetzt 2,89.
Ob da in der Verarbeitung der Zeilen (Timing) noch was geändert werden müsste, müsste ich mir auch nochmal anschauen. Aber das ist vermutlich das Oversampling.

Edit: es sind auch nur 2 Farben, nicht 4. Evtl. ist da auch noch was anzupassen.
Edit2:
da wir ja (nicht nur) theoretisch das INTENS Signal haben, könnte man es evtl. dabei belassen.
Grundsätzlich sind die 13,8MHz vielleicht eher ein Thema...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 31.12.2023 um 12:14 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
087
31.12.2023, 12:25 Uhr
Ordoban



40MHz : 13,7931MHz = 2,900000725
Das klingt nach ner schönen runden Zahl... 2 9/10.
Wird die Kopier-Schleife nur etwas länger:

Quellcode:

for (int i=0;i<64;i++) // wir machen 10 Pixel pro Durchlauf, also 64*10 = 640 Pixel
{
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=3;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=3;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=3;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=3;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=3;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=3;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=3;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=3;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=3;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=2;  // <--- die 2 statt 3 ist Absicht!
}


--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
088
31.12.2023, 12:37 Uhr
MarioG77

Avatar von MarioG77

Wieder etwas näher dran:


Wir müssen nun viel später anfangen, die Zeile auszulesen. Das dürfte zu früh sein.
Allerdings könnte auch oben am Bildanfang was fehlen.

Ich versuche gerade die Timings aus dem Datenblatt zu verstehen...

Allerdings gibt es auch noch einen 2. Wert bei 10,7MHz. Ich will versuchen herauszubekommen, mit was ich es eigentlich zu tun habe.
Wobei die Bildfrequenz am Oszi mit 50,x Hz (statt 55Hz) gemessen wurde, d.h. ich müsste bei den 13,8 MHz schon richtig sein.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
089
31.12.2023, 12:41 Uhr
Ordoban



den Startwert für die Zeile kannste hier einstellen:

Quellcode:

#define BSYNC_PIXEL_ABSTAND 3235


Das müsste bei dir deutlich unter 2150 sein.

Edit: wenn da noch die 3235 drin stehen, dann erklärt das die Streifen in der linken Bildschirmhälfte. Das sind keine aufegzeichneten Pixel, sondern irgendwelche Variablen, die im Speicher vor dem Puffer liegen.

Edit2:
Das fängt auch oben zu spät an. Da könntest du die Zahl hier reduzieren:

Quellcode:

        if (ABG_Scan_Line > 28)


--
Gruß
Stefan

Dieser Beitrag wurde am 31.12.2023 um 12:46 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
090
31.12.2023, 12:55 Uhr
MarioG77

Avatar von MarioG77

Danke.
Der bei 2000 sieht direkt ganz gut aus:



Ich schätze da fehlt jetzt in Zeile 1 die halbe Zeile (6 Pixelzeilen).

Die Zeilenanzahl stimmt. Es sind 24 Zeilen.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
091
31.12.2023, 13:05 Uhr
Ordoban




Zitat:
MarioG77 schrieb
Ich schätze da fehlt jetzt in Zeile 1 die halbe Zeile (6 Pixelzeilen).


das wäre dann
Quellcode:
if (ABG_Scan_Line > 22)



Zitat:
MarioG77 schrieb
Die Zeilenanzahl stimmt. Es sind 24 Zeilen.


Die Zeilenanzahl beim 1715 dürfte dem ESP ziemlich egal sein. Bei dem haben wir 400 Pixel Platz. Wenn das lange Sync schon vorher kommt, dann bleiben unten Zeilen schwarz.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
092
31.12.2023, 13:25 Uhr
MarioG77

Avatar von MarioG77

Ich meinte nur, das nicht mehr viel fehlt...

Danke. Du bist so schnell mit antworten, da habe ich nicht Mal Zeit, den Code zu studieren

Mache nach dem Mittag weiter.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
093
31.12.2023, 14:15 Uhr
Ordoban



Dabei fällt mir grad ein: Was passiert, wenn aus irgendwelchen Gründen beim Pixelkopieren das ABG_Scan_Line außerhalb 28-428 ist? Die Pixel werden über irgendeinen fremden Speicherbereich drüber gebügelt. Schlecht. Da müsste sicherheitshalber noch eine Abfrage rein.

Ich hab auch grad gesehen, dass die 28 oben nicht die einzige Stelle ist.
Hier auch nochmal:

Quellcode:

uint8_t* vgapos = (uint8_t*)((ABG_Scan_Line-23)*640 + (int)VGA_BUF);


Eventuell sollte man das auch zu einer Konstanten machen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
094
31.12.2023, 14:17 Uhr
MarioG77

Avatar von MarioG77

Ja, der crasht dann.
Ich war auch gerade am Suchen, ich war der Meinung, diese Zeile auch schon überscrollt zu haben.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
095
31.12.2023, 14:37 Uhr
MarioG77

Avatar von MarioG77

Nun:



Ich habe jetzt folgendes:

Quellcode:

#define BSYNC_PIXEL_ABSTAND 2050 // Zeitabstand zwischen dem ersten Pixel und der fallenden Flanke des nachfolgendem BSYN-Impulses in 40MHz-Samples
#define ABG_LINE_START 22 // wo beginnt die erste Ausgabezeile nach BSYNC?




Quellcode:

if (ABG_Scan_Line > ABG_LINE_START)




Quellcode:

uint8_t* vgapos = (uint8_t*)((ABG_Scan_Line - ABG_LINE_START-1)*640 + (int)VGA_BUF);



Jetzt müsste man an den Farben nochmal optimieren. Ich vermute, da sollte die Reihenfolge nur gedreht werden, was die mittleren Werte und Schwarz angeht - ist nur Grün angeschlossen:


Quellcode:

uint8_t COLORS[] = {0b00101010, 0b00010101, 0, 0b00111111};  // Farbdefinition



daraus wird das:


"Farblich" schon mal ok, finde ich.

Jetzt wäre noch das Sampling zu verfeinern. Man sieht, dass die Pixel noch nicht sauber getroffen werden.


Coole Sache Stefan!

Edit:
vollständiger Code ist hier zu finden:
https://github.com/mgoegel/pc1715-esp32s3-vga
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 31.12.2023 um 14:40 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
096
31.12.2023, 14:42 Uhr
Ordoban



Sieht aus, als ob die Pixel-Verschiebung rechts und links vorkommt. Eventuell das BSYNC_PIXEL_ABSTAND mit 1999 oder 2001 probieren.
--
Gruß
Stefan

Dieser Beitrag wurde am 31.12.2023 um 14:42 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
097
31.12.2023, 14:50 Uhr
MarioG77

Avatar von MarioG77

Das ändert das Bild zwar etwas, aber ich befürchte das reicht nicht ganz.
Es sieht so aus, als ob die krumme Frequenz daran schuld ist.

Je nach BSYNC_PIXEL_ABSTAND verschiebt sich ein Bereich in der Mitte, der fast perfekt ist.

Dazwischen sind Bereiche, wo es nur die linken, rechten oder beiden Pixel eines Buchstaben betrifft.

Edit: Ist auf einem Bild schwer festzuhalten.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 31.12.2023 um 14:50 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
098
31.12.2023, 15:15 Uhr
Ordoban



Dann könntest du noch mit sowas spielen:

Quellcode:

                bufpos+=2;  // <--- die 2 statt 3 ist Absicht!
                if (i==32) bufpos++;  // oder auch mal bufpos--; probieren


Das Problem bei solchen extra Anweisungen ist, dass die Rechenzeit verbrauchen. Du müsstest das Pin 11 im Auge behalten.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
099
31.12.2023, 15:20 Uhr
MarioG77

Avatar von MarioG77

ok, Danke für den Tipp.
Ich werde da morgen weiter machen.

Ich habe da noch ein anderes Projekt, was ich mangels D008 Teile, angehen will...

Falls ich mich heute nicht mehr melde, schon Mal einen Guten Rutsch!
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
100
31.12.2023, 15:21 Uhr
Ordoban



Danke, dir auch. Und auch allen, die sonst so mitlesen
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
101
01.01.2024, 17:59 Uhr
MarioG77

Avatar von MarioG77

Gesundes Neues!

Stefan, wie bist du eigentlich auf 13,7931 MHz gekommen?
Die Frequenz ist 13,824MHz. Deshalb wird es etwas krummer. Der Faktor ist 2,893...

Hab heute nur die Pläne geprüft... Morgen geht es technisch weiter.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
102
01.01.2024, 18:52 Uhr
Ordoban



Oh, das war 80MHz : 5 4/5, und damit so nahe an 13,824 wie möglich. Hab ich wohl mit der Annäherung weitergerechnet.

Auf lange Sicht müssen wir einen Weg suchen, universell mit so krummen Taktraten auszukommen.
Die aktuellen Zahlen in den Programmen funktionieren mit meinem A7100 und hoffendlich irgendwann deinem PC1715. Aber wie sieht das mit anderen A7100 oder PC1715 aus, wenn da vielleicht die Frequenzen einen Hauch daneben liegen?
Ich hab schon eine Idee, aber ich komm heute nimmer dazu die umzusetzen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
103
01.01.2024, 19:42 Uhr
PIC18F2550

Avatar von PIC18F2550


Zitat:
Enrico schrieb

Zitat:
PIC18F2550 schrieb
Das dachte ich bei meinem M105 Projekt auch.


Was ist den daraus geworden?
Man davon ja gar nichts mehr gehört.


SRN hatte von mir eine aufgebaute zum testen bekommen, aber er hatte für mich nicht Reproduzierbare Fehler.
Danach verschwand er von der Bildfläche ohne die geliehen Sachen zurückzugeben und ist seitdem nicht mehr erreichbar.
Das hat sich nicht nur auf das M105 Projekt ausgewirkt sondern auch auf M042, M102, M107 und M109.
Mal sehen ob dieses Jahr was wird.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
104
01.01.2024, 19:52 Uhr
Enrico
Default Group and Edit


Eigenartig......
Ev. kriege ich ne Antwort?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
105
01.01.2024, 20:03 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Oh, das war 80MHz : 5 4/5, und damit so nahe an 13,824 wie möglich. Hab ich wohl mit der Annäherung weitergerechnet.


ah ok.


Zitat:

Auf lange Sicht müssen wir einen Weg suchen, universell mit so krummen Taktraten auszukommen.
Die aktuellen Zahlen in den Programmen funktionieren mit meinem A7100 und hoffendlich irgendwann deinem PC1715. Aber wie sieht das mit anderen A7100 oder PC1715 aus, wenn da vielleicht die Frequenzen einen Hauch daneben liegen?
Ich hab schon eine Idee, aber ich komm heute nimmer dazu die umzusetzen.



Ja, sobald ich für meinen eine Idee habe, wollte ich damit an einem Bastel-1715 Board weiter probieren.

Hobi hatte mich gefragt, ob ich nicht einfach den Quarz auf eine schönere Frequenz umbaue, wie bei dem einem Z1013 Thema.

Dort wollte man an die Pixel mit einem Kondensator verwaschen. Vielleicht ist ja eine SW-Interpolation in dem Grenzbereich möglich, dann würde das vielleicht nicht so auffällig flackern.
Nur so ein Gedanke, habe ich noch nicht intensiver Nachgedacht.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
106
02.01.2024, 12:37 Uhr
MarioG77

Avatar von MarioG77

Evtl. könnte man ja eine lookup Table einbauen.
Die Frist kaum Rechenzeit, nur etwas Speicher - und den haben wir ja im Flash.
Die könnte man ja ggfs. je nach Bedarf berechnen.

Ich habe die Schleife wieder auf eine Zeile je Pixel (also 640 Aufrufe) reduziert. Es beginnt sich ein Muster abzuzeichnen.
Jedes 5. Zeichen hat in der Mitte einen klaren Pixel. Dank des RAM Test EPROMS habe ich ein einfaches Testbild.

Sonst ähnelt das Bild meines Bastel Boards sehr dem des Rechners. Mit deinem Aufbau ist das Bild deutlich stabiler, als mit BAS & GBS8200.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
107
02.01.2024, 15:50 Uhr
Enrico
Default Group and Edit



Zitat:
PIC18F2550 schrieb

Zitat:
Enrico schrieb

Zitat:
PIC18F2550 schrieb
Das dachte ich bei meinem M105 Projekt auch.


Was ist den daraus geworden?
Man davon ja gar nichts mehr gehört.


SRN hatte von mir eine aufgebaute zum testen bekommen, aber er hatte für mich nicht Reproduzierbare Fehler.
Danach verschwand er von der Bildfläche ohne die geliehen Sachen zurückzugeben und ist seitdem nicht mehr erreichbar.
Das hat sich nicht nur auf das M105 Projekt ausgewirkt sondern auch auf M042, M102, M107 und M109.
Mal sehen ob dieses Jahr was wird.



Er hat mir gentwortet.

Quellcode:

Wenn Du was schreiben möchtest, dann schreib nur, daß er mich gern anrufen kann (er hat meine Nummer) oder auch eine Mail schreiben kann.


Lt. Ihm kam von Dir keine Antwort.

Was wie wo, müsstest Ihr schon mal selber klären.....
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
108
02.01.2024, 16:38 Uhr
Ordoban




Zitat:
MarioG77 schrieb
Evtl. könnte man ja eine lookup Table einbauen.


Jap, so ungefähr ist auch mein Ansatz.

Zitat:

Die Frist kaum Rechenzeit, nur etwas Speicher - und den haben wir ja im Flash.


Der externe Flash ist relativ langsam, besser in den internen RAM kopieren - die 640 Bytes haben wir noch.

Zitat:

Die könnte man ja ggfs. je nach Bedarf berechnen.


Genau. Die Pixelfrequenz vorgeben und daraus die Schrittweite für alle Pixel berechnen. Man könnte auch ein paar Taster an den ESP anschließen und die Frequenzen/Einstellungen per Menü machen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
109
02.01.2024, 17:37 Uhr
PIC18F2550

Avatar von PIC18F2550

Enrico,
lass uns hier weiter reden, es gehört hier nicht rein.

https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=18716&highlight=Srn
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen

Dieser Beitrag wurde am 02.01.2024 um 17:38 Uhr von PIC18F2550 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
110
02.01.2024, 17:45 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb

Zitat:
MarioG77 schrieb
Evtl. könnte man ja eine lookup Table einbauen.


Jap, so ungefähr ist auch mein Ansatz.

Zitat:

Die Frist kaum Rechenzeit, nur etwas Speicher - und den haben wir ja im Flash.


Der externe Flash ist relativ langsam, besser in den internen RAM kopieren - die 640 Bytes haben wir noch.


Ah ich meinte für fertige Tabellen zum mitliefern.
Ich habe heute schon Mal angefangen - und speicher auf dem Heap reserviert, die Tabelle initialisiert.
Grundsätzlich funktioniert das...


Zitat:

Genau. Die Pixelfrequenz vorgeben und daraus die Schrittweite für alle Pixel berechnen. Man könnte auch ein paar Taster an den ESP anschließen und die Frequenzen/Einstellungen per Menü machen.


Da hatte ich heute noch so meine Probleme.

Verstehe ich den Code so korrekt, dass du pro Pixel die ersten 2 Samples verarbeitest und das 3. ignorierst?

Quellcode:

for (int i=0;i<64;i++) // wir machen 10 Pixel pro Durchlauf, also 64*10 = 640 Pixel
{
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=3;
    *vgapos = COLORS[((*bufpos)|(*(bufpos+1))) & 3];
    vgapos++;
    bufpos+=3;
...


--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
111
02.01.2024, 18:00 Uhr
Ordoban




Quellcode:

#define ABG_PIXEL_FREQUENZ 13824000.0f // PC1715
// #define ABG_PIXEL_FREQUENZ 16010000.0f // A7100
#define ABG_PIXEL_START 0.2f
...
uint8_t* PIXEL_STEP_LIST;
...
void setup_abg()
{
...
    PIXEL_STEP_LIST = heap_caps_malloc(640, MALLOC_CAP_DMA | MALLOC_CAP_32BIT | MALLOC_CAP_INTERNAL);
...
    double weite = 40000000.0f / ABG_PIXEL_FREQUENZ;
    double step = ABG_PIXEL_START;
    int last = (int)step;
    for (int i=0;i<640;i++)
    {
        step += weite;
        PIXEL_STEP_LIST[i] = ((int)step) - last;
        last = (int)step;
        printf(" %d",PIXEL_STEP_LIST[i]);
    }
    printf("\n");
}
...
        // und nun die Pixel in den VGA-Puffer kopieren
        if (sync>0 && ABG_Scan_Line>=ABG_START_LINE && ABG_Scan_Line<=ABG_START_LINE+400)
        {
            uint8_t* bufpos = (uint8_t*)((sync - BSYNC_PIXEL_ABSTAND) + (int)buf);
            uint8_t* vgapos = (uint8_t*)((ABG_Scan_Line-(ABG_Scan_Line+1))*640 + (int)VGA_BUF);

            for (int i=0;i<640;i++)
            {
                *vgapos = COLORS[*bufpos];
                vgapos++;
                bufpos+=PIXEL_STEP_LIST[i];
            }
        }



Ausgabe:

Quellcode:

3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3




Zitat:

Verstehe ich den Code so korrekt, dass du pro Pixel die ersten 2 Samples verarbeitest und das 3. ignorierst?


Ja, genau. Der Trick bei den krummen Frequenzen ist, die richtige Anzahl Samples auszulassen. Die Auswertung von 2 Samples nebeneinander hatte ich nur gemacht, weil die Pixel-Impulse beim A7100 relativ kurz sind (vermutlich ist der Pullup-Wiederstand immer noch zu groß).

Edit: malloc vergessen
--
Gruß
Stefan

Dieser Beitrag wurde am 02.01.2024 um 18:06 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
112
02.01.2024, 19:07 Uhr
MarioG77

Avatar von MarioG77

Irre, wie du den Code hier so raushaust...

Bei den COLORS war noch das AND 3 nötig.



Aktuell sieht es so aus.
Wir kommen schon ziemlich nahe, aber einige Pixel springen immer noch nach links oder rechts.
Mal schauen, ob mir morgen noch was dazu einfällt.

Wobei ich sagen muss, dass die invertierte Darstellung (ohne das "AND 3") auf den ersten Blick Super aussah.

...

Ich habe das gerade nochmal auf meinem aufgebauten 1715 angeschlossen.
Beim Hochfahren sah das erst noch schlimm aus, aber nachdem ein paar Sekunden vergangen waren und der Rechner warm wurde, stabilisierte sich das Bild.
Es war absolut klar.

Leider scheint sich das mit der Zeit irgendwie zu ändern. Dann wird das Bild plötzlich wieder schlechter - für eine Weile.

Der Takt scheint da mit der Zeit nicht ganz sauber zu sein. Möglicherweise müssen wir die Konstante mit dem Pixel-Start als Variable betrachten.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
113
02.01.2024, 19:08 Uhr
MarioG77

Avatar von MarioG77

ok, das Bild ist nicht so gut gelungen... Man erkennt da nicht wirklich was.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
114
02.01.2024, 20:02 Uhr
Ordoban



Joa, das "& 3" hatte ich vergessen

Das mit der Tabelle scheint gut zu funktionieren. Rechenzeit zwischen 2/3 und 3/4 der verfügbaren Zeit.

Ich hab bei mir auch mal mit 40MHz Samplerate probiert, und das Ergebnis ist viel schlechter. Ich denke das wird auch bei dir ein Problem sein. 80MHz Samples sind ein MUSS. Blöd ist halt die Beschränkung der Puffer-Länge durch den DMA-Kontroller.
Eine mögliche Lösung wäre es, pro Zeile 2 DMA-Puffer zu nehmen. Damit wird allerdings das Puffer-Handling etwas umständlicher.

Dass die Pixel-Frequenzen driften ist mir nun auch aufgefallen. Ich hatte ja immer 2 Samples zusammen gefasst, weil bei meinen bisherigen Versuchen immer Pixel geflackert / gewabert haben. Entweder am rechten Rand oder am linken. Und jetzt läuft es mit glatten 16MHz.

Ich denke mal, das nächste wird sein, ständig die Zeit zwischen den SYNC-Interrupts zu messen, auf die Pixel-Frequenz umzurechnen, und auf die Tabelle zu übertragen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
115
02.01.2024, 20:14 Uhr
MarioG77

Avatar von MarioG77

Was meinst du mit "viel schlechter", bei deinem Versuch mit 40 MHz?
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
116
02.01.2024, 20:30 Uhr
Ordoban



Der Text war kaum zu erkennen. Das lag aber an einem falschen Parameter. Inzwischen ist das 40MHz-Bild genauso gut.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
117
02.01.2024, 20:47 Uhr
Ordoban



Mir ist übrigends noch eine Schwachstelle meiner Schaltung aus #21 aufgefallen: der 78L33 ist zu schwach. Sobald die VIDs und BSYN über die Pull-Up's Strom ziehen, sackt die 3,3V auf 2,6V ab, und das VGA-Bild fängt an etwas zu flimmern. Ich werde wohl entweder stärkere Festspannungsregler bestellen müssen, oder die Spannungsversorgung der Pull-UP's und ESP auf 2 78L33 aufteilen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
118
03.01.2024, 10:08 Uhr
MarioG77

Avatar von MarioG77

Guter Hinweis, da habe ich überhaupt nicht weiter geschaut.
Ich habe da ja einen BSS138 als Pegelwandler drin.
Muss mal messen, wie das bei mir ausschaut.

Hab gerade mal beim 78L33 nachgeschaut - 100mA sind für einen ESP32 vielleicht generell etwas wenig, wenn man da vielleicht später das RF Modul wirklich zuschalten möchte...
Im ungünstigsten Fall geht der Peak da laut Datenblatt auf 355mA.


Zitat:

Ich denke mal, das nächste wird sein, ständig die Zeit zwischen den SYNC-Interrupts zu messen, auf die Pixel-Frequenz umzurechnen, und auf die Tabelle zu übertragen.


Vielleicht könnte man das in einem 2. Thread monitoren.

Beim 1715 werden ja eh nur 288 Zeilen genutzt, da wäre noch Platz auf dem Monitor, zumindest fürs debugging, so eine Art OSD...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
119
03.01.2024, 10:48 Uhr
PIC18F2550

Avatar von PIC18F2550

Wie wäre es in einer Zeile einen Pixelvergleich 2 aus 3 zu machen.
Oder noch zusätzlich ein Vergleich 2 aus 3 mit älteren Bildern?

Du könntest die Auflösung am Monitor auch ein Vielfaches des PC machen.
Da fällt das geflacker nicht so auf.

Die besste Variante wäre es einen internen Takt der Graphigkarte anzuzapfen um damit die Pixelabfrage zu syncronisieren.

Kannst du in deiner Anwendung einen Kern für dich reservieren?
Wenn ja so ist ein Assemblercode besser als C da sich das Timing besser berechnen läst.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
120
03.01.2024, 15:40 Uhr
MarioG77

Avatar von MarioG77


Zitat:
PIC18F2550 schrieb
Wie wäre es in einer Zeile einen Pixelvergleich 2 aus 3 zu machen.
Oder noch zusätzlich ein Vergleich 2 aus 3 mit älteren Bildern?


Hatte ich auch drüber nachgedacht, aber noch keine konkrete Idee, wie man das sinnvoll macht.
Vermutlich würde ich hier etwas rumprobieren, aber Stefan kommt womöglich in 5 Minuten mit einer Lösung um die Ecke...


Zitat:

Du könntest die Auflösung am Monitor auch ein Vielfaches des PC machen.
Da fällt das geflacker nicht so auf.


Tatsächlich kein schlechter Gedanke.


Zitat:

Die besste Variante wäre es einen internen Takt der Graphigkarte anzuzapfen um damit die Pixelabfrage zu syncronisieren.


Ich weiß jetzt nicht, ob der 1715 als solches die Signale so Präzise liefert, wie der Takt läuft. Es könnte ja wegen DRAM Refresh evtl. auch Verzögerungen geben.
Ich habe das im Servicehandbuch noch nicht alles verstanden - es sind so viele Zusammenhänge.


Zitat:

Kannst du in deiner Anwendung einen Kern für dich reservieren?
Wenn ja so ist ein Assemblercode besser als C da sich das Timing besser berechnen läst.


Stefans Aussage zum Core klang so. Ich habe mich mit den Details des ESP32 noch nicht so tief auseinander gesetzt.
Ob ich mit Assembler besser bin, wage ich zu bezweifeln - klar, Zumindest hätte man dann einen berechenbaren Zeitraum.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
121
03.01.2024, 17:15 Uhr
Ordoban




Zitat:
PIC18F2550 schrieb
Wie wäre es in einer Zeile einen Pixelvergleich 2 aus 3 zu machen.
Oder noch zusätzlich ein Vergleich 2 aus 3 mit älteren Bildern?


Dafür wird die Rechenleistung des ESP nicht reichen. Zumindest, wenn man die originale Bildwiederholfrequenz beibehalten will.


Zitat:
PIC18F2550 schrieb
Du könntest die Auflösung am Monitor auch ein Vielfaches des PC machen.
Da fällt das geflacker nicht so auf.


Die einzige VGA-Auflösung, mit der ich bisher ein stabiles Bild erreicht habe, war 800x600x60Hz (Weil da die Pixelfrequenz genau 40MHz ist). Alle anderen gehen gar nicht, oder geben wabernde Bilder. Die Schnittstelle, die wir hier für VGA benutzen ist eigendlich für LCD's gedacht.


Zitat:
PIC18F2550 schrieb
Die besste Variante wäre es einen internen Takt der Graphigkarte anzuzapfen um damit die Pixelabfrage zu syncronisieren.


Die Idee ist gar nicht schlecht. Dann kann die Taktrate im A7100 oder PC1715 schwanken wie sie will - Die Samplerate im ESP schwankt dann halt mit, und ist vor allem Phasen-synchron. Der einzige Nachteil ist, dass man dafür auf der "historischen" Hardware rumlöten muss. Das wird nicht jeder wollen.

Zitat:
PIC18F2550 schrieb
Kannst du in deiner Anwendung einen Kern für dich reservieren?


Man kann den Sheduler, und somit alle anderen Threads auf einem Core abwürgen. Wirktlich "ungestört" ist man auch damit nicht. Irgend etwas verzögert ab und zu die Ausführung der ISR, was dazu führt dass ab und zu ganze Zeilen flackern. Bei der Stecker-Version hatte ich das gelöst, indem ich in dem Fall die Zeile nicht in den VGA-Puffer kopiere, und den Inhalt der vorherigen Frames drin stehen lasse. Ich werde demnächst mal probieren ob es besser ist das BSYNC zu pollen statt über ISR.

Zitat:
PIC18F2550 schrieb
Wenn ja so ist ein Assemblercode besser als C da sich das Timing besser berechnen läst.


Die Anzahl der CPU-Takte für ein Programm ist trotzdem nicht planbar. Hier teilen sich 2 Cores, und ein verdammt arbeitswütiger DMA-Kontroller die verschiedenen Busse zu den verschiedenen RAM's. Die haben zwar alle Caches um sich nicht gegenseitig auszubremsen, aber dadurch wird das ganze von den CPU-Takten echt unberechenbar. Ja. Mehrzahl: Busse und RAM's. Die Architektur der ESP's ist beunruhigend kompliziert.

Zitat:
MarioG77 schrieb
Vermutlich würde ich hier etwas rumprobieren, aber Stefan kommt womöglich in 5 Minuten mit einer Lösung um die Ecke...


Gib mir 10...

Auch wenn es vielleicht nicht so aussieht: für mich sind die ESP32 auch neu. Dieses VGA-Wandler-Dingens ist das erste Projekt was ich damit mache. Genauso C: das ist zwar nicht mein erstes C-Projekt, aber sonst schreib ich mein Zeugs in C#, Java, Delphi/Pascal.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
122
03.01.2024, 19:57 Uhr
Ordoban




Quellcode:

// Interrupt: wird bei fallender Flanke von BSYN aufgerufen
static void IRAM_ATTR abg_bsync_interrupt(void *args)
{
    usleep(1);  // kurz warten. Je nachdem wie der ESP heute drauf ist, ist der kurze BSYN-Impuls noch nicht ganz vorbei
    if (gpio_get_level(PIN_NUM_ABG_BSYNC2)!=0)
    {
        if (ABG_Scan_Line > 2)
        {
            bsyn_clock_diff = XTHAL_GET_CCOUNT() - bsyn_clock_last;
        }
        bsyn_clock_last = XTHAL_GET_CCOUNT();
...
...
...
    while (1)
    {
        printf("%ld\n",bsyn_clock_diff);
    }




Ergebnis:

Quellcode:

11037
11073
11019
11019
11016
11052
11091
11019
11019
11016
11073
11094
11019
11019
11016
11142
11019
11019
11019
11019
11136
11037
11019
11019
11019
11061
11097
11019
11019
11019
11061
11088
11016
11019
11019
11088
11097
11019
11019
11019
11184
11064
11016
11019
11019
11232
11049
11019
11019
11019
11304
11091
11019
11019
11019
11352


also 240MHz : 11019 = 21,78056 kHz
Im Datenblatt steht 21,7 kHz. Kommt hin.
Jetzt müsste man wissen, wie viele Pixel insgesamt pro Zeile sind.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
123
03.01.2024, 20:52 Uhr
PIC18F2550

Avatar von PIC18F2550

http://www.tinyvga.com/vga-timing
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
124
03.01.2024, 20:54 Uhr
Ordoban




Zitat:
PIC18F2550 schrieb
http://www.tinyvga.com/vga-timing



Welches davon spuckt die ABS-K7071 vom A7100 aus?
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
125
03.01.2024, 21:11 Uhr
PIC18F2550

Avatar von PIC18F2550

Keiner
Nur als vergleich wie weit die Systeme auseinander liegen.

Die Horizontale Pixelzahl kann man im Textmodus aus Zeichenzahl × horizontale Zeichenpixel
die anzahl der sichtbaren pixel berechnen.

Aus der Zeilenfrequenz und dem verhältnis hell und ausgeblentetenr Zeile in verbindung der sichtbaren Pixel kommt mann auf die Pixelfrequenz.

Beim berechnen immer die Rundungen des Rechners beachten!
Es ist manchmal besser die werte vorher mit 1000 oder mehr zu erweitern.
Bei 800 pixel währe eine erweiterung um ab 2400 sinnvoll.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen

Dieser Beitrag wurde am 03.01.2024 um 21:11 Uhr von PIC18F2550 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
126
04.01.2024, 18:59 Uhr
Ordoban



Jetzt klappt die automatische Einstellung der Pixelfrequenz.

Im ISR:

Quellcode:

// Interrupt: wird bei fallender Flanke von BSYN aufgerufen
static void IRAM_ATTR abg_bsync_interrupt(void *args)
{
    usleep(1);  // kurz warten. Je nachdem wie der ESP heute drauf ist, ist der kurze BSYN-Impuls noch nicht ganz vorbei
    if (gpio_get_level(PIN_NUM_ABG_BSYNC2)!=0)
    {
        if (ABG_Scan_Line == 10)
        {
            XTHAL_SET_CCOUNT(0);
        }

        if (ABG_Scan_Line == 210)
        {
            bsyn_clock_diff = XTHAL_GET_CCOUNT();
        }

        // bsync Impuls ist vorbei - war ein VSYNC
        if (ABG_Scan_Line > ABG_START_LINE)
        {
            REG_SET_BIT(GDMA_IN_LINK_CH1_REG, GDMA_INLINK_RESTART_CH1);  // das bewirkt, dass der DMA-Kontroller die Address-Tabelle neu einliest
            REG_SET_BIT(SPI_CMD_REG(2), SPI_USR);                        // neuen SPI-Transfer starten - die Parameter sind ja schon drin
        }
        ABG_Scan_Line++;
    }
    else
    {
        // bsync Impuls liegt immer noch an - ist ein HSYNC
        ABG_Scan_Line = 0;
    }
}




Vor der Pixelkopier-Schleife:

Quellcode:

        int a=100000;
        while ((next[0] & 0x80000000) != 0)  // darauf warten, dass der DMA-Kontroller den Transfer in den Puffer fertig meldet - der löscht das höchste Bit
        {
            if (bsyn_clock_last != bsyn_clock_diff && ABG_Scan_Line == 0)
            {
                // 200 Zeilen
                // *240 MHz CPU-Takt
                // :40 MHz Sample Rate
                // = 1200
                // *ABG_PIXEL_PER_LINE
#ifdef PIN_NUM_DEBUG_COPY
        gpio_set_level(PIN_NUM_DEBUG_COPY,1);
#endif
                bsyn_clock_last = bsyn_clock_diff;
                double weite = bsyn_clock_diff / (1200.0f * ABG_PIXEL_PER_LINE);
                double step = ABG_PIXEL_START;
                int last = (int)step;
                for (int i=0;i<640;i++)
                {
                    step += weite;
                    PIXEL_STEP_LIST[i] = ((int)step) - last;
                    last = (int)step;
                }
#ifdef PIN_NUM_DEBUG_COPY
        gpio_set_level(PIN_NUM_DEBUG_COPY,0);
#endif
            }

            if (a==0)                         // Die Wartezeit ist abgelaufen!
            {
                for (int b=0;b<640*400;b++)  // VGA-Puffer leeren
                {
                    VGA_BUF[b]=0;
                }
                a=100000;
            }
            a--;
        }



Edit: der Vollständigkeit halber:

Quellcode:

#define ABG_PIXEL_PER_LINE 736.0f
...
volatile uint32_t bsyn_clock_diff = 0; // ~2210000
volatile uint32_t bsyn_clock_last = 0;



Edit2:
Ich hab auch noch herausgefunden wie man das Linienflackern los wird: in den Projekteinstellungen unter "Component config-->ESP System Settings" den "Interrupt watchdog" deaktivieren.
--
Gruß
Stefan

Dieser Beitrag wurde am 04.01.2024 um 19:08 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
127
04.01.2024, 19:08 Uhr
MarioG77

Avatar von MarioG77

Cool!
Ich probiere es morgen aus. Heute den ganzen Tag am KC Gehäuse gefummelt.

Ein Gedanke:
Könnte man den VGA Puffer leeren, nicht auch in der Kopierschleife mit erledigen?
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
128
04.01.2024, 19:14 Uhr
Ordoban




Zitat:
MarioG77 schrieb
Könnte man den VGA Puffer leeren, nicht auch in der Kopierschleife mit erledigen?


Nein. Die Kopierschleife wird ja erst abgearbeitet, wenn das BSYN einen Interrupt ausgelöst hat und Pixel über SPI eingelesen sind. Wenn der Oldtimer aus ist, dann kommt bein BSYN mehr, und die Kopierschleife wartet ewig auf was neues zum kopieren. Dann würde das letzte Bild ewig im VGA Puffer stehen bleiben.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
129
04.01.2024, 20:02 Uhr
MarioG77

Avatar von MarioG77

Achso - klar. Ich dachte, die wird vorher immer ausgeführt, macht aber keinen Sinn - wir überschreiben das ja immer.

...wenn man immer nur halb hin schaut...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
130
05.01.2024, 14:33 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Jetzt klappt die automatische Einstellung der Pixelfrequenz.

Im ISR:

Quellcode:

// Interrupt: wird bei fallender Flanke von BSYN aufgerufen
static void IRAM_ATTR abg_bsync_interrupt(void *args)
{
    usleep(1);  // kurz warten. Je nachdem wie der ESP heute drauf ist, ist der kurze BSYN-Impuls noch nicht ganz vorbei
    if (gpio_get_level(PIN_NUM_ABG_BSYNC2)!=0)
    {
        if (ABG_Scan_Line == 10)
        {
            XTHAL_SET_CCOUNT(0);
        }

        if (ABG_Scan_Line == 210)
        {
            bsyn_clock_diff = XTHAL_GET_CCOUNT();
        }

        // bsync Impuls ist vorbei - war ein VSYNC
        if (ABG_Scan_Line > ABG_START_LINE)
        {
            REG_SET_BIT(GDMA_IN_LINK_CH1_REG, GDMA_INLINK_RESTART_CH1);  // das bewirkt, dass der DMA-Kontroller die Address-Tabelle neu einliest
            REG_SET_BIT(SPI_CMD_REG(2), SPI_USR);                        // neuen SPI-Transfer starten - die Parameter sind ja schon drin
        }
        ABG_Scan_Line++;
    }
    else
    {
        // bsync Impuls liegt immer noch an - ist ein HSYNC
        ABG_Scan_Line = 0;
    }
}





da scheint noch was zu fehlen...

Quellcode:

C:/projects/esp-1715-vga/components/vga-adapter-1715/vga-adapter-1715.c:91:13: error: implicit declaration of function 'XTHAL_SET_CCOUNT'; did you mean 'XCHAL_HAVE_CCOUNT'? [-Werror=implicit-function-declaration]
   91 |             XTHAL_SET_CCOUNT(0);
      |             ^~~~~~~~~~~~~~~~
      |             XCHAL_HAVE_CCOUNT
C:/projects/esp-1715-vga/components/vga-adapter-1715/vga-adapter-1715.c:96:31: error: implicit declaration of function 'XTHAL_GET_CCOUNT'; did you mean 'XCHAL_HAVE_CCOUNT'? [-Werror=implicit-function-declaration]
   96 |             bsyn_clock_diff = XTHAL_GET_CCOUNT();
      |                               ^~~~~~~~~~~~~~~~
      |                               XCHAL_HAVE_CCOUNT
C:/projects/esp-1715-vga/components/vga-adapter-1715/vga-adapter-1715.c:100:29: error: 'ABG_START_LINE' undeclared (first use in this function)
  100 |         if (ABG_Scan_Line > ABG_START_LINE)
      |                             ^~~~~~~~~~~~~~



btw: ich meine, das XTAL (Crystall) ist ohne "H"


Zitat:

Edit2:
Ich hab auch noch herausgefunden wie man das Linienflackern los wird: in den Projekteinstellungen unter "Component config-->ESP System Settings" den "Interrupt watchdog" deaktivieren.


probiere ich im nächsten Versuch gleich mit...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
131
05.01.2024, 16:25 Uhr
Ordoban



Joa, da fehlt der include:

Quellcode:

#include <xtensa/core-macros.h>


den ABG_START_LINE hattest du ABG_LINE_START genannt. Heißt die Grafikkarte im PC1715 auch ABG?
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
132
05.01.2024, 17:38 Uhr
MarioG77

Avatar von MarioG77

ok, das tut prinzipiell.
Leider hat sich gerade mein Bastelboard verabschiedet. Die Strombegrenzung am Netzteil schlägt zu...

Am 1715 bekomme ich ein Bild, prinzipiell auch stabil, aber leider passt das Pixel Timing nicht.
Die Zeichen sind krisselig. Allerdings stabil - das ändert sich im Verhalten nicht über die Zeit.

Ich würde mir das morgen nochmal anschauen.

Der 1715 hat keine Grafikkarte als solche. Das ist onboard mit dem 8275 fest aufgebaut.
Ich wüsste da jetzt keine "richtige" Bezeichnung. Ich kann mit ABG leben...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 05.01.2024 um 17:40 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
133
05.01.2024, 21:01 Uhr
Ordoban



Wer hatte hier das OSD-Menü zum debuggen bestellt?


Hier der ganze Quelltext nochmal komplett:
https://imoriath.com/downloads/privat/a7100/VGA_Adapter_main_V2.c
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
134
06.01.2024, 15:01 Uhr
MarioG77

Avatar von MarioG77

Krasse Sache.
Mal schauen, ob ich da heute noch zu komme...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
135
07.01.2024, 20:16 Uhr
MarioG77

Avatar von MarioG77

Leider doch nicht mehr geschafft - war schon fast dabei, aber dann merkte ich, dass du im neuen Code die GPIO neu belegt hast. Da brauche ich doch ein paar Minuten mehr.

Wird wohl bei mir erst frühestens nächste Woche, wenn es nicht mehr so kalt ist. Die Isolierung meiner Werkstatt reicht leider nicht aus.

Immerhin tut mein Bastel Board doch noch...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
136
30.01.2024, 19:51 Uhr
MarioG77

Avatar von MarioG77

So, heute endlich hier Mal weiter probiert.
Hat mich jetzt etwas Zeit gekostet, bis ich wieder ein Bild hatte.
Musste erst Mal wieder alle Parameter finden, die angepasst werden müssen.
Vielleicht ein paar weitere Konstanten definieren...

Meine Kurzhubtaster funktionieren eher schlecht am Breadboard. Da muss ich mir was besseres basteln.

Vom Bild her aber noch keine perfekte Einstellung gefunden - zumindest an meinem Test-Board. Muss ich in die Bedienung vom OSD erst einarbeiten.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
137
31.01.2024, 19:35 Uhr
MarioG77

Avatar von MarioG77

Eine kleine gelötete Tastatur später ist das schon angenehmer.

Hier mal die letzten Änderungen von mir:
https://github.com/mgoegel/pc1715-esp32s3-vga/blob/main/components/vga-adapter-1715/vga-adapter-1715.c

Ich habe die entsprechenden defines/Variablen angepasst, um das Zielsystem einfacher definieren zu können.

Auch das Delay im Interrupt muss ja passen...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
138
10.02.2024, 16:58 Uhr
MarioG77

Avatar von MarioG77

@Stefan:
Muss mal schauen, ob ich deine neuesten Änderungen Morgen testen kann...
Habe die Tage auch über eine andere Herangehensweise nachgedacht...

Evtl. etwas Mathematisch, zumindest für den 1715 und seiner krummen Frequenz. Vielleicht kann man das da etwas optimieren im Code optimieren.

Ich denke Mal, die Konstanten kann man über das OSD vielleicht umdefinieren und vielleicht auch den Code in einer Firmware passend unterbringen.
Oder vielleicht einfach per Jumper beim Booten auswählen, welche Variante laufen soll.

Ein weiterer Gedanke, falls ich mit der krummen Frequenz bei 40 MHz nicht hinkomme, vielleicht einen 2. DMA Buffer zu nehmen.
Auch vielleicht einzelne Bilder auslassen um Zeit für die Verarbeitung zu bekommen, falls nötig.
Ich vermute, hohe Frameraten spielen keine große Rolle...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
139
10.02.2024, 20:33 Uhr
Ordoban



Mathematisch... jaaa... sowas haben wir im Prinzip schon. Wir messen ja die Anzahl der CPU-Takte für 200 Zeilen (Zeile 210-219). Daraus wird dann die Schrittweite für die Pixeltabelle errechnet, und zwar im Sub-Sample Bereich (Zeile 500-517). Damit sollte sich das Problem mit den krummen Frequenzen erledigt haben. Das einzige was die Formel braucht ist die korrekte Anzahl Pixel pro Zeile. Die setzt sich aus den sichtbaren Pixeln, der Zeit vorher, der Zeit nachher und der Zeit vom Sync-Impuls zusammen.

Es ist auch möglich Parameter vom Programm aus im Flash zu speichern.

Man könnte auch anhand der gemessenen Anzahl CPU-Takte pro Zeile zwischen A7100 und PC1715 switchen. Wobei ich nicht weiß wie das mit den verschiedenen Parameter-Sätzen für den PC1715 aussieht.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
140
11.02.2024, 15:17 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Mathematisch... jaaa... sowas haben wir im Prinzip schon. Wir messen ja die Anzahl der CPU-Takte für 200 Zeilen (Zeile 210-219). Daraus wird dann die Schrittweite für die Pixeltabelle errechnet, und zwar im Sub-Sample Bereich (Zeile 500-517). Damit sollte sich das Problem mit den krummen Frequenzen erledigt haben. Das einzige was die Formel braucht ist die korrekte Anzahl Pixel pro Zeile. Die setzt sich aus den sichtbaren Pixeln, der Zeit vorher, der Zeit nachher und der Zeit vom Sync-Impuls zusammen.


Ja, es reicht leider noch nicht aus, die Abweichungen zu kompensieren.
Prinzipiell kann man alle Pixel stabil angezeigt bekommen, allerdings immer in Gruppen von ca 20 Pixeln.
D.h. ich habe etwa 2,5 Zeichen die ok sind und dann wieder knapp 2,5 Zeichen, die schwimmen.

Die CPU Takte für die Zeilen dürften die Varianzen innerhalb der Zeile nicht erfassen.
Am 1715 haben wir pro Pixel 72,3ns vs 25ns Abtastung. Das verschiebt sich da nach ein paar Pixeln. Am Ende der Zeile haben wir 48ns Abweichung.
Das ist zwar theoretisch kein ganzer Pixeltakt, aber zwischendrin leider sichtbar.

Auf dem Foto kann man das Schemenhaft erkennen.


Ich habe ein Video gemacht, an dem erkenne ich hoffentlich das Muster und kann diese Woche vielleicht eine Kompensationstabelle berechnen lassen.


Zitat:

Es ist auch möglich Parameter vom Programm aus im Flash zu speichern.


klar, macht Sinn.


Zitat:

Man könnte auch anhand der gemessenen Anzahl CPU-Takte pro Zeile zwischen A7100 und PC1715 switchen. Wobei ich nicht weiß wie das mit den verschiedenen Parameter-Sätzen für den PC1715 aussieht.


Du meinst für unterschiedliche PC1715 oder A7100<->PC1715?

Diesen Monat bin ich jetzt viel unterwegs, da komme ich meist nur am Wochenende kurz in meine Werkstatt.
Vielleicht kann ich aber offline Abends etwas Hirnschmalz rein stecken.

Nebenbei: mir ist im OSD immer noch nicht klar, wann ich welchen Wert verändere...
Die Anzeige wechselt zwar, aktualisiert aber nicht - erst wenn man den Modus wechselt.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 11.02.2024 um 15:20 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
141
11.02.2024, 15:22 Uhr
MarioG77

Avatar von MarioG77

Achja: das Schema der Abweichung scheint zwischen dem reparierten 1715 und meinem Bastel-Board sehr ähnlich zu sein...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
142
11.02.2024, 16:38 Uhr
Ordoban




Zitat:
MarioG77 schrieb
Ja, es reicht leider noch nicht aus, die Abweichungen zu kompensieren.
Prinzipiell kann man alle Pixel stabil angezeigt bekommen, allerdings immer in Gruppen von ca 20 Pixeln.
D.h. ich habe etwa 2,5 Zeichen die ok sind und dann wieder knapp 2,5 Zeichen, die schwimmen.


Das sieht ganz nach einer inkorrekten "Pixel pro Zeile" Einstellung aus.

Zitat:
MarioG77 schrieb
Die CPU Takte für die Zeilen dürften die Varianzen innerhalb der Zeile nicht erfassen.
Am 1715 haben wir pro Pixel 72,3ns vs 25ns Abtastung. Das verschiebt sich da nach ein paar Pixeln. Am Ende der Zeile haben wir 48ns Abweichung.
Das ist zwar theoretisch kein ganzer Pixeltakt, aber zwischendrin leider sichtbar.


Wenn die Pixelfrequenz innerhalb einer Zeile so variieren würde, dann müsstest du das auch bei dem original Monitor als Wabern sehen.

Zitat:
MarioG77 schrieb
Auf dem Foto kann man das Schemenhaft erkennen.



Ja, mit schöner Regelmäßigkeit breitere (und vermutlich flackernde) Spalten von Pixeln -> "Pixel pro Zeile" Einstellung falsch. Vielleicht 25 mehr probieren.

Zitat:
MarioG77 schrieb
Du meinst für unterschiedliche PC1715 oder A7100<->PC1715?


Ich meinte die unterschiedlichen Bildschirmmodie bei unterschiedichen SCP/CPA Versionen, wie in #032 und #033 von dir beschrieben.

Zitat:
MarioG77 schrieb
Diesen Monat bin ich jetzt viel unterwegs, da komme ich meist nur am Wochenende kurz in meine Werkstatt.
Vielleicht kann ich aber offline Abends etwas Hirnschmalz rein stecken.

Nebenbei: mir ist im OSD immer noch nicht klar, wann ich welchen Wert verändere...
Die Anzeige wechselt zwar, aktualisiert aber nicht - erst wenn man den Modus wechselt.


Häää? Mit den Tasten links und rechts wechselst du welchen Wert verstellt wird, der wird dann blau. Mit hoch und runter drehst du den Wert hoch und runter. Das hat sofort Effekt im Bild und auch in der OSD-Anzeige.
Was meinst du mit "Modus wechseln"? Kann es sein, dass du die Blaue Farbe nicht siehst?
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
143
11.02.2024, 16:56 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Das sieht ganz nach einer inkorrekten "Pixel pro Zeile" Einstellung aus.

ok, dann muss ich nochmal probieren....


Zitat:
Häää? Mit den Tasten links und rechts wechselst du welchen Wert verstellt wird, der wird dann blau. Mit hoch und runter drehst du den Wert hoch und runter. Das hat sofort Effekt im Bild und auch in der OSD-Anzeige.
Was meinst du mit "Modus wechseln"? Kann es sein, dass du die Blaue Farbe nicht siehst?

Oh... Darauf bin ich nicht gekommen. Die habe ich weg gespart, beim Testaufbau....
Mal schauen, was dann raus kommt...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
144
11.02.2024, 18:02 Uhr
MarioG77

Avatar von MarioG77

ok...

Da haben wir die Einstellung:



Den Pixel Abstand muss man hin und wieder nachjustieren +1/-1.
Rechts gibt es noch einen etwas unscharfen Bereich, wenn man genau hinschaut.
Aber sonst ist Bild super klar...

Glückwunsch und Danke!

Beim OSD müsste man vielleicht noch etwas die Eingabe optimieren - wenn man die Taste gedrückt hält, den Zähler weiter hoch zählen, das sollte sicher simpel sein.
Ich schätze, bevor ich das programmiert habe, hast du das schon hochgeladen (weil ich jetzt noch was anderes fertig machen muss).
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
145
11.02.2024, 18:28 Uhr
Ordoban



Sehr gut


Zitat:
MarioG77 schrieb
Den Pixel Abstand muss man hin und wieder nachjustieren +1/-1.


Das liegt daran, dass der Pixel-Abstand in Samples ist. Wenn sich die Pixel-Frequenz verändert, dann werden die Pixel in der Zeile gestreckt bzw gestaucht. Die Abtastrate wird schon automatisch mit gestreckt bzw. gestaucht, der Startpunkt aber nicht. Das wird dann das nächste sein, was ich in die Zange nehme.


Zitat:
MarioG77 schrieb
Rechts gibt es noch einen etwas unscharfen Bereich, wenn man genau hinschaut.
Aber sonst ist Bild super klar...


Das krigt man bestimmt auch noch...


Zitat:
MarioG77 schrieb
Beim OSD müsste man vielleicht noch etwas die Eingabe optimieren - wenn man die Taste gedrückt hält, den Zähler weiter hoch zählen, das sollte sicher simpel sein.
Ich schätze, bevor ich das programmiert habe, hast du das schon hochgeladen (weil ich jetzt noch was anderes fertig machen muss).


Ja, so ein bischen Komfort muss sein
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
146
17.02.2024, 12:11 Uhr
MarioG77

Avatar von MarioG77

Jetzt habe ich mir mein VS Code endlich so eingerichtet, dass er nicht mehr über die includes meckert...

Habe mir das mit der NVS Partition (Datenspeicher im Flash) schon Mal angeschaut.
Ich denke, das Menü muss noch ein wenig erweitert werden...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
147
17.02.2024, 13:14 Uhr
Ordoban



Und ich bin von Eclipse auf VS Code umgestiegen. Ich hatte Eclipse nur genommen, weil ich es von meinem anderen großen Hobby-Projekt (Imoriath) gut kenne. Für Java funktioniert Eclipse super, für C++ degegen nicht.

Ich hab das auto-repeat in die Tasten eingebaut, und die automatische Pixel-Abstand-Anpassung. Mit dem Ergebnis bin ich aber noch nicht ganz zufrieden. Der Bereich, in dem das ein gutes Bild gibt, ist extrem schmal. Eine Einstellung Plus oder Minus gibt immer flimmernde Pixel.

Ich werde das demnächst nochmal mit 80MHz Samplerate probieren. Dann muss ich aber den DMA-Puffer-Mechanismus erweitern.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
148
17.02.2024, 13:34 Uhr
MarioG77

Avatar von MarioG77

Ah ok, Danke für die Info.
Dann schaue ich mir das mit dem Speichern der Profile an.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
149
18.02.2024, 11:12 Uhr
MarioG77

Avatar von MarioG77

Ich sollte mein repo und den die main.c vielleicht umbenennen.
Ich hätte nicht gedacht, dass du da direkt mit einsteigst. Ich wollte nur die Code Basis offen und nachvollziehbar halten.

Das fiel mir gerade so beim NVS Code ein. Der Namespace sollte generischer sein.

Bevor ich da was ändere - mach einen Vorschlag. Du bist der Initiale Autor
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
150
18.02.2024, 13:54 Uhr
Ordoban



Ja, benenn ruhig um.

Es wär vielleicht auch gut, eine Lizenz-Klausel hinzuzufügen. In meinen Augen zwar Platzverschwendung, aber dann kann uns keiner ans Bein pissen. Welche, ist im Prinzip egal. Ich nehm meist die BSD-Lizenz. Die ist schön kurz.

Ich war gerade dabei das ganze wieder auf 80MHz Samplerate umzubauen. Das gibt tatsächlich ein besseres Bild. Die Pixel neigen nicht so sehr zum flimmern. Bei 40MHz ist nur eine einzige Einstellung flimmerfrei, bei 80MHz sind es mehrere nebeneinander. Für den A7100 klappt 80MHz gut, für den PC1715 aber nicht. Man kann mehrere DMA-Buffer aneinander hängen. Da hatte ich gedacht, der DMA-Kontroller würde dann automatisch auf den nächsten Buffer gehen wenn der eine voll ist. Tut er auch - aber nicht innerhalb eines Transfers. Vor Beginn jeden Transfers überprüft der, ob die Daten in den das aktuelle Buffer-Segment passen. Wenn nicht, nimmt der halt das nächste. Wenn die Daten insgesamt größer sind als 4K, dann fängt der DMA-Kontroller gar nicht erst an.

Das schmeißt die Planung für das nächste Projekt über den Haufen: Streaming über Wlan. Ich hatte vor, zuerst einen komplette Frame in einem Stück über SPI einzulesen, und den dann erst in ein Bild zu zerlegen. Da braucht man nicht auf das Timing zu achten. Die Framerate über Wlan ist am Ende egal. Jetzt muss ich das Einlesen doch wieder in einzelne Zeilen Splitten.

Wie auch immer. Benenn die main.c um, dann kann ich den Teil committen, der einigermaßen geht.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
151
18.02.2024, 15:08 Uhr
MarioG77

Avatar von MarioG77

Ok, ich habe das 1715 jetzt aus den Verzeichnissen/Dateien eliminiert.

Das Repo hat eine neue URL, ich hoffe, dein Fork wurde entsprechend angepasst:
https://github.com/mgoegel/robotron-esp-vga.git

BSD Lizenz ist drin.

Mit dem NVS Kram habe ich gerade erst angefangen.
In dem Zug habe ich die Konstanten vorgesehen, durch globale Variablen zu ersetzen.
In der Hoffnung, dass das keine negativen Auswirkungen auf die Performance hat...

Dann sollte man ohne Reboot zwischen A7100 und PC1715 wechseln können.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 18.02.2024 um 15:08 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
152
19.02.2024, 19:47 Uhr
MarioG77

Avatar von MarioG77

Ich habe die Modusumschaltung eingebaut. Testen tue ich morgen.
Der nächste Schritt ist dann das Speichern der Werte.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
153
19.02.2024, 22:07 Uhr
Ordoban



Ich hab das mit meinem Zeugs zusammengeführt. Klappt für den A7100 soweit OK.
Ab und zu zuckt das Bild. Woran das liegt versuche ich morgen herauszufinden.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
154
20.02.2024, 08:06 Uhr
MarioG77

Avatar von MarioG77

ok, hab's bei mir eingebunden.
Test heute Abend. Bin gespannt. Muss wohl doch langsam mal den 1834 mit MON auf dem Tisch ausgraben...

Nebenbei: den Modus hatte ich im Menü nicht als Start Wert vorgesehen, um den nicht versehentlich umzuschalten. Hab ich auch nicht dazu kommentiert. Von der Reihenfolge her macht das natürlich an erster Stelle mehr Sinn.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
155
20.02.2024, 18:47 Uhr
MarioG77

Avatar von MarioG77

Man, VSCode kann echt frustrierend sein...
ESP-IDF auf Rechner A auf Laufwerk E: installiert und auf Rechner B auf Laufwerk C:...

Heute geht auch nichts... Blöde VS Config Sync.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
156
20.02.2024, 19:52 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Ich hab das mit meinem Zeugs zusammengeführt. Klappt für den A7100 soweit OK.
Ab und zu zuckt das Bild. Woran das liegt versuche ich morgen herauszufinden.


ok, Ich habe es endlich kompiliert bekommen.
Die Startwerte für den PC1715 habe ich angepasst.

Der Pixelabstand schwankt da zwischen 154.40 und 154.60.

Muss mal beobachten, ob das Sprunghaft oder langsamer passiert.

Das mit dem Zucken kann ich bestätigen. Gefühlt der Ersatz einer flimmernden Röhre...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
157
20.02.2024, 19:55 Uhr
Ordoban




Zitat:
MarioG77 schrieb
Das mit dem Zucken kann ich bestätigen. Gefühlt der Ersatz einer flimmernden Röhre...



Ok, dann verkaufen wir das als Feature. Fehlt nur noch das leise Pfeifen eines Zeilentravos
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
158
21.02.2024, 20:12 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb

Ok, dann verkaufen wir das als Feature. Fehlt nur noch das leise Pfeifen eines Zeilentravos


Gute Idee...

Ich habe gerade das Speichern/Laden der Einstellungen eingebaut.
Das Menü ist um eine weitere Seite erweitert (nach rechts).

Ich hab es heute nicht mehr testen können. Mache ich morgen, falls du nicht schneller bist.

Habe gestern die Farben beim 1715 auch noch auf Grün geändert - das sieht einfach besser aus.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
159
21.02.2024, 20:27 Uhr
Rolly2



Entspricht auch mehr dem Original. So sollte das auch sein. Ich lese das nun schon von Anfang an mit. Ging es da nicht um eine Möglichkeit, einen TFT an den 7100 anzuschliessen?
Für den 1715 gibt es ja schon diese Möglichkeit, Heikos VGA-Karte. Diese könnte man überarbeiten und ohne Farbe gestalten,also nur "GRÜN". Der Aufwand, den ihr Beiden betreibt, ist ja beträchtlich. Der Fred ist auch relativ lang und damit unübersichtlich geworden.

VG, Andreas
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
160
21.02.2024, 21:59 Uhr
Ordoban



Ja, es ging anfangs nur um den 7100, wir haben das auf den 1715 erweitert, weil das vom Videosignal gut passt. Ich kenne "Heikos VGA-Karte" nicht, aber ich vermute mal, dass die auch ganz schön aufwändig ist, und die Teile schwer zu bekommen sind. Die ESP32-S3 sind spottbillig und gut zu bekommen. Der Rest ist Software...

Ich weiß nun eingermaßen woher das Bildzucken kommt. Das liegt daran, dass Interrupts beim ESP32 durch den C-Unterbau relativ große Latenz haben. Vor allem ist diese Latenz nicht gleich. Manchmal dauert es viel länger bis unser ISR aufgerufen wird. Es gibt auch die Möglichkeit Interrupts mit höherer Priorität zu nutzen, dadurch wird die Latenz klein und gleichmäßig. Allerdings muss der ISR dann in Assembler geschrieben werden. Ich hab mir schon die Beispiele dazu angesehen, und das Beispiel-Projekt bei mir zum laufen gebracht. Jetzt noch unseren ISR in Assembler umsetzen... das wird lustig. Das ist kein Z80
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
161
22.02.2024, 09:45 Uhr
MarioG77

Avatar von MarioG77

Ja, genau das ist auch mein Antrieb.

Ich möchte mir schon auch noch so eine BWS Karte mal zulegen. Die dürfte aber deutlich teurer und aufwendiger sein.
Zumal man die ja auch noch irgendwie in das Gehäuse packen muss (GUN?).
Der FPGA war, WIMRE, auch schon eine Weile abgekündigt und nur noch in China zu bekommen.

Ich muss sagen, dass die Lösung hier das bis jetzt beste Bild aus dem Original-Signal an moderen Monitoren rausgeholt hat.
Wenn wir die Kleinigkeiten noch lösen, sollte das eine günstige Lösung sein.
Und die Programmierung von Controllern macht mir auch richtig Spaß...

Ich hatte mit einem Prototyp PCB Design noch abgewartet, aber hier wird außen wohl nicht mehr viel dazukommen - denke, ich werde das in Kürze angehen - wenn wir nicht noch irgendwelchen verrückten Ideen haben...
Die Netzteil Platine will ich in dem Zuge dann mal mitbestellen.

@Stefan: nicht schlecht, das überhaupt zu finden.
Wird sicher eine Herausforderung. In der ISR Routine ist ja jetzt auch nicht ganz wenig Code.
Bei dem Code für Xtensa LX7 habe ich auch noch keine Erfahrung. Das ist dann neu für mich, aber sicher auch nicht unlösbar.
In dem Zusammenhang habe ich auch das hier gefunden:
https://haydendekker.medium.com/esp32-interrupts-can-only-do-200khz-56f8dbb6a61c
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
162
22.02.2024, 11:13 Uhr
Rolly2



Ja, Hut ab vor euem Durchhaltevermögen. Ich hätte vermutlich schon lange aufgegeben, wenn ich denn Ahnung von der Materie hätte.
Wenn am Ende etwas für unsere alten Rechner herauskommt ist das natürlich noch schöner.
Die angesprochene BWS-Karte passt übrigens gut über der GUN in den 1715 und natürlich auch in jeden K1520 Rechner.
Du hast recht, der FPGA ist schwer beschaffbar und kostet auch ca.25 Euro. Von daher ist eure Lösung sicher viel günstiger.
Zeigt doch ab und zu mal ein aktuelles Bildschirmfoto am 1715, das interessiert viele Mitleser und macht den Fred abwechslungsreicher.

VG, Andreas

Dieser Beitrag wurde am 22.02.2024 um 11:30 Uhr von Rolly2 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
163
22.02.2024, 11:21 Uhr
MarioG77

Avatar von MarioG77

ok, wenn ich heute zum Feierabend den neuesten Code teste, gibt es wieder was...

Durchhaltevermögen ist da jetzt echt kein Thema gewesen (bei mir jedenfalls) - das Projekt hat sich zeitlich etwas gezogen, weil wir beide sicher auch noch andere Dinge in der Zwischenzeit hatten.
Aber sonst empfinde ich dabei Spaß. Selbst wenn ich, wie gestern Abend - am Büro Rechner ohne jeden HW Kontakt nur trocken programmiere - auch wenn es die Fortsetzung des Arbeitstages an einem anderen Projekt ist.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
164
22.02.2024, 19:08 Uhr
MarioG77

Avatar von MarioG77

Hat fast perfekt funktioniert.

Ich musste lediglich beim Laden der Einstellungen den cast von int auf float verschieben.
Mit den aktuellen Voreinstellungen müsste zumindest jeder 1715 irgendwas anzeigen.


--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
165
22.02.2024, 19:30 Uhr
Rolly2



Das sieht ja lecker aus, wo stöpselst du das an? Direkt an der X6?

VG, Andreas
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
166
22.02.2024, 19:49 Uhr
MarioG77

Avatar von MarioG77

Korrekt.

Ich bin am überlegen, ob man das innen irgendwie einfach abzweigen könnte und irgendwo VGA raus führt. Dann könnte man auch Strom vom Netzteil holen und hat nicht extern noch extra was dran.

Einen Pin Header an die X6 innen dran zu löten wird vermutlich nicht einfach.
Denke, auf der Unterseite der Platine ist einfacher abzugreifen.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 22.02.2024 um 19:49 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
167
22.02.2024, 20:07 Uhr
Ordoban



ISR in Assembler ist fertig
Und was soll ich sagen? Perfekt Zuck,- und Flackerfrei.
Ich brauch aber noch etwas, um das in eine gescheite Form zu bringen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
168
22.02.2024, 20:40 Uhr
Rolly2



Da sind ja genug Aussparungen frei um eine VGA-Buchse zu instalieren. Das habe ich auch so gemacht. Das blöde ist nur, das da was angelötet werden muss. Eine externe Lösung wäre für eventuelle "Nachnutzer" einfacher. Grün als Farbe finde ich schön, reicht mir, macht eure Lösung auch Farbe? Ist ja eine wichtige Frage, denn viele sind von der BWS von Heiko verwöhnt

VG, Andreas

Dieser Beitrag wurde am 22.02.2024 um 20:58 Uhr von Rolly2 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
169
23.02.2024, 08:11 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
ISR in Assembler ist fertig
Und was soll ich sagen? Perfekt Zuck,- und Flackerfrei.
Ich brauch aber noch etwas, um das in eine gescheite Form zu bringen.


Du bist echt der Hammer...


Zitat:
Rolly2 schrieb
Da sind ja genug Aussparungen frei um eine VGA-Buchse zu instalieren. Das habe ich auch so gemacht. Das blöde ist nur, das da was angelötet werden muss. Eine externe Lösung wäre für eventuelle "Nachnutzer" einfacher.


Das Gehäuse habe ich mir im Detail noch nicht so angeschaut.
Ja ich weiß, das mit dem Nachlöten würde intern halt nicht anders gehen - außer man führt wieder Kabel nach außen.
Da bleibt dann aber bei den Nachnutzern u.U. das Problem mit den passenden Buchsen, was man intern nicht hat.

Geplant ist, eine Platine für beide Varianten auszustatten. Ich habe aber hier nur den 1715.
Ich weiß jetzt nicht, wie das bei 7100 aussieht.


Zitat:

Grün als Farbe finde ich schön, reicht mir, macht eure Lösung auch Farbe? Ist ja eine wichtige Frage, denn viele sind von der BWS von Heiko verwöhnt

VG, Andreas


Theoretisch wären 4 Farben (inkl. schwarz - Signale VIDEO, INTENS) denkbar, aber praktisch - wo soll das hier herkommen?
Die Original Karten (1715) unterstützen das ja nicht.

Gedanklich habe ich schon überlegt, ob man das Signal nicht auch Digital, wie beim picoAC1 auskoppeln könnte...
Das wäre dann vermutlich ein billiger BWS Ersatz - sollte theoretisch möglich sein. Ich habe das Konstrukt vom picoAC1 gerade nicht mehr im Kopf, wie das da im Detail gelöst war.

Aber das wäre was für später Mal - für den Moment ist das hier eine sehr gute und günstige Lösung für mich.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
170
23.02.2024, 17:07 Uhr
Ordoban




Zitat:
MarioG77 schrieb
Geplant ist, eine Platine für beide Varianten auszustatten. Ich habe aber hier nur den 1715.
Ich weiß jetzt nicht, wie das bei 7100 aussieht.


Beim 7100 ist das mit "intern" schwierig. Da gibts kaum Platz der für sowas geeignet ist, und auch keine Stellen die für neue Anschlüsse nach außen passen wurden. Außer man opfert einen MMS16-Slot...


Zitat:
Rolly2 schrieb
Grün als Farbe finde ich schön, reicht mir, macht eure Lösung auch Farbe? Ist ja eine wichtige Frage, denn viele sind von der BWS von Heiko verwöhnt

VG, Andreas


Du kannst das in jeder Farbe haben die du möchtest - solange es Grün ist.
Nein mal im Ernst: Die 7100 und 1715 geben 4 Stufen raus: schwarz, dunkel, normal, hell. Das wird mit einer Tabelle auf die VGA-Farben gemappt. Das können alle Farben sein, aber immer nur 4 gleichzeitig. Die Hardware des ESP32S3 unterstützt 16Mio Farben, von denen wir mit der derzeitigen Schaltung nur 64 nutzen. Für mehr brachste nur mehr Widerstände als DA-Wandler.
Edit: nope, sind 16Bit, also nur 64K Farben...


Zitat:
MarioG77 schrieb
Gedanklich habe ich schon überlegt, ob man das Signal nicht auch Digital, wie beim picoAC1 auskoppeln könnte...
Das wäre dann vermutlich ein billiger BWS Ersatz - sollte theoretisch möglich sein. Ich habe das Konstrukt vom picoAC1 gerade nicht mehr im Kopf, wie das da im Detail gelöst war.


Möglich ist viel. Sinnvoll? Eher nicht. Bei dem 7100 wird der gesamte Grafik-Traffic in ASCII über einen einzigen I/O-Port abgewickelt. Da bräuchtest du nur so etwas wie ein Buffer-Register und einen Raspi als Konsole dranzuhängen.

Ich würde als Bauform für den ESP32-VGA-Adapter eine Zwischenstecker-Form bevorzugen. Etwa so:

Die Herausforderung bei diesem Design ist, das mechanisch an der 9er SUB-D Buchse vom 7100/1715 festzukrigen. Einfach nur anstecken ist zu wacklig, ich kenn das von dem CM1910-Adapter.
Den hab ich schließlich mit schmalen Blechstreifen festgeschraubt. Es wäre auch denkbar statt der 9er SUB-D ein kurzes Kabel mit Stecker vorzusehen. Eventuell für die VGA-Seite auch ein abgeschnittenes VGA-Kabel. Dann hätte man ein "im Kabel-Kästsche".

Für das Schaltungsdesign brauchst du für den 7100 nur zu beachten, dass der Open-Kollektor-Ausgänge hat, und deshalb Pull-Up Widerstände braucht. Als Stromversorgung kann man ja ein USB-Netzteil vorsehen. Eine USB-Buchse brauchste zum programmieren sowieso.

Edit:
Nochwas: die main.c wird langsam ganz schön groß und unübersichtlich. Was hälst du davon die nach Funktionen aufzusplitten, z.B. Main, Capture, VGA, OSD, (Wlan).. ?
--
Gruß
Stefan

Dieser Beitrag wurde am 23.02.2024 um 17:27 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
171
23.02.2024, 17:46 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Beim 7100 ist das mit "intern" schwierig. Da gibts kaum Platz der für sowas geeignet ist, und auch keine Stellen die für neue Anschlüsse nach außen passen wurden. Außer man opfert einen MMS16-Slot...


Ok, dann muss man sich da keine intensiven Gedanken machen.


Zitat:
Du kannst das in jeder Farbe haben die du möchtest - solange es Grün ist.


Der war gut ;-)


Zitat:


Zitat:
MarioG77 schrieb
Gedanklich habe ich schon überlegt, ob man das Signal nicht auch Digital, wie beim picoAC1 auskoppeln könnte...
Das wäre dann vermutlich ein billiger BWS Ersatz - sollte theoretisch möglich sein. Ich habe das Konstrukt vom picoAC1 gerade nicht mehr im Kopf, wie das da im Detail gelöst war.


Möglich ist viel. Sinnvoll? Eher nicht. Bei dem 7100 wird der gesamte Grafik-Traffic in ASCII über einen einzigen I/O-Port abgewickelt. Da bräuchtest du nur so etwas wie ein Buffer-Register und einen Raspi als Konsole dranzuhängen.


Ah ok, das klingt fast banal.
Aber ich hatte da eher nur den 1715 im Sinn.


Zitat:

Ich würde als Bauform für den ESP32-VGA-Adapter eine Zwischenstecker-Form bevorzugen. Etwa so:

Die Herausforderung bei diesem Design ist, das mechanisch an der 9er SUB-D Buchse vom 7100/1715 festzukrigen. Einfach nur anstecken ist zu wacklig, ich kenn das von dem CM1910-Adapter.
Den hab ich schließlich mit schmalen Blechstreifen festgeschraubt. Es wäre auch denkbar statt der 9er SUB-D ein kurzes Kabel mit Stecker vorzusehen. Eventuell für die VGA-Seite auch ein abgeschnittenes VGA-Kabel. Dann hätte man ein "im Kabel-Kästsche".


ok, also ist die mechanische Seite auf jeden Fall mit zu beachten.
Am 1715 kann man das eh vergessen - an dem Stecker bekommst du das mechanisch nicht fest. Da bleibt es bei einem Kasten mit Kabel, wenn extern.


Zitat:

Für das Schaltungsdesign brauchst du für den 7100 nur zu beachten, dass der Open-Kollektor-Ausgänge hat, und deshalb Pull-Up Widerstände braucht.


Ist im Design mit Bedacht. Da das Eingangssignal eh über eine verkabelte Verbindung kommt, kann man das mit einer kleinen Buchse/Pin Header entsprechend vorsehen.


Zitat:

Als Stromversorgung kann man ja ein USB-Netzteil vorsehen. Eine USB-Buchse brauchste zum programmieren sowieso.


Ja so in der Richtung dachte ich auch.
Zusätzlich ein 5V Eingang, wenn man das in den 1715 verpackt.


Zitat:

Edit:
Nochwas: die main.c wird langsam ganz schön groß und unübersichtlich. Was hälst du davon die nach Funktionen aufzusplitten, z.B. Main, Capture, VGA, OSD, (Wlan).. ?


Klingt sinnvoll.
Die Assembler Routine dürfte die Zeilenzahl sicher deutlich vergrößern.

Was hat Assembler mit der Deutschen Bahn gemeinsam?
Die Schienen und Assembler Listings sind nicht besonders breit, aber unheimlich lang.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
172
23.02.2024, 17:58 Uhr
schlaub_01




Zitat:
Ordoban schrieb
Es wäre auch denkbar statt der 9er SUB-D ein kurzes Kabel mit Stecker vorzusehen. Eventuell für die VGA-Seite auch ein abgeschnittenes VGA-Kabel. Dann hätte man ein "im Kabel-Kästsche".



Wäre es da nicht sinnvoll eine Art Adapterkonzept sich auszudenken, was universeller ist? Dann könnte man den VGA Adapter auch für andere Rechner mal später erweitern. Eine einfach IDC Stiftleiste mit Flachbandkabel wäre an der Stelle einfach zu verarbeiten und mit einer vernünftigen Belegung (z.B. Signal, GND, Signal, GND usw.) hat man auch keine Impedanz- und großartigen Störungsprobleme bei kurzen Adapterkabeln. Man könnte dann auch noch ein paar Signale vorsehen, wo man pull-up Widerstände im VGA-Adapter dran macht und am jeweiligen Interface-Stecker die Signale definiert auf GND legt. Dann kann der VGA Adapter automatisch erkennen, was für ein Adapterkabel dran ist. Nur so als Idee...
Ansonsten verfolge ich die Entwicklung schon sehr gespannt und würde das dann auch gerne einsetzen, wenn es mal in "Hardware" gegossen ist.

Viele Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
173
23.02.2024, 18:19 Uhr
MarioG77

Avatar von MarioG77

Ja Sven, das klingt gut.

Ich werde den Entwurf hier posten. Wird noch ein paar Tage dauern. Bin kommende Woche wieder in Hannover. Mal schauen, was mich da Abends so überkommt (hoffentlich keine Arbeit).
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
174
23.02.2024, 20:07 Uhr
Ordoban




Quellcode:

// diese Definition scheint in den Header-Dateien von ESP zu fehlen!
// Definition ab IDF 5.2 verfügbar!
//#define REG_SPI_BASE(i)     (DR_REG_SPI1_BASE + (((i)>1) ? (((i)* 0x1000) + 0x20000) : (((~(i)) & 1)* 0x1000 )))


Muss ich direkt mal updaten


Zitat:
MarioG77
Die Assembler Routine dürfte die Zeilenzahl sicher deutlich vergrößern.


Geht eigendlich. Xtensa Assembler ist ziemlich hässlich aber effektiv und kompakt. Der ISR geht aber eh nicht als inline, muss ne extra Datei sein.


Zitat:
MarioG77
Was hat Assembler mit der Deutschen Bahn gemeinsam?
Die Schienen und Assembler Listings sind nicht besonders breit, aber unheimlich lang.



Ich warte schon auf den Kommentar von Enrico. Ich war übrigends auch selber mal Bahner, hab da gelernt.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
175
23.02.2024, 21:43 Uhr
Enrico
Default Group and Edit


Jetzt werde ich schon wieder angestiftet und vorgeschoben....

Nö, ich wollte schon vorher nicht.
Kann aber zum Treffen ein Stück Schiene als Reaktionsverstärker mit bringen.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
176
24.02.2024, 14:03 Uhr
Ordoban



Ich hab grad mal probiert das Wlan auf dem VGA-Adapter zu starten. Das klappt nicht, da der interne RAM nicht für VGA-Buffer und Wlan-Buffer gleichzeitig ausreicht. Der VGA-Buffer lässt sich zwar in den Externen RAM verschieben, aber der ist dann zu langsam. Schon die Anzeige des OSD klappt nicht. Auf dem Bildschirm ist dann nur noch wüst flimmernder Müll zu sehen. Die Wlan-Buffer kann man verkleinern, dann reicht es aber nicht mehr zur Anmeldung am Router.

Was mich wundert ist, dass die bei VGA32 solche Beschränkungen nicht haben. Wie machen die die Wiedergabe auf VGA?
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
177
24.02.2024, 14:09 Uhr
MarioG77

Avatar von MarioG77

War geflasht, als ich heute früh deinen Push bei github gesehen habe...
Ich brauche noch einen Moment bei meinem Server Projekt, wird später aber auf jeden Fall noch getestet!

Ob da eine Reaktion von Enrico kommt, da war ich auch gespannt.

Ich vermute, bis ich überhaupt eine Gelegenheit hatte, mal nachzuschauen, hast du das mit WLAN auch noch gelöst..
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
178
24.02.2024, 17:38 Uhr
MarioG77

Avatar von MarioG77

Hmm. Bei mir lässt es sich nicht kompilieren.

das fängt an bei:

Quellcode:

C:/projects/esp-1715-vga/components/vga-adapter/osd.c:112:33: error: 'OSD_BUF' undeclared (first use in this function)
  112 |                                 OSD_BUF[b+(pos+a)*7+d*640] = (((1 << d) & c) != 0) ? color : 0x00;
      |                                 ^~~~~~~



Müssen die globalen Variablen/Methoden denn nicht in eine Header Datei ausgelagert werden und die in jeder .c eingefügt werden?

Edit:
ist ja anders... Du includest die .C Dateien.
Der hat die mir automatisch im CMake zum Linken eingetragen und versucht einzeln zu kompilieren.
Ich habe die da wieder rausgeworfen und jetzt hat er kompiliert.

Aber vermutlich sollten wir das sauber machen, da der mir das vermutlich beim nächsten Pull wieder reinwirft.

Edit 2:
Bei mir kommt kein Bild. Bei Ansicht der ISR sehe ich beim "usleep" Bereich den Delay nicht angepasst, vermute ich...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 24.02.2024 um 17:55 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
179
24.02.2024, 18:45 Uhr
Ordoban



Ja, mit den .C als include hast du natürlich Recht. Ich weiß nicht so genau wie das richtig gemacht wird. Mit dem direkten include war halt bei Pascal so üblich

Das mit dem usleep ist eine Änderung der Wirkungsweise: der wartet darauf, dass das Signal wieder High wird, aber maximal 10µs. Wenn es über 10µs war, dann ist es ein VSync, ansonsten HSync. Mit der Methode sollte es ohne Anpassungen für beide Rechner gehen. Du könntest mal gucken, ob der ISR überhaupt ausgelöst wird:

Quellcode:

    movi    a14, (1 << 14)      // Pin 14
    movi    a13, GPIO_OUT_W1TS_REG
    s32i    a14, a13, 0         // auf High
    s32i    a14, a13, 4         // auf Low


Z.B. an Zeile 23, damit müsstest du mit dem Logikanalyzer an Pin 14 einen ganz kurzen Impuls sehen, immer wenn der ISR feuert.

Edit:
Damit sieht man übrigends sehr schön, dass der ISR auch gern mal außerhalb der Reihe feuert. Vermutlich krigt der ESP da wirklich einen kurzen Nadelimpuls auf dem Pin. Bei den Steckbrettern wundert mich nichts mehr...
--
Gruß
Stefan

Dieser Beitrag wurde am 24.02.2024 um 18:50 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
180
24.02.2024, 19:49 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Ja, mit den .C als include hast du natürlich Recht. Ich weiß nicht so genau wie das richtig gemacht wird. Mit dem direkten include war halt bei Pascal so üblich


Geht ja auch, aber macht man eher nicht...

Kein problem, das kann ich morgen früh hoffentlich schnell(?) anpassen.


Zitat:

Das mit dem usleep ist eine Änderung der Wirkungsweise: der wartet darauf, dass das Signal wieder High wird, aber maximal 10µs. Wenn es über 10µs war, dann ist es ein VSync, ansonsten HSync. Mit der Methode sollte es ohne Anpassungen für beide Rechner gehen. Du könntest mal gucken, ob der ISR überhaupt ausgelöst wird:

Quellcode:

    movi    a14, (1 << 14)      // Pin 14
    movi    a13, GPIO_OUT_W1TS_REG
    s32i    a14, a13, 0         // auf High
    s32i    a14, a13, 4         // auf Low


Z.B. an Zeile 23, damit müsstest du mit dem Logikanalyzer an Pin 14 einen ganz kurzen Impuls sehen, immer wenn der ISR feuert.

Edit:
Damit sieht man übrigends sehr schön, dass der ISR auch gern mal außerhalb der Reihe feuert. Vermutlich krigt der ESP da wirklich einen kurzen Nadelimpuls auf dem Pin. Bei den Steckbrettern wundert mich nichts mehr...


ok, hatte leider nicht viel Zeit für weitere Tests, weil ein Kumpel sich zu Besuch angemeldet hatte.

Schaue ich morgen nochmal. Bin gespannt, wie das ausschaut, wenn es läuft
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
181
25.02.2024, 09:39 Uhr
Ordoban



Ich hab mir mal angeschaut wie VGA32 (bzw. FabGL) das mit der VGA-Ausgabe macht: die nutzen die I2S-Schnittstelle für die VGA-Ausgabe. Damit haben die mehr Möglichkeiten als wir mit dem LCD-Controller. Allerdings ist das mit dem I2S sehr viel komplizierter, und es verbraucht schon viel CPU-Zeit. Ich würde bei dem LCD-Controller bleiben.

Ich würde 2 verschiedene Versionen von der Adapter-Software machen: eine für VGA und eine für Wlan-Streaming. Wer wirklich beides gleichzeitig braucht, kann immer noch 2 von den Adaptern paralell schalten.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
182
25.02.2024, 15:41 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schrieb
Ich hab mir mal angeschaut wie VGA32 (bzw. FabGL) das mit der VGA-Ausgabe macht: die nutzen die I2S-Schnittstelle für die VGA-Ausgabe. Damit haben die mehr Möglichkeiten als wir mit dem LCD-Controller. Allerdings ist das mit dem I2S sehr viel komplizierter, und es verbraucht schon viel CPU-Zeit. Ich würde bei dem LCD-Controller bleiben.

Ich würde 2 verschiedene Versionen von der Adapter-Software machen: eine für VGA und eine für Wlan-Streaming. Wer wirklich beides gleichzeitig braucht, kann immer noch 2 von den Adaptern paralell schalten.


Spricht erst Mal nichts dagegen. Vielleicht findet sich ja doch noch eine andere Lösung...
Meine Prio ist da aber derzeit eher ein ordentliches Bild auf dem Monitor.

Ich habe den Code umstrukturiert.
War doch nicht "so schnell" gemacht, wie gedacht.
Er kompiliert und linkt. Zwar mit 2 Warnungen, aber die kommen evtl. auch vom ESP-IDF SDK.
Vorherige Deklaration der osd_task() und capture_task()...

Muss dann gleich nochmal testen, leider noch ohne Bild. Ich werde es heute evtl. nicht mehr schaffen, das zu finden. Morgen geht es wieder für ein paar Tage nach Hannover...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
183
25.02.2024, 17:01 Uhr
MarioG77

Avatar von MarioG77

ok, der Code läuft noch.

Nach Erweiterung der ISR kann ich auf GPIO20 sehen, dass der ISR läuft.

Danach kam jetzt auch so was raus:


Kommt jetzt aber nicht mehr. Der 1715 scheint wieder etwas aus dem Bereich gelaufen zu sein.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
184
25.02.2024, 18:35 Uhr
Ordoban



Sieht aus, als wenn die Trennung Hsync/Vsync nicht richtig geht. Probier mal

Quellcode:

    movi    a12, 48                                // Timeout-Counter (~10µs)


die 48 zu erhöhen. Vielleicht 100?
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
185
26.02.2024, 22:13 Uhr
MarioG77

Avatar von MarioG77

Danke. Probiere ich aus, wenn ich wieder zuhause bin.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
186
26.02.2024, 22:35 Uhr
Ordoban



Ich bin grad am debuggen.
Die 48 ist tatsächlich etwas zu kurz: ~5µs.
Und da sind auch noch paar andere Kleinigkeiten, siehe Pull-Request
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
187
29.02.2024, 18:05 Uhr
Ordoban



Es gibt Fortschritte bei der Wlan-Variante:

Boa, hat mich der ESP gerade auf russisch als "Depp" beschimpft?
Ok, der hat ja Recht. Typ nicht als Text, sondern "image/png" setzen...


Falsche Farbtiefe? Jap, steht auf "Truecolor".


Besser? Oder schlechter? "8-Bit Indexed" erscheint mir auf jeden Fall richtiger.


"Indexed" heißt, es braucht eine Index-Tabelle. Damit sieht es schonmal gut aus.


So, nun hat der A7100 seinen Auftritt.

Das geht aber nur ganz kurz nach dem Reset des ESP32. Nach 1-2 Sekunden stoppt der Capture-Mechanismus. Der DMA-Kontroller wird auch vom Wlan benutzt, und es sieht so aus, als wenn das Betriebssystem uns den DMA-Kanal für das Wlan klaut. Irgendwie muss ich mir einen DMA-Kanal reservieren können.

Das ganze ist für einen Video-Stream auch noch zu langsam. Mit Refresh komme ich auf etwa 2 Frames pro Sekunde.
--
Gruß
Stefan

Dieser Beitrag wurde am 29.02.2024 um 18:13 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
188
29.02.2024, 18:20 Uhr
MarioG77

Avatar von MarioG77

Cool.
Ich bin gerade heim gekommen und musste gleich das letzte Build ausprobieren.
Ich habe jezt wieder ein Bild.
Allerdings fehlt manchmal ein Zeile. Das Bild springt dann einen Teil nach oben.

Für mehr habe ich heute keine Kraft mehr. War eine anstrengende Woche und fahrt...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
189
01.03.2024, 17:00 Uhr
Ordoban




Zitat:
MarioG77 schrieb
Ich habe jezt wieder ein Bild.


schonmal gut.

Zitat:
MarioG77 schrieb
Allerdings fehlt manchmal ein Zeile. Das Bild springt dann einen Teil nach oben.


Das kann eigendlich nur passieren, wenn der Sync-Impuls als Fehlalarm erkannt wird:

Quellcode:

    movi    a14, SYNC_PIN_REG
    movi    a15, SYNC_BIT_VAL
    l32i    a13, a14, 0
    and     a13, a13, a15
    bnez    a13, xt_highint5_L9                     // Signal schon vorbei? War ein Störimpuls! --> Ende!


Ich weiß jetzt nicht, wie dein Aufbau ist, eventuell haste da ab und zu einen starken Einschwingvorgang bei der Low-Flanke. Es ist auch möglich, dass du ein leichtes Übersprechen vom Debug-Pin GPIO14 auf den Interrupt-Pin GPIO45 hast.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
190
01.03.2024, 18:45 Uhr
MarioG77

Avatar von MarioG77


Zitat:
Ordoban schriebDas kann eigendlich nur passieren, wenn der Sync-Impuls als Fehlalarm erkannt wird:

Quellcode:
    movi    a14, SYNC_PIN_REG
    movi    a15, SYNC_BIT_VAL
    l32i    a13, a14, 0
    and     a13, a13, a15
    bnez    a13, xt_highint5_L9                     // Signal schon vorbei? War ein Störimpuls! --> Ende!

Ich weiß jetzt nicht, wie dein Aufbau ist, eventuell haste da ab und zu einen starken Einschwingvorgang bei der Low-Flanke. Es ist auch möglich, dass du ein leichtes Übersprechen vom Debug-Pin GPIO14 auf den Interrupt-Pin GPIO45 hast.


Naja, wie oben in #164 - fliegend, also alles andere als Optimal.
Schon sehr wahrscheinlich...

Ich habe den Debug PIN aus dem Code herausgenommen.

Das hat es jetzt etwas besser gemacht.

Hier zu sehen, wenn Youtube es freigegeben hat:
https://youtu.be/DMcSTzxDDRY

Edit:
Hier war das Bild leicht wieder aus dem Sync gelaufen... Kommt dann irgendwann wieder klar zurück.
Dieser Abweichung zu folgen, ist im Moment noch die wichtigste Sache...
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004

Dieser Beitrag wurde am 01.03.2024 um 18:51 Uhr von MarioG77 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
191
01.03.2024, 20:44 Uhr
Ordoban



Das Bild springt als Ganzes. Der verliert also nicht Zeilen mittendrin (wie ich das schon öfters hatte), sondern schon ganz am Anfang. Und es sieht so aus, als wenn es immer nur eine einzige Zeile ist.

Ich würde so vorgehen:
1. mehr GPIO's zum debuggen auf Ausgang schalten
2. Diese GPIO's im ISR einen ganz kurzen Impuls machen lassen wenn
a: der kurze Impuls erkannt wird
b: der lange Impuls erkannt wird
3. Mehrmals die Signale mit dem Logikanalyzer angucken
Wird jeder kurze Impuls immer erkannt? Oder vielleicht eine Fehl-Erkennung? Der kurze Impuls zählt die Zeilennummer hoch.
Wird der letzte lange Impuls richtig erkannt? Der setzt die Zeilennummer auf 0.

Ich hab schon eine Idee wie wir die Sache mit dem Sync besser bekommen, dazu muss aber erstmal die Zeilen-Zählung wieder richtig laufen.

Das Ganze läuft auf 80MHz Samplerate hinaus. Das können wir auch für den PC1715 schaffen, aber dazu dürfen wir nicht 8 Bit, sondern nur 4 Samplen. Dann passt die doppelte Länge in den DMA-Buffer, das sollte reichen. Heißt allerdings, dass wir beim Kopieren in den VGA-Buffer mit Bitverschiebungen arbeiten müssen. Das ist dann wieder zu Zeitaufwändig, wir krigen die Zeile nicht so schnell kopiert, wie eine neue kommt. Das ist aber eigendlich gar nicht schlimm. Wir müssen schließlich nicht die 50Hz Framerate schaffen. (oder wieviel auch immer der 1715 oder 7100 machen) Es reichen auch 25 oder 12,5 Hz. Bei jedem Frame nur jede 2. oder 4. Zeile Samplen, dann ist genug Zeit zum kopieren, und beim nächsten Frame dann andere Zeilen.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
192
01.03.2024, 21:29 Uhr
MarioG77

Avatar von MarioG77

Auf dem Video kommt es nicht rüber, aber es passiert auch weiter unten, die oberste Zeile ist bei so was auch fix.
Aber was die Framerate angeht, bin ich voll bei dir. Den Gedanken hatte ich auch bereits.
--
Gruss Mario

Betriebsbereit: KC85/3, 2x [KC85/4, D004+Floppy], PPC512, PC1512, 2xEC1834, Soemtron 286, 3x PC1715, picoAC1
Zu restaurieren: 1x D004
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek