Hallo!
Ich mir hier einen Z80 SBC auf dem Breadboard aufgebaut und teste gerade
die Komponenten durch. Die PIO macht was sie soll. Bei der CTC hab ich
einige Probleme. Entweder sehe ich den Wald vor lauter Bäumen nicht
oder...
Bevor ich allerdings mit der SIO weitermache, würde ich gerne dieses
Problem lösen.
Vielleicht hat einer der Z80 Spezialisten kurz Zeit über den Mini-Code
(umso peinlicher) zu sehen. Vielleicht hab ich wirklich was übersehen.
Nur kurz zum Aufbau: Auswahl der IO-Bausteine erfolgt über zwei
Adressleitungen und einen 74HC138 (belegt mit A2, A3 und GND). Für die
CTC ergibt sich die Adresse 0Ch als Basis. Aber hardwareseitig wüsste
ich nicht, wo der Fehler sein könnte zumal die PIO funktioniert und
analog angeschlossen ist.
Hier der Code:
Harald N. schrieb:> Vielleicht hab ich wirklich was übersehen.
Du hast nicht erwähnt, was passieren soll und was stattdessen
passiert.
> Bei der CTC hab ich einige Probleme.Welche ?
Rufus Τ. F. schrieb:> Harald N. schrieb:>> Vielleicht hab ich wirklich was übersehen.>> Du hast nicht erwähnt, was passieren soll und was stattdessen> passiert.>>>> Bei der CTC hab ich einige Probleme.>> Welche ?
Aja, stimmt. Naja es steht im Code.
Soll: Kanal 1 der CTC soll einen Takt von ca 5,9 kHz ausgeben.
Problem: Tatsächlich passiert an der CTC nichts...
A. K. schrieb:> Schon versucht, den Software Reset rauszunehmen, oder getrennt von der> Channel-Control durchzuführen?
Jetzt gerade beides versucht. Hat leider nichts gebracht...
R. M. schrieb:> Soweit ich mich erinnern kann, kommen aus den CTC-Übertragsausgängen,> nur relativ schmale Nadeln raus.> Nicht das vielleicht doch, alles ok ist...
Im Logik-Analyzer sollte ich den Takt doch sehen. Solange das System
läuft sollten dort viele "Nadeln" mit 5,9kHz erscheinen.
Harald N. schrieb:> Ja. Zuerst das Steuerwort, danach die Zeitkonstante.> Ich hänge mal ein Foto der CTC Beschaltung an.
EDIT: Die vier CLK/TRG-Eingänge und der CLK-Eingang sind alle verbunden
und mit dem Systemtakt verbunden.
Eins noch. Ich hatte die Schaltung vorher mit NMOS-Bauteilen aufgebaut.
Da hatte ich das gleiche Problem. Ich dachte der CTC sei kaputt. Deshalb
verwende ich jetzt CMOS-ICs. Und es ist doch relativ unwahrscheinlich
das beide CTCs kaputt sind!?
karadur schrieb:> Ich denke dein Steuerwort sollte 0x03 sein. Continous operation
Das zusätzliche Bit Nummer 2 sagt ja nur, dass ich als nächstes die
Zeitkonstante setzen will.
Harald N. schrieb:> Die vier CLK/TRG-Eingänge und der CLK-Eingang sind alle verbunden> und mit dem Systemtakt verbunden.
Wenn ich das Mostek MK3882 Datenblatt richtig interpretiere darf der
Takt an CLK/TRG maximal die halbe CLK Frequenz haben.
Keine Ahnung ob das Problem damit zusammenhängt.
Dieter W. schrieb:> Harald N. schrieb:>> Die vier CLK/TRG-Eingänge und der CLK-Eingang sind alle verbunden>> und mit dem Systemtakt verbunden.>> Wenn ich das Mostek MK3882 Datenblatt richtig interpretiere darf der> Takt an CLK/TRG maximal die halbe CLK Frequenz haben.>> Keine Ahnung ob das Problem damit zusammenhängt.
Davon hab ich noch nichts gehört, werde ich aber versuchen.
Dieter W. schrieb:> Wenn ich das Mostek MK3882 Datenblatt richtig interpretiere darf der> Takt an CLK/TRG maximal die halbe CLK Frequenz haben.
Als Timer programmiert wird der Systemtakt div 16 oder div 256
verwendet, nicht der externe Eingang.
A. K. schrieb:> Dieter W. schrieb:>> Wenn ich das Mostek MK3882 Datenblatt richtig interpretiere darf der>> Takt an CLK/TRG maximal die halbe CLK Frequenz haben.>> Als Timer programmiert wird der Systemtakt div 16 oder div 256> verwendet, nicht der externe Eingang.
So hab ich das auch verstanden. Hab auch den systemtakt von den trigger
Eingängen weggenommen. Geht trotzdem nicht. Ich hab keine Ahnung mehr,
was ich noch probieren soll. Hab mir jetzt noch eine dritte ctc bestellt
(z84c3006). Dann werd ich weitersehen. Da kann ich dann auch mit 6 MHz
versuchen....
also lt. Zilog DB sollte
Steuerwort 0x07 passen und der timer mit Schreiben der Zeitkonstante
starten
der Ausgangspuls an cz/to ~1.5 sysclk Zyklen sein
die Frequenz an clk/trg max sysclk/2 sein
möglicher Weise die CS vertauscht? Initialisiere mal alle 4 Kanäle ...
Edit: war vorher mit den Bits verrutscht.
Also ich bin mir ziemlich sicher, dass die Programmierung richtig
ist....
Hab zwischenzeitlich auch versucht den ctc als counter zu programmieren.
Zur Sicherheit mit dem kleinsten verfügbaren takt (143 Hz von 74hc4060).
Geht auch nicht.....
Mit der buslast wird das doch noch nichts zu tun haben?
Harald N. schrieb:> Mit der buslast wird das doch noch nichts zu tun haben?
Statt andere mit Fragen zu plagen, die sie nicht beantworten können,
wärs höchste Eisenbahn, mal den kompletten Schaltplan zu präsentieren.
Harald N. schrieb:> Hallo!>> Ich mir hier einen Z80 SBC auf dem Breadboard aufgebaut
Ich glaube, dazu müsste er seinen Schädel, auf einen Scanner legen. ;)
Versuche mal direkt nach ORG $0
eine richtig lange Verzögerung (100ms ?).
Wenn der Z80 aus dem Reset erwacht, dann heisst das
nicht, das auch die Peripherie schon wach ist ;-)
BTDT
Ausserdem solltest Du dem NMI eine Routine spendieren,
denn der lässt sich nicht abschalten.
Noch etwas zur Info:
Sorge für einen definierten Reset bei Unterspannung,
der Z80 bleibt sonst gnadenlos stehen.
Harald N. schrieb:> Den hab ich leider nur als Skizze auf Papier. Da werdet ihr mich sicher> erwürgen wenn ich das präsentiere...
Aber sicher. Es besteht ein gewisses Risiko, dass du das nicht
überlebst. Aber wenn du Antworten willst, wirst du das Risiko wohl
eingehen müssen. Oder, noch besser, ein entsprechendes Programm nutzen,
um ihn lesbar zu machen. Du hast die Wahl ;-)
Ich hab gerade mal einen alten Programmschnipsel ausgegraben bei dem der
CTC als Taktgenerator für einen UART verwendet wird.
Da steht in der Init ein Steuerwort von 0x15 - keine Ahnung was das
jetzt im Einzelnen bedeutet.
Naja, die wichtigste Frage wird wohl sein, ob du da Bustreiber für Daten
oder Adressbus benutzt, die unzulässige Timings produzieren.
Wenn das ein SBC ist, wo der Z80 ohne Buffering alles selber antreibt,
wird es wohl daran weniger liegen. Ich halte es aber auch für eine gute
Idee, einfach mal alle Kanäle zu initialisieren und die Signale zwischen
CTC, PIO und CPU durchzupiepsen.
Dieter W. schrieb:> Da steht in der Init ein Steuerwort von 0x15 - keine Ahnung was das> jetzt im Einzelnen bedeutet.
Das würde zumindest heissen, das die Jungs keinen Softreset setzen.
Der CEPAC-80 (TMPZ84C015) treibt die CLK Inputs über einen Teiler von 13
aus 4 MHz an und die CTCs im TMPZ funktionieren zumindest.
Hier noch ein Auszug aus dem CEPAC-80 Monitor. CTC3 wird hier zur
Baudratenerzeugung benutzt. Hier der init aus dem alten Monitor der
Kiste:
1
.equ ctc3 , h'13
2
; a holds value between 1 and 6 for selecting the baudrate
3
initbd: ld d,h'0
4
ld e,a
5
ld hl,baudtab
6
add hl,de
7
ld a,(hl)
8
ld c,ctc3
9
ld b,b'01000101
10
out (c),b
11
out (c),a
12
call inisio
13
ret
14
15
baudtab: .db h'0
16
.db d'175
17
.db d'143
18
.db d'128
19
.db d'64
20
.db d'32
21
.db d'16
Mögl. ist es wichtig, das wirklich in zwei aufeinanderfolgenden Befehlen
geschrieben wird. Schlagt mich nicht wg. der Syntax. Das ist ein uralter
Assembler, dessen Name ich verdrängt habe.
karadur schrieb:> Kann ich aber leider nicht testen, mein Z80 ist schon 20 Jahre in Rente
Ich habe noch Platinen mit CTC, aber es wäre schade um die Arbeit den
Code zu analysieren: gerade ist hier wieder ein Moderator unterwegs,
meine Posts ohne jeden erkennbaren Grund zu löschen. Vielleicht habe ich
einfach zu viele Antworten gepostet und soll in Zukunft die Schnauze
halten, wer weiss das schon, Begründung wird ja nie gegeben. Jedensfalls
hat es mit Netiquette nicht das geringste zu tun.
Tut mir leid und Tschüss.
Georg
georg schrieb:> karadur schrieb:>> Kann ich aber leider nicht testen, mein Z80 ist schon 20 Jahre in Rente>> Ich habe noch Platinen mit CTC, aber es wäre schade um die Arbeit den> Code zu analysieren: gerade ist hier wieder ein Moderator unterwegs,> meine Posts ohne jeden erkennbaren Grund zu löschen. Vielleicht habe ich> einfach zu viele Antworten gepostet und soll in Zukunft die Schnauze> halten, wer weiss das schon, Begründung wird ja nie gegeben. Jedensfalls> hat es mit Netiquette nicht das geringste zu tun.>> Tut mir leid und Tschüss.>> Georg
Dabei bist gerade du der Profi schlechthin...
Hab doch noch eine ctc zum testen gefunden (die sicher OK ist). Läuft
nicht. Irgendwas bei der Hardware muss ich übersehen haben...
georg schrieb:> gerade ist hier wieder ein Moderator unterwegs,> meine Posts ohne jeden erkennbaren Grund zu löschen ...
In diesem Faden ist kein einziger von einem Mod gelöschter Beitrag.
tommy schrieb:> @ Harald N.:>> Hast Du meinen Post von 21:19 Uhr gelesen?
Hab ich.
NMI ist auf +5V und funkt somit nicht dazwischen.
Hab eine Reset Beschaltung eingebaut, die zu Beginn verzögert und auch
bei brown-out reagiert.
Nachdem die PIO wach ist, denke ich, dass die CTC auch bereit ist. Die
Verzögerung kann ich aber trotzdem noch versuchen.
Moin, -
hast Du vielleicht A0/A1 vertauscht? Gucke bitte mal,
ob Du ein Signal an pin 7 bis 9 (T0/ZC Kanal 0-2)
siehst.
Die Initialisierung
> LD A, $07 ; Steuerwort, Timer, Teiler 16> OUT (CTC1), A ; Channel 1> LD A, $1A ; Zeitkonstante (26d)> OUT (CTC1), A ; Channel 1
sieht OK aus.
Gruesse
Th.
@Harald N
Prinzipell würde ich erst mal die ganze Interrupt Geschichte (/INT und
IEI/IEO) nicht für die ersten Tests verkabeln. Das verkompliziert die
Schaltung auf jeden Fall. Mache ab besten den Aufbau schrittweise.
Nicht, daß dir die SIO die CTC lahmlegt.
Gruß Jörg
Joerg F. schrieb:> @Harald N>> Prinzipell würde ich erst mal die ganze Interrupt Geschichte (/INT und> IEI/IEO) nicht für die ersten Tests verkabeln. Das verkompliziert die> Schaltung auf jeden Fall. Mache ab besten den Aufbau schrittweise.> Nicht, daß dir die SIO die CTC lahmlegt.>> Gruß Jörg
Das wäre noch eine Möglichkeit. Obwohl die PIO hat die niedrigste
Priorität und funktioniert...
Mal schauen ob ich heute noch zum basteln komme...
Harald N. schrieb:> Nur kurz zum Aufbau: Auswahl der IO-Bausteine erfolgt über zwei> Adressleitungen und einen 74HC138 (belegt mit A2, A3 und GND).
Hast du /CS des CTC mit IORQ verknüpft? Ich sehe keine Schaltung dazu
hier im Beitrag.
Harald N. schrieb:> A0/A1 passt> Es geht ja gerade darum, dass an den Ausgängen kein Signal rauskommt. 0V
Wie misst Du das Signal? Der TO/ZC bei der Z80-CTC ist ein Puls-Signal,
1.5 x Systemtakt (bei Dir ca. 0,5 mikrosekunden). Danach ist TO/ZC
wieder
auf Null.
Mein Z80-System (4MHz) macht 0.375 Mikrosekunden Pulse, die Init-
Sequenz ist:
;; setup CTC
;; int OFF, timer ON, prescaler = 16, don't care ext TRG edge,
;; start timer on loading constant, time constant follows,
;; sw-rst, this a ctrl-command
--> ld a, b00000111
Gruesse
Th.
Joe G. schrieb:> Hast du /CS des CTC mit IORQ verknüpft? Ich sehe keine Schaltung dazu> hier im Beitrag.
Doch, IORQ geht an den E1 des 138 Adressdecoders.
Me muss m1 nicht an den Decoder?! Warum?
Iorq am Decoder ist nicht vorhanden.
Am Ausgang soll bei der Programmierung nicht nur ein puls kommen sondern
eine pulsfolge von 5,9 kHz. Das ist die Eigenschaft des timers bei der
Programmierung.
Rücklesen müsste ich mal probieren. Hab allerdings noch keinen Monitor
am System.
Harald N. schrieb:> Rücklesen müsste ich mal probieren. Hab allerdings noch keinen Monitor> am System.
Du hast aber ein PIO; mach da einfach 8 LEDs ran.
Vielleicht hilft das Folgende, Programmschnipsel aus den 80er Jahren für
Z80 und CTC. Auf Hassposts wegen des Programmierstils gehe ich bestimmt
nicht ein, aber die Software hat mehr als 20 Jahre lang funktioniert.
Wenn ich die Steuerworte sehe ist das eh das, was ich auch mache. Nur
verwendest du prescaler 256 und schaltest interrupts ein...
Und 47h müsste der Zähler sein. Habe ich auch schon versucht.
Würde mir jemand von euch einen Schaltplan mit CPU, ctc, pio, sio, Rom,
RAM zur Verfügung stellen, den ihr selbst als funktionierende getestet
habt. Idealerweise gleich mit Testprogramm...
Dann finde ich Vlt durch Vergleich den Fehler.
Ist der 1. IC in der Interruptkette der CTC? Liegt der IEI-Eingang des
1. IC in der Interruptkette auf definieretm Pegel? Das könnte das
Verhalten nämlich erklären.
Bevor alle Stricke reisen, mal ne ganz blöde Idee.
Breadboard neu?
Sicher das alle ICs auch wirklich richtig an der Stromversorgung hängen
und nicht fremd gespeist werden?
Es gib einige Breadboard bei denen die Stromschienen NICHT durchgängig
sind, sonder auch in größere Segmente geteilt sind. Erkennbar an einem
etwas größerem Abstand, zwischen den einzelnen Blöcken.
EinWort schrieb:> IEI muss bei allen Z80-ICs immer beschaltet werden, auch wenn man keine> Interrupts nutzt
Macht doch keinen Sinn? Wie wollen sich die ICs beeinflussen wenn sie
nicht über die daisy chain verbunden sind. Ausserdem ist der CPU Int auf
high gelegt
Harald N. schrieb:> Mann, dann würden die entsprechenden Signale von nicht dort ankommen.> Ich kann richtig messen....
Wenn Hardware und Software korrekt sind, aber es trotzdem nicht
funktioniert, dann sind Hardware oder Software nicht korrekt, oder es
funktioniert. ;-)
Also nicht über blöde Fragen klagen.
Harald N. schrieb:> Mann, dann würden die entsprechenden Signale von nicht dort ankommen.> Ich kann richtig messen....
Ich wollte die wahrlich nicht zu nahe treten, nur bin ich nicht vor Ort
und es ist mittlerweile ziemlich viel Prosa. Und wie geschrieben "Bevor
alle Stricke reisen, mal ne ganz blöde Idee."
Bin doch nur ein gebranntes Kind. :)
A. K. schrieb:> Harald N. schrieb:>> Mann, dann würden die entsprechenden Signale von nicht dort ankommen.>> Ich kann richtig messen....>> Wenn Hardware und Software korrekt sind, aber es trotzdem nicht> funktioniert, dann sind Hardware oder Software nicht korrekt, oder es> funktioniert. ;-)>> Also nicht über blöde Fragen klagen.
Aber am breadboard befindet sich genau die schaltung, die ich auf Papier
habe. Und da sind anscheinend keine Fehler drinnen.
Eine selbstgetestete Schaltung von euch hab ich noch nicht.
Harald N. schrieb:> EinWort schrieb:>> IEI muss bei allen Z80-ICs immer beschaltet werden, auch wenn man keine>> Interrupts nutzt>> Macht doch keinen Sinn? Wie wollen sich die ICs beeinflussen wenn sie> nicht über die daisy chain verbunden sind. Ausserdem ist der CPU Int auf> high gelegt
Habs trotzdem versucht. Ohne Erfolg.
@all: ich will niemanden zu nahe treten
Harald N. schrieb:> Aber am breadboard befindet sich genau die schaltung, die ich auf Papier> habe.
Dieser GLAUBE, ist wohl der häufigste Fehler in Bezug auf Breadboards!
Teo D. schrieb:> Harald N. schrieb:>> Aber am breadboard befindet sich genau die schaltung, die ich auf Papier>> habe.>> Dieser GLAUBE, ist wohl der häufigste Fehler in Bezug auf Breadboards!
Hab jede einzelne Verbindung gemessen. Mehrmals. Von ausgangspin zu
endpin.
Harald N. schrieb:> Harald N. schrieb:>> EinWort schrieb:>>> IEI muss bei allen Z80-ICs immer beschaltet werden, auch wenn man keine>>> Interrupts nutzt>>>> Macht doch keinen Sinn? Wie wollen sich die ICs beeinflussen wenn sie>> nicht über die daisy chain verbunden sind. Ausserdem ist der CPU Int auf>> high gelegt>> Habs trotzdem versucht. Ohne Erfolg.
Die ICs beeinflussen sich selbst, wenn man Eingänge einfach offen lässt.
Der erste IEI-Eingang in einer Interrupt-Kette muss auf HIGH liegen.
Harald N. schrieb:> Hab jede einzelne Verbindung gemessen. Mehrmals. Von ausgangspin zu> endpin.
Davon bin ich auch ausgegangen. Nur ich kanns halt nich lassen, biss ich
obigen Satz zu lesen bekommen. :/
Also noch mal: Auch das Breadboard selbst mal prüfen, ob da auch alles
wie gedacht verbunden ist.
P.S. und den offenen TRGx-Eingängen auch mal einen Pull-Down nach GND
spendieren. Ich verwende in meinem System den CTC als
Interruptcontroller und habe das ganze vorher auch auf mehrere
Breadboards verteilt aufgebaut bei 10MHz. Lief bis 18,432MHz stabil.
Die beiden Z80-Bibeln waren/sind:
Rodney Zack, Progammierung des Z80
James W.Coffron, Z80 Applications
Habe ich beide im Regal und eben mal reingeschaut.
Die CTC-Kapitel sind leider viel zu lang zum scannen,
aber bei einer gezielten Frage schaue ich gerne mal rein.
Immerhin wird die CTC dort recht ausführlich besprochen.
https://www.booklooker.de/B%C3%BCcher/Angebote/autor=James+W.+Coffron&titel=Z80+Anwendungen
Leider in Gold aufgewogen, vielleicht woanders günstiger...
Jim Beam schrieb:> Die beiden Z80-Bibeln waren/sind:>> Rodney Zack, Progammierung des Z80> James W.Coffron, Z80 Applications>> Habe ich beide im Regal und eben mal reingeschaut.> Die CTC-Kapitel sind leider viel zu lang zum scannen,> aber bei einer gezielten Frage schaue ich gerne mal rein.> Immerhin wird die CTC dort recht ausführlich besprochen.>> https://www.booklooker.de/B%C3%BCcher/Angebote/autor=James+W.+Coffron&titel=Z80+Anwendungen>> Leider in Gold aufgewogen, vielleicht woanders günstiger...
Hab ich beide. Und mein pio und ctc test code stammt genau aus coffrons
Buch ;-)
Und im Grunde auch die schaltung...
Harald N. schrieb:> Würde mir jemand von euch einen Schaltplan mit CPU, ctc, pio, sio, Rom,> RAM zur Verfügung stellen, den ihr selbst als funktionierende getestet> habt. Idealerweise gleich mit Testprogramm...
Dieses System hatte ich Anfang der 80ziger aufgebaut. Habe ich es schon
vor jahrzehnten verschrottet :-(
Joe G. schrieb:> Harald N. schrieb:>> Würde mir jemand von euch einen Schaltplan mit CPU, ctc, pio, sio, Rom,>> RAM zur Verfügung stellen, den ihr selbst als funktionierende getestet>> habt. Idealerweise gleich mit Testprogramm...>> Dieses System hatte ich Anfang der 80ziger aufgebaut. Habe ich es schon> vor jahrzehnten verschrottet :-(
Danke
sumpfpenner schrieb:> Nein, warum auch.
;-)
Harald N. schrieb:> Lest ihr eigentlich auch meine Antworten?
Ich hab schon gelesen, dass Du das Buch hast, aber der Link ist
vielleicht auch für andere interessant... Bist ja nicht nur Du hier
unterwegs.
> Hab jede einzelne Verbindung gemessen. Mehrmals. Von ausgangspin zu> endpin.
Pruefe bitte noch mal, ob die D0-D7 richtig angeschlossen wurde
(direkt CPU <-> CTC). Ich gehe aber davon aus, dass Du mehr als
einmal geprueft hast. Hast Du mal Chip-Enable mit dem Scope
geprueft? Die Schaltung ist so einfach, da muss ein simpler
Fehler sein.
Andere Moeglichkeit: Lese den Counter aus und zeige den Inhalt auf
der PIO an.
http://www.z80.info/homebrew.htm ist Dir bekannt?
Gruesse
Th.
Jim Beam schrieb:> Die beiden Z80-Bibeln waren/sind: ...
Mindestens den Kieser/Meder "Mikroprozessortechnik, Aufbau und Anwendung
des Mikroprozessorsystems U880" würde ich mit dazu zählen.
Du hast nen Bock in Deiner Schaltung, beschwerst Dich das hier „immer
noch niemand“ einen funktionierenden Schaltplan gepostiet hat ( Internet
ist voll davon!) und von Dir gibt es noch immer keine vernünftigen
Bilder vom Schaltungsaufbau.
Stell die endlich mal ein!
Aus dem Gedächtnis, Unterlagen habe ich vor nicht allzu langer Zeit
entsorgt:
Die CTCs sind wohl Sensibelchen, meine CPU-Karte hat nach Umstellung auf
CMOS-Z80 nicht mehr funktioniert, nach Versuchen arbeitete die CMOS-CPU
nur mit MOS-CTCs zusammen zuverlässig (das hing auch vom Hersteller der
CPUs ab). Ich habe daher weitere Karten mit CMOS-Z80CPU, aber mit
Z80BCTC ausgeliefert, das hat immer funktioniert. Den Grund konnte ich
nie finden, aber was solls wenns tut.
Georg
@Harald: Eine Kleinigkeit bei Deiner Handzeichung
IMG_20180806_212309.jpg. Am HC138 bei deiner IO-Logik sollte auf E3 noch
#M1 von der Z80 CPU anliegen, weil bei einem #IORQ/#M1-cycle sollte kein
CS aktiv sein.
EinWort schrieb:> ... weil bei einem #IORQ/#M1-cycle ...
Gibt's so was überhaupt?
M1 ist doch IMHO der instruction fetch, das sollte eigentlich immer ein
Speicherzugriff sein.
EinWort schrieb:> IMG_20180806_212309.jpg. Am HC138 bei deiner IO-Logik sollte auf E3 noch> #M1 von der Z80 CPU anliegen, weil bei einem #IORQ/#M1-cycle sollte kein> CS aktiv sein.
Dachte ich auch erst. Aber da der CTC selbst M1 anliegen hat, weil er
das für den IACK Zyklus benötigt, sollte das nicht erforderlich sein.
Dieter W. schrieb:> M1 ist doch IMHO der instruction fetch, das sollte eigentlich immer ein> Speicherzugriff sein.
IORQ+M1 = IACK. Im 8080-kompatiblen Interrupt-Modus ist das wirklich ein
instruction fetch.
Nebenbei:Für den Fall, dassss die SW ok sein sollTE, würde ich nochmals
überlegen, ob ausreichend Abblock-Cs vorhanden sind und gründlich mit
viel Licht nachsehen, dass keine mikroskopische Zinnbrücke irgendwo
Ärger macht.
oszi40 schrieb:> gründlich mit> viel Licht nachsehen, dass keine mikroskopische Zinnbrücke irgendwo> Ärger macht.
Jo, musste erst letztens, ein Stück Alufolie raus zubbel. :(
georg schrieb:> Die CTCs sind wohl Sensibelchen
Nicht nur die CTC. Die Spec für das Taktsignal wird gern überlesen. Da
muss der High Pegel etwas höher als gewöhnlich sein, Pullup an einem
normalen Ausgang.
Mit Verlaub,
Wäre es nun nicht langsam an der Zeit einen Defekt an der CTC zu erwägen
und die mal auszuwechseln?
Ich pers. hätte das schon sehr viel früher probiert...
Jim Beam schrieb:> Mit Verlaub,>> Wäre es nun nicht langsam an der Zeit einen Defekt an der CTC zu erwägen> und die mal auszuwechseln?>> Ich pers. hätte das schon sehr viel früher probiert...
Das ist die dritte ctc...
Harald N. schrieb:> Mittlerweile habe ich die gesamte Interrupt Beschaltung weggenommen.> Problem bleibt
Die Priorisierung der Interruptanforderungen erfolgt intern über eine
Daisy-Chain. Ob diese Interupt-Kette die richtige Reihenfolge hat oder
sich selbst den Ast absägt?
http://www.vias.org/mikroelektronik/b2_03_z80-ctc_programming.html
Ich denke Harald hat es schon richtig beschaltet. Das Z80 System kann
natürlich auch ohne Interrupt verwendet werden. dazu muss der CTC nur
bei IEI auf High gesetzt werden. IED und /INT bleibt dann offen. Bei der
CPU wird /INT auf High gelegt. Nun kann der CTC natürlich kein Interrupt
mehr auslösen, als Timer muss er jedoch trotzdem arbeiten.
Joe G. schrieb:> Ich denke Harald hat es schon richtig beschaltet. Das Z80 System kann> natürlich auch ohne Interrupt verwendet werden. dazu muss der CTC nur> bei IEI auf High gesetzt werden. IED und /INT bleibt dann offen. Bei der> CPU wird /INT auf High gelegt. Nun kann der CTC natürlich kein Interrupt> mehr auslösen, als Timer muss er jedoch trotzdem arbeiten.
Danke für den Kommentar.
Hast du eine Idee was da los ist?
Was sind denn die Signale CLKO und CLK am CTC?
Der CTC hängt als einziger Baustein mit seinem
Clock input nicht an CLKO, sondern an CLK.
Alle anderen hängen an CLKO.
-Connie
Constanze H. schrieb:> Was sind denn die Signale CLKO und CLK am CTC?> Der CTC hängt als einziger Baustein mit seinem> Clock input nicht an CLKO, sondern an CLK.> Alle anderen hängen an CLKO.>> -Connie
Das ist nur schlampig beschriftet. Clk und clko sind beides der
systemtakt.
georg schrieb:> Die CTCs sind wohl Sensibelchen,
Kann ich nur bestätigen. Ich weiß aber auch den Grund nicht mehr.
Wenn ich die Initialisierungen in meinen vielen Quelltexten durchsehe,
istz immer die Sequenz dabei:
Kanal 0 rückestzen mit 03H
InT-Vector laden (auch wenn kein INT benutzt wird)
Kanal 1 Betriebsart setzen mit Steuerbyte 05H für Zeitgeber
Zeitkonstante z.B. für Baudrate nachladen
Auch wenns nur ein Stochern im Nebel ist, so wäre doch noch die
Möglichkeit, daß der CTC dein Takt nicht so gefällt. Da der Z80
insgesamt auch mit niedriegeren Takte läuft, würde ich dir mal ein
Absenken auf 1MHz oder weniger und einen Taktgenerator auf 74HCT oder
74LS Basis empfehlen. Die 74HC Serie war auch schon bei aderen z80
Projekten der Showstopper.
Gruß Jörg
Joerg F. schrieb:> und einen Taktgenerator auf 74HCT oder 74LS Basis empfehlen.
Hmm. Die Definition des Takteingangs der Z80 Komponenten ist mit TTL und
HCT nicht direkt verträglich, dafür aber mit HC.
Erich schrieb:> HALLO,> was hast du denn für eigenartiges "/Reset" ?> Erst einen MAX690 spendieren, und dessen sauberes Ausgangssignal dann> mit 100nF kaputtmachen??> Und gelegentlich noch kurzschliessen???> Da weiss man nicht, was einem mehr schmerzen soll: Der MAX690, der> Kondensator oder der Taster. Oh' weh'>> Dein Schaltbild hier> Beitrag "Re: Z80 SBC Problem."> https://www.mikrocontroller.net/attachment/372920/IMG_20180806_212238.jpg>> Gruss
Siehe Datenblatt Seite 6
Für einen manuellen Reset gehört der Taster und der 100n genau dorthin.
Harald N. schrieb:> Siehe Datenblatt Seite 6> Für einen manuellen Reset gehört der Taster und der 100n genau dorthin.
Bild Seite 6 ist nicht für MAX690.
Und vermutlich sowieso falsch.
Ist ja kein "open drain" Ausgang.
Mach' den 100 nF einfach mal raus und probiere neu!
Gruss
Harald N. schrieb:> Hast du eine Idee was da los ist?
Ich würde zunächst untersuchen, ob die CTC überhaupt funktioniert.
Also testen ob Timer Mode und Counter Mode funktionieren. Da der Timer
Mode bei dir nicht geht, untersuche mal ob wenigstes der Counter Mode
geht. Im Timer Mode könntest du noch versuchen extern den Counter über
den Trigger zu starten (Bit 3 auf high – Time Trigger). Wenn all das
nicht fruchtet, dann ist etwas mit der Ansteuerung faul. Kannst du den
Takt runtersetzen? Eine Möglichkeit ist noch eine kleine Single-Step
Logik an den Z80 und dann tatsächlich Schritt für Schritt…
Im Anhang meine Schaltung für so eine Logik auf dem Z180.
Hallo,
die benutzte Schaltung des Reset mit Taster und C steht genau so auf
Seite 6 des Datenblattes des Maxim690.
Was ist also daran falsch ?
Gruß,
Michael
A. K. schrieb:> Schon versucht, den Software Reset rauszunehmen, oder getrennt von der> Channel-Control durchzuführen?
Würde ich auch so sehen:
Bit 1 = 1.
Counting and/or timing operation is terminated and the channel is reset.
This is not a stored condition. *The bits in the Channel Control
register are unchanged*. If bits 1 and 2 are set to 1, the channel
resumes operation upon loading a time constant.
Erich schrieb:> HALLO,> was hast du denn für eigenartiges "/Reset" ?> Erst einen MAX690 spendieren, und dessen sauberes Ausgangssignal dann> mit 100nF kaputtmachen??> Und gelegentlich noch kurzschliessen???> Da weiss man nicht, was einem mehr schmerzen soll: Der MAX690, der> Kondensator oder der Taster. Oh' weh'>> Dein Schaltbild hier> Beitrag "Re: Z80 SBC Problem."> https://www.mikrocontroller.net/attachment/372920/IMG_20180806_212238.jpg>> Gruss
Es gibt keine Vorschuss Lorbeeren aber ich denke zu hattest recht. Ich
habe zwar zur Zeit irgendein Monitor Programm drauf, und die schaltung
ist schon längst nicht mehr die, welche ich skizziert habe.
ABER: 100nF raus, Strom an, multimeter frequenzmessung an den to pins
UND da kommt was raus!!!!!
Ich werde am Nachmittag wieder auf meine schaltung umbauen und mein
Testprogramm Rauf laden um das genauer untersuchen zu können.
Und kann mir das jetzt jemand auch erklären. Das reset Signal war
nämlich immer schön auf high.
Und vielen Dank Erich!
Michael A. schrieb:> Hallo,>> die benutzte Schaltung des Reset mit Taster und C steht genau so auf> Seite 6 des Datenblattes des Maxim690.>> Was ist also daran falsch ?>> Gruß,> Michael
Daß das Teil nichts taugt, das ist falsch.
Schaust die hier im Nachbau von Linear Technology (jetzt schon lange zu
Analog Devices gehörend)
http://www.analog.com/media/en/technical-documentation/data-sheets/690ff.pdf
Seite 15,
da erklären sie warum mind. zusätzlich ein 100R rein muß,
und das das Ding sowieso besser durch einen LTC1235 ersetzt gehört.
WEIL der mechanische Reset durch den Taster sonst eben keinen richtigen
Reset macht; da könnte man das Ding gleich weglassen und durch einen
hochohmigen Pullup ersetzen.
MAX690, Seit 9, links unten:
" RESET has an internal 3μA pullup"
Ich krieg' einen (Lach-) Anfall !!
Ein hochohmiger Ausgang, doch open drain.
Entspricht quasi einen > 100 kOhm Widerstand @5V.
MAX690 Seite 6 rechts oben:
"The manual reset switch and
the 0.1μF capacitor connected to the reset bus can be
omitted if manual reset is not needed. "
Das Ding hatte ich selbst nie verwendet, sondern nur immer LTC1232 (den
dann wiederum Maxim als MAX1232 nachgebaut hat).
Wenn er jetzt doch drinbleiben soll, dann bitte das /RESET über 2
hintereinandergeschaltete Cmos Inverter (74HC04) oder noch besser
Schmitt-Trigger 74HC132 ergänzen.
Um dem armen Taster denn 100R spendieren. Seine Goldschicht haste aber
inzwischen schon weggebrannt.
Gruss
@ Harald N. (haraldn)
Freut mich, daß es jetzt klappt.
Dein Versuch hat sich mit meinem Text von 13:46 überschnitten,
wo ich nochmals zu erklären versuchte, warum das mit dem 100 nF falsch,
ja sogar kontroproduktiv ist.
Gruss
Harald N. schrieb:> Und kann mir das jetzt jemand auch erklären. Das reset Signal war> nämlich immer schön auf high.
Ich schätze mal, dass durch den 100n die ansteigende Flanke zu langsam
für den CTC war. Vielleicht hat das DB eine Aussage dazu.
Erich schrieb:> Michael A. schrieb:> Wenn er jetzt doch drinbleiben soll, dann bitte das /RESET über 2> hintereinandergeschaltete Cmos Inverter (74HC04) oder noch besser> Schmitt-Trigger 74HC132 ergänzen.> Um dem armen Taster denn 100R spendieren. Seine Goldschicht haste aber> inzwischen schon weggebrannt.>> Gruss
Funktioniert! Danke nochmal!
Toll das der Hinweis schon längst kam.
Du hast mit Deinem Oszi viel gemessen, aber nicht die grundlegenden
Dinge geprüft.
Autor: Oscale (Gast)
Datum: 08.08.2018 12:31
Reset war auch immer tückisch, der z 80 macht dann was er will.
Nimm nen reset Controller oder eine diskrete Beschaltung..
Oscale schrieb:> Toll das der Hinweis schon längst kam.> Du hast mit Deinem Oszi viel gemessen, aber nicht die grundlegenden> Dinge geprüft.>>>> Autor: Oscale (Gast)> Datum: 08.08.2018 12:31> Reset war auch immer tückisch, der z 80 macht dann was er will.> Nimm nen reset Controller oder eine diskrete Beschaltung..
War ja auch ein ganz konkreter Hinweis....
Harald N. schrieb:> War ja auch ein ganz konkreter Hinweis....
Zumal es ja gar nicht der Z80 selbst war, sondern wohl eher der CTC,
der mit dem Reset-Impuls nicht klar kam.
@Osca[le]: Verwarnung wegen Verstoßes gegen die Forenregeln. Bitte
nur einen Namen pro Thread benutzen.
Jörg W. schrieb:> Zumal es ja gar nicht der Z80 selbst war, sondern wohl eher der CTC,> der mit dem Reset-Impuls nicht klar kam.
Das Problem ist eher, dass jeder Baustein seine individuelle Schwelle
hat, an der er den Reset als erledigt ansieht. Die hochohmige Schaltung
mit dem großen Kondensator und die daraus resultierende langsame Flanke
führen dazu, dass der CTC noch im Reset ist, während der Z80 schon
loslegt. Wenn dann der CTC auch aktiv wird, ist schon alles gelaufen.
Georg G. schrieb:> Die hochohmige Schaltung mit dem großen Kondensator und die daraus> resultierende langsame Flanke führen dazu, dass der CTC noch im Reset> ist, während der Z80 schon loslegt.
Klar, logische Erklärung.
Reset-Controller hatte ich damals nicht, Pushbutton brauchte ohnehin
eine Entprellung (über Flipflop), im Zuge der entsprechenden Logik
hing dann auch gleich der Power-on-Reset mit dran.
tommy schrieb:> Versuche mal direkt nach ORG $0> eine richtig lange Verzögerung (100ms ?).>> Wenn der Z80 aus dem Reset erwacht, dann heisst das> nicht, das auch die Peripherie schon wach ist ;-)> BTDT
Da lag ich also richtig, ohne zu dem Zeitpunkt die
Reset-Beschaltung zu kennen.
Hallo zusammen, habe soeben gelesen das hier sich einige mit dem Z80 und
darum beschäftigen. Hatte auch einige anlauf probleme die ich noch selbt
mit Datenblätter in den Griff bekommen habe.
Um mir ein Bild zu mache war ich auch in Internet auf der suche und
landete
hier. Würde gerne mehr mit meinem Z84c15 System machen und einige Ideen
aufgreifen. Übrigens die CTC läuft jetzt bei mir Teiler auf 9600Baud.
Hansjörg W. schrieb:> Würde gerne mehr mit meinem Z84c15 System machen und einige Ideen> aufgreifen.
Meinst du den Toshiba TMPZ84C015? Da wirst du die Probleme des TE nicht
haben, denn der Toshiba integriert ja so gut wie alle übliche Peripherie
eines Z80 SBC auf einem Chip und damit sind solche Reset Probleme so gut
wie ausgeschlossen.
Ich habe den damals auf dem CEPAC 80 Board der c't benutzt und habe
damit z.B. die Steuerung eines Grundig SAT Receivers ersetzt mit
zusätzlichen Spezialitäten.
Tatsächlich liegen hier noch ein oder zwei unverlötete Chips, die ich zu
verwenden gedachte, bis ich zur MCS51 Fraktion übertrat.
Hi Matthias S.
Ja auf meinen 5 Bords sind 1Toshiba Z84c015-10 und 3 Zilog Z84c150-10
beide verhalten sich gleich. Und eins ist DIN A4 große und gehörte mal
zu einem Auswerte Server da sind noch alle Zilog Bausteine einzelnd
verbaut.
Um überhaupt damit arbeiten zu können, habe ich von meinem IT-Lehrer
damals
CPM bekommen und mit einem MZ80 Sharp System angepasst.
Jetzt kann ich auch Programme selbst auf meinem System schreiben.
Kleiner Projekte habe ich schon gemacht. Würde aber mal ein größeres
angehen.
Hardware wäre dafür genügend da für Änderungen/Erweiterungen.
Derzeit schreibe ich keine Tools um mein System zu optimieren.
Kleine Steuerungen im Haus und für Solar betrieb.
Hi Mathias S.
Habe gerade ein Interrupt-Timer mit CTC3 geschrieben.
Der ein 500µs puls = 2KHz Interrupt auslösen und für Programme
als Timer fungiert. Dabei decrementiere ich im SRAM ein vorgegebenen
Wert jedesmal -1 bis auf 00h (500µs * SRAM = Timer). z.B. für ein
Steppermotor. Diese Tools setze ich dann bei bedarf ein.