Robotrontechnik-Forum

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

Robotrontechnik-Forum » Sonstiges » Z80 CTC verborgenes Feature ? » Themenansicht

Autor Thread - Seiten: -1-
000
11.07.2013, 12:03 Uhr
Mario Blunk

Avatar von Mario Blunk

Hallo Leute !

wird die Z80 CTC als Taktgeber für einen periodischen Interrupt verwendet scheint es einen minimalen Teilerfaktor zu geben, der nicht im Datenblatt vermerkt ist. Hier meine Konfiguration:

1)
Prescaler = 16
Time Constant = 14
Gesamtteiler Faktor also 16x14.
Timer Output 0 erzeugt F=CPU_CLK/(16*14)
Interrupt Signal zappelt ebenso mit F=CPU_CLK/(16*14). Alles gut soweit.

2)
Prescaler = 16
Time Constant = 12
Gesamtteiler Faktor also 16x12.
Timer Output 0 erzeugt F=CPU_CLK/(16*12)
Interrupt Signal zappelt mit F=CPU_CLK/(16*12*2). Also halbe Frequenz von TO0.

3)
Prescaler = 16
Time Constant = 13
Gesamtteiler Faktor also 16x13.
Timer Output 0 erzeugt F=CPU_CLK/(16*13)
Interrupt Signal zappelt unregelmäßig zwischen F=CPU_CLK/(16*12*2) und F=CPU_CLK/(16*14).

Mir ist klar, daß der Gesamtteiler Faktor ein Minimum haben muß, aber im Zilog-Datenblatt steht dazu direkt nichts. Hat jemand da genauere Aussagen z.B. von FWE für den CTC-Clon ?
--
Mein Chef ist ein jüdischer Zimmermann.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
11.07.2013, 22:56 Uhr
kaiOr

Avatar von kaiOr

Die CTC muss mit ihrem Interrupt vermutlich auf die Wartebank. Der Interrupt verfällt nicht einfach, die CTC hält ihn bis /M1 & /IOREQ auf LOW und IEI auf HIGH.

Das Zeitfenster wird für einen zweiten Interruptgeber nicht ausreichen oder der Monitor maskiert von Zeit zu Zeit wegen übergeordneten Aufgaben die Interrupts.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
12.07.2013, 07:21 Uhr
P.S.



@Mario Blunk
Das kann mit den Zeitbedingungen und Prioritätsabläufen zusammenhängen - nachzulesen in "Mikroprozessorsystem der II. Leistungsklasse - Technische Beschreibung CTC U857D" (A4-Heft, 51 S). Ergänzend dazu sollte ebenso der "Kieser/Meder" zu Rate gezogen werden. In den 1980er Jahren wurden auch in der rfe solche Probleme diskutiert - genaueres müßte ich jedoch erst recherchieren.

Das Wissen der Menschheit gehört allen Menschen! -
Wissen ist Macht, wer glaubt, der weiß nichts! -
Unwissenheit schützt vor Strafe nicht! -
Gegen die Ausgrenzung von Unwissenden und für ein liberalisiertes Urheber- und Markenrecht!
PS
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
12.07.2013, 08:16 Uhr
jmueller



@Mario Blunk

Aus meiner Sicht ist die Ursache des Phänomens nicht in der CTC-Hardware
zu suchen, sondern in der Software.
Konkret vermute ich, dass die Laufzeit der Interrupt Service Routine
größer als CPU_CLK/(16*12*2) ist.

Jens

Korrektur:
...größer als CPU_CLK/(16*12) ist.

Dieser Beitrag wurde am 12.07.2013 um 09:39 Uhr von jmueller editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
12.07.2013, 08:29 Uhr
Mario Blunk

Avatar von Mario Blunk


Zitat:
jmueller schrieb
@Mario Blunk

Aus meiner Sicht ist die Ursache des Phänomens nicht in der CTC-Hardware
zu suchen, sondern in der Software.
Konkret vermute ich, dass die Laufzeit der Interrupt Service Routine
größer als CPU_CLK/(16*12*2) ist.

Jens

Aber muß /INT nicht mit geicher Frequenz wie TO0 der CTC toggeln ? Das ist doch unabhängig von der Laufzeit der ISR ?
--
Mein Chef ist ein jüdischer Zimmermann.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
12.07.2013, 08:30 Uhr
Mario Blunk

Avatar von Mario Blunk


Zitat:
kaiOr schrieb
Die CTC muss mit ihrem Interrupt vermutlich auf die Wartebank. Der Interrupt verfällt nicht einfach, die CTC hält ihn bis /M1 & /IOREQ auf LOW und IEI auf HIGH.

Das Zeitfenster wird für einen zweiten Interruptgeber nicht ausreichen oder der Monitor maskiert von Zeit zu Zeit wegen übergeordneten Aufgaben die Interrupts.

Es gibt nur TO0 als Interruptquelle. Keine weitere Peripherie aktiv. TO0 hat also höchste Prio.
--
Mein Chef ist ein jüdischer Zimmermann.

Dieser Beitrag wurde am 12.07.2013 um 08:33 Uhr von Mario Blunk editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
12.07.2013, 08:32 Uhr
Mario Blunk

Avatar von Mario Blunk

Hier der Quelltext in ASM:

http://www.train-z.de/train-z/sw/applications/pwm/dac_1_channel.asm

Binär, Listen und Hexfiles hier:
http://www.train-z.de/train-z/sw/applications/pwm/
--
Mein Chef ist ein jüdischer Zimmermann.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
12.07.2013, 08:34 Uhr
Mario Blunk

Avatar von Mario Blunk


Zitat:
P.S. schrieb
@Mario Blunk
Das kann mit den Zeitbedingungen und Prioritätsabläufen zusammenhängen - nachzulesen in "Mikroprozessorsystem der II. Leistungsklasse - Technische Beschreibung CTC U857D" (A4-Heft, 51 S). Ergänzend dazu sollte ebenso der "Kieser/Meder" zu Rate gezogen werden. In den 1980er Jahren wurden auch in der rfe solche Probleme diskutiert - genaueres müßte ich jedoch erst recherchieren.

Das würde mich interessieren. Eilt aber nicht...
--
Mein Chef ist ein jüdischer Zimmermann.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
12.07.2013, 09:36 Uhr
jmueller



Mario Blunk schrieb:


Zitat:
Aber muß /INT nicht mit geicher Frequenz wie TO0 der CTC toggeln ? Das ist doch unabhängig von der Laufzeit der ISR ?

Da täuschst du dich!
Der CTC-Timer kann erst dann einen neuen Interrupt anmelden,
wenn die Daisy Chain bis einschließlich dem Timer selbst wieder geschlossen ist,
und das passiert erst beim RETI.

Ich habe mal deine ISR überflogen und bin beim schnellen zählen
auf 178 Takte gekommen (wenn bei den bedingten Sprüngen
nicht gesprungen wird, sonst noch mehr).
Plus die 19 Takte für das Anspringen der ISR im IM 2 machen das Minimum
197 Takte, also mehr als 16x12=192.

Für mich hat sich damit meine Vermutung bestätigt.

Jens

Dieser Beitrag wurde am 12.07.2013 um 09:37 Uhr von jmueller editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
14.07.2013, 09:00 Uhr
Mario Blunk

Avatar von Mario Blunk

ok, macht Sinn, ich werde mich da belesen müssen. Danke.

In www.z80.info/zip/z80-interrupts_rewritten.pdf‎ sollte das beschrieben sein.
--
Mein Chef ist ein jüdischer Zimmermann.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
14.07.2013, 11:04 Uhr
Deff

Avatar von Deff

Korrigierter Link von oben, da dessen (Nicht-)Funktion wiedermal nicht getestet wurde -> http://www.z80.info/zip/z80-interrupts_rewritten.pdf
--
Die Politik ist ein Versuch der Politiker, zusammen mit dem Volk mit den Problemen fertig zu werden, die das Volk ohne die Politiker niemals gehabt hätte. (Dieter Hildebrandt)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Sonstiges ]  



Robotrontechnik-Forum

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