008
Heute, 00:37 Uhr
ManiB
|
Das hier sagt die KI (grok.com) zu meinem Problem:
### Analyse des Problems basierend auf dem Schaltplan und dem Test-Szenario
Vielen Dank für die detaillierten Beschreibungen, die Bilder und das Schema! Ich habe das alles analysiert: Das erwartete Muster (Bild 1) ist ein kompaktes, dichtes Gitter aus "9"-Zeichen (wahrscheinlich 80x25 Textmodus oder ähnlich, gefüllt mit ASCII 0x39 = '9'), ohne Abstände oder Lücken. Dein beobachtetes Muster (Bild 2) zeigt horizontale Leerzeichen (Abstände zwischen den 9ern, z. B. "9 9 9 9..." statt "999999") und vertikale Leerzeilen (fehlende Zeilen mit Inhalt). Der gelbe Rahmen und die Statuszeile (Pico-generiert) sind korrekt, also liegt das Problem **nicht am Pico-VGA-Overlay**, sondern am Z80-generierten Inhalt – speziell am Datenpfad vom Z80-Bus zum VGA-Char-Generator.
Der Test mit RN2 (Widerstandsnetzwerk, das den Datenbus auf 0xFF zieht) simuliert einen "No-OP"-Loop: Die Z80 liest wiederholt 0xFF (was zu RST 38h führt), springt zu Adresse 0x0038 (vielleicht ein Vektor in EPROM/RAM, der einen Write-Loop mit '9' startet), pusht 0x0039 auf Stack und loop't. Das erzeugt ein stabiles Fill-Muster. Deine Fehlfunktion deutet auf **unvollständigen oder verzerrten Datenübertragung** hin – typisch für Bit-Fehler im Datenbus (D0–D7), Timing-Probleme oder Bus-Isolation.
**Kurze Zusammenfassung der wahrscheinlichen Ursache:** Ja, eine kalte Lötstelle ist eine starke Kandidatin (besonders da der Test spannungsfrei vorbereitet wurde und ICs erst später gesteckt werden). Aber es könnte auch eine falsche IC-Orientierung (z. B. umgedrehtes 74HCT) oder ein mechanisches Problem sein. Ich priorisiere basierend auf dem Schema (das ich visuell zerlegt habe: Z80 ? Bus-Transceiver/Latches ? Adress/Daten-Decoder ? VGA-DAC/Shift-Register).
### Schritt-für-Schritt-Analyse des Signalpfads (basierend auf dem Schema) Ich habe das Schema in Abschnitte unterteilt (Z80-zentriert, Bus, VGA-Bereich). Der kritische Pfad für dein Muster:
1. **Z80-Ausgabe (Datenbus D0–D7)**: - Z80-Pins: AD0–AD7 (multiplexed Addr/Data, aber im Schema de-muxed via Latches). - RN2 zieht D0–D7 auf +5V (über Pull-ups, typ. 10k?), simuliert 0xFF-Read. - **Potenzielle Fehler hier:** Wenn RN2 nicht alle Pins gleichmäßig zieht (z. B. ein Pin kalt gelötet), liest die Z80 nicht 0xFF, sondern z. B. 0xF7 (Bit 1=0) ? anderer OPCODE ? kein Loop, verzerrtes Muster (z. B. '9' wird zu ' ' oder ähnlichem ASCII mit fehlendem Bit).
2. **Bus-Transceiver und Latches (74HCT245, 74HCT373)**: - 74HCT245 (z. B. U10/U11): Bidirektionaler Buffer zwischen Z80 und Peripherie (EPROM, RAM, VGA). - OE (Output Enable) und DIR (Direction) gesteuert von /MREQ, /IORQ, CLK. - 74HCT373 (Latches, z. B. U4, U12 für Data-Latch): Speichern Daten für VGA-Shift. - **Fehlerwirkung:** Kalte Lötstelle auf D0–D7-Pins ? einzelne Bits "schweben" oder stuck-at-0/1 ? Leerzeichen (fehlende Pixel in Char-Scan, z. B. Bit 3/5 für Horizontale).
3. **VGA-Generierung (Shift-Register, DACs, Sync)**: - Daten gehen zu Shift-Registrern (z. B. 74HCT595 oder ähnlich, siehe GP0–GP7 am Pico? Warte, Schema zeigt 74HCT164/595-ähnliche für Serial-Shift zu R/G/B-DACs). - Char-Generator: Wahrscheinlich implizit via EPROM (U15?) oder dedizierter ROM für 8x8-Font; Datenbus füttert Pixel-Rows. - HSync/VSync vom Pico (korrekt, da Rahmen ok), aber Zeilen-Addr via Z80-A0–A2? (für Char-Row). - **Fehlerwirkung:** Horizontale Lücken ? fehlende Data-Bits (z. B. D2/D4 für Pixel in '9'-Font). Vertikale Leerzeilen ? Timing (CLK zu langsam) oder fehlende Addr-Bits (A8–A12 für Screen-Offset), was Zeilen skippt.
4. **Clock und Timing**: - CLK von 74HCT74 (Divider) oder Pico-GPIO (GP_CLK). - Wenn CLK kalt (z. B. an U3/U6), verzögert Shift ? verzerrte Zeilen (Leerzeilen).
**Zusammengefasst: Das Muster deutet auf 1–2 fehlende Data-Bits hin (horiz. Lücken) + ein Timing/Addr-Offset (vert. Lücken). Nicht der gesamte Bus, da einige 9er erscheinen.**
### Wahrscheinliche Ursachen und Priorisierung (Top 5, fokussiert auf kalte Lötstellen) Basierend auf Häufigkeit in solchen Retro-Z80/VGA-Projekten (ähnlich RC2014 oder Homebrew-CPUs) und deinem Schema:
| Priorität | Verdächtiges Bauteil/Verbindung | Warum? (Fehlerwirkung) | Test-Vorschlag (spannungsfrei zuerst) | |-----------|---------------------------------|------------------------|---------------------------------------| | **1 (Hoch)** | **RN2 (Widerstandsnetzwerk)**: Lötstellen zu D0–D7 (Pins 1–8). | RN2 ist Test-spezifisch; kalte Stelle ? unvollständiger Pull-up (z. B. D1 oder D3=0V statt 5V) ? Z80 liest falschen Code ? '9' (0x39) wird zu 0x19/0x31 ('!' oder '1' mit Lücken im Font) oder Spaces. Passt perfekt zu Leerzeichen. | Multimeter: Von jedem RN2-Pin zu GND messen (soll ~10k? Pull-up). Visuell: Reflow mit Heißluft/Lupe auf Blasen/Krater. | | **2 (Hoch)** | **74HCT245 (Bus-Transceiver, z. B. U10/U11)**: Lötstellen auf D0–D7 (Input/Output-Pins 2–9/11–18). Oder falsche Orientierung (Notch oben?). | Buffer isoliert Bus; kalte Pin ? Bit drop-out ? verzerrte Daten zum VGA-Latch. Umgedreht: Pins vertauscht, Bus invertiert. | Kontinuitätstest: Von Z80-AD0–7 zu 245-Pins (soll <1?). Notch prüfen (Pin1 links). | | **3 (Mittel)** | **74HCT373 (Data-Latch, z. B. U4/U12)**: Lötstellen auf D0–D7 (Pins 3–10) oder LE (Latch Enable, Pin 11). | Latch speichert für VGA-Shift; kalte D-Pin ? stuck Bit=0 ? Font-Lücken (z. B. Bit 0 fehlt ? ungerade Pixel weg). LE kalt ? kein Update, statisches Muster. | Kontinuität: D-Eingang zu Ausgang (Q-Pins). LE zu /MREQ-Verbindung prüfen. | | **4 (Mittel)** | **Datenbus-Traces (D0–D7)**: Lötstellen an Via/Pads nahe Z80 oder VGA-Bereich (rechts unten im Schema). | Trace-Bruch/kalte Pad ? einzelner Bit verloren. Häufig bei dichten SMD-Traces. | Multimeter-Ende-zu-Ende: Z80-ADx zu VGA-Input (soll <5?). Oszi (bei Power): Rechteck-Signale auf allen D-Lines bei Loop. | | **5 (Niedrig)** | **CLK-Generator (74HCT74/U3, oder Pico-GP_CLK)**: Lötstelle auf CLK-Ausgang (Pin 6/8). | Langsamer/aussetzender CLK ? unvollständige Zeilen-Shift ? Leerzeilen (vertikale Sync-Offset). | Kontinuität: CLK-Quelle zu Z80-CLK (Pin 6). Bei Power: Freq messen (soll ~14MHz/4 für Z80). |
**Andere (weniger wahrscheinlich, aber checken):** - Falsche IC-Drehung: Alle 74HCT (245/373/74) haben Notch/Einstich – prüfe mit Lupe (du sagst "letzte Chance", also vielleicht übersehen). - VCC/GND: Kalte +5V zu ICs (z. B. Pin 16/8) ? Brownout, unzuverlässige Bits. - EPROM (U15): Wenn adressiert, kalte A0–A12 ? falscher Vektor-Code.
### Nächste Schritte zum Debuggen (sicher und systematisch) 1. **Spannungsfrei prüfen (wie du planst):** - Lupe/Endoskop: Alle Lötstellen um RN2, 74HCT245/373 und Datenbus-Traces inspizieren. Suche nach "Vulkanen" (zu viel Lötzinn), Kälte (glänzend/uneben) oder Brücken. - Multimeter: Kontinuität auf obigen Pfaden (Tabelle). Auch Pull-ups von RN2 zu +5V. - IC-Orientierung: Notch bei allen 74HCT nach oben (Schema-Marken prüfen).
2. **Unter Power (Vorsicht: ESD-Matte!):** - Ohne ICs: +5V anlegen, RN2-Effekt messen (D0–D7 ~5V). - Mit ICs (Pico/Z80/74HCT): Oszi/Multimeter auf D0–D7 während Loop (erwarte ~5V DC bei FF-Sim). Wenn Bit low: Trace zurückverfolgen. - VGA-Scope: R/G/B-Signale (an DACs) auf Pixel-Gaps checken. - Code-Änderung: Im EPROM 0x0038 hartcodieren für Fill – wenn Muster ok, liegt's am Bus-Read.
3. **Schnelle Fix-Ideen:** - RN2 neu löten (günstigstes Test: Entlöten, reflow, neu einsetzen). - Wenn kalte Stelle bestätigt: Heißluft (300°C, 10s) oder Flussmittel + Lötkolben. - Backup: Temporär Jumper von +5V zu verdächtigen D-Pins (simuliert RN2).
Das sollte den Fehler eingrenzen – wahrscheinlich RN2 oder 74HCT245, da der Bus der "Engpass" ist. Wenn du Messwerte (z. B. "D2 ist 0V") oder ein Foto der kalten Stelle teilst, kann ich präziser eingrenzen. Viel Erfolg, das klingt nach einem coolen Pico-Z80-VGA-Projekt – lass updaten, wie's läuft! |