NKC Forum
Registrieren | FAQ | Suche | Wer ist online? | Mitgliederliste | Heutige Beiträge | Kalender | Einloggen



Autor Thema: Timerkarte
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 04. Mai 2022 09:44 (#1)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Moin,

beim austesten des Soundeditors von Bernd bin ich mal wieder drüber gestolpert, das wir keinen "vernüftigen" Timer für unsere NKCs haben.

Es gibt zwar einige Zeitquellen, aber das ist doch ein totaler "Mischmasch":

GDP: VB-Signal 50Hz, bei der GDP-FPGA aber 60Hz
GDP-FPGA: programmierbarer Timer (eigentlich das beste System)
Uhr3: "Schräge" Zeiten
CTC-Karte: nur eingeschränkt für nicht Z80-Systeme
CPU6502: 50/100Hz Timer
Mein Uralt NKC: 2x 68901 MFPs

Die Anforderungen für eine Timerkarte sind meiner Meinung nach:
- Programmierbare Frequenzen (zumindest 1000Hz, 100Hz, 50Hz) - evtl. mehr als 1 Kanal
- evtl. one shot
- Interruptfähig (programmierbar)
- Wenige Adressen (2 ?)
- Eigene Taktversorgung (unabhängig vom Systemtakt)
- !!! An jedem NKC lauffähig !!!

Die nötigen ICs sollten nach Möglichkeit einfach zu bekommen sein :o

Für Ideen wie man das am besten umsetzen kann bin ich dankbar.

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: nicht gespeichert
Creep
Voll in Gange
***
ID # 169


  Erstellt am 04. Mai 2022 12:45 (#2)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi Jens,

mit so einer Idee trage ich mich ja auch schon seit ich an der CPU6502 gearbeitet habe. Da hatte ich auch eine andere Idee, hab aber den wenig flexiblen, nicht leicht zu beschaffenden dafür aber sehr stabilen IC gewählt.

Im Grunde würde sich doch hierfür ein ganz simpler ATTINY anbieten. Mit Quarz als Taktgrundlage und minimaler Beschaltung zur Adreßdekodierung und um den Timing-Takt entweder eine Interruptleitung oder (oder auch und) einen frei verdrahtbaren Pin auf der Platine zu bekommen.

Hätte den Vorteil, daß man sich ein Protokoll zur Programmierung der Zeitbasis selbst ausdenken und Fehler/Änderungen später softwaremäßig erledigen könnte.

Paßt natürlich nicht ganz in die originale NKC-Zeit aber das tun CAS-neo und KEY mit PS2 ja auch nicht.

Gruß, Rene

Beiträge: 651 | Mitglied seit: Januar 2017 | IP-Adresse: nicht gespeichert
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 04. Mai 2022 15:25 (#3)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Moin,

ein ATTINY hätte schon was, man müste nur einwenig TTL drumherrum stricken (ähnlich wie bei der CAS-Neo).

Weitere IC (ohne Verfügbarkeit gecheckt):

Z80-CTC: mit den meisten Prozessoren incompatibles Interrupthandling
8253: einfach, aber kein Interrupt
6840: hmm, könnte gehen

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: nicht gespeichert
m.haardt
Voll in Gange
***
ID # 93


  Erstellt am 04. Mai 2022 22:54 (#4)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Wo ist das Problem mit den Frequenzen einer Zweierpotenz bei der UHR3? Funktionieren tut es, habe ich schon ausprobiert, und generell ist der Umgang mit Zweierpotenzen oft einfacher.

Natürlich kann man den 8253 für Interrupts benutzen: Einfach z.B. OUT0 mit einem open collector Inverter mit /INT verbinden. Das war früher so üblich.

Michael

Beiträge: 501 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert
cerker68k
Kennt sich schon aus
**
ID # 219


  Erstellt am 07. Juni 2022 12:24 (#5)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Der XR88C861 auf der SER2 hat wohl auch einen Timer, den man verwenden kann wenn man keine nicht standardmäßigen Bitraten braucht. Scheint nach kurzem Überfliegen in der Mittagspause auf Arbeit recht brauchbar zu sein, wenn auch nur ein Kanal.

Werde ich die Tage mal ausprobieren. Oder taugt der nix und Jens hat das schon ausprobiert? Meines Wissens ist er ja ein SER2-Fan? :D

Ja, funktioniert .. poste demnächst wie genau. Jetzt hatte ich vergessen JADOS zu laden und die Startmeldung hat mir den Programmtext überschrieben.

Achja, und wenn es um Sound geht .. der YM2608 auf meiner SOUND4 hat 2 Timer dafür, einen 16bit in 18µs Schritten und einen 8bit in 288µs Schritten. Creep hat schon eine Prototypenplatine bekommen, allerdings noch mit kleinem Bug (hab beim Schaltplan umzeichnen auf andere Opamps die +/- Eingänge verwechselt), ich glaub wenn der beseitigt ist kann er die in die Replikaplatinenfertigung aufnehmen ;)

Gruß,
Christian

Beiträge: 71 | Mitglied seit: Oktober 2021 | IP-Adresse: nicht gespeichert
DerInder
Fast schon Admin
Seitenadmins
***
ID # 2


  Erstellt am 13. Juni 2022 09:14 (#6)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Moin Christian,

na ja als SER-2 "Fan" würde ich mich nicht unbedingt bezeichnen :D

Die hat allerdings den Vorteil, das die mit jeder CPU-Karte läuft :cool:

Den Timer der SER-2 hab ich allerdings noch nie direkt verwendet. Ich hab ja auch die GDP-FPGA ;)

Aber ich glaube eine einheitliche Timerkarte wäre das beste.

-----------------------
Gruß
-=jens=-

Beiträge: 912 | Mitglied seit: Juni 2004 | IP-Adresse: nicht gespeichert
Waldheini
Ist öfters hier
**
ID # 168


  Erstellt am 26. März 2023 21:17 (#7)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,

ich habe mir einen kleinen Timer zusammen gelötet. Er belegt 4 IO-Adressen und hat nur einen Kanal und ist Interruptfähig (auch programmierbar).
In einer PDF-Datei habe ich ihn mal ein bischen zusammengestoppelt: NKC-Timer.pdf

Viele Grüße
Bernd

PS: Vielleicht ist die Jedec-Datei des PLDs auch noch hilfreich: TIMER.jed

Beiträge: 35 | Mitglied seit: Dezember 2016 | IP-Adresse: nicht gespeichert
andi
Kennt sich schon aus
**
ID # 213


  Erstellt am 27. März 2023 10:22 (#8)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,
Tolle Sache. Aber ich würd es vorziehen wenn der Timer identisch wäre zum GDP-FPGA Timer. Dann würde die bestehende SW 1:1 auf beiden laufen (ohne dass man da in der SW unterscheiden müsste was man gerade hat).
Sollte ja bei einem CPLD ja keine große Sache sein.
-> siehe https://github.com/avg67/nkc/blob/main/VHDL/vhdl/rtl/Timer.vhd
bzw. doku: https://hschuetz.selfhost.eu/ndr/hardware/neu/grafik/gdpfpga/GDP-FPGA-Ports.pdf

Beiträge: 132 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
Waldheini
Ist öfters hier
**
ID # 168


  Erstellt am 27. März 2023 21:39 (#9)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Andi,

ja, das macht sicher Sinn. Die Adressen zu ändern wäre einfach. Die Taktfrequenz von 24MHz habe ich genommen, um möglichst genau an 44100Hz, für die Ausgabe von Wave-Dateien, herran zu kommen. Das passt zwar auch nicht ganz, aber bei 1MHz wäre ich bei 45454Hz, mit 24Mhz 44117Hz.
Bei dem ispLSI1016 ist auch nicht mehr viel übrig geblieben, ich kann nicht einmal das Timer-Register auslesen, dafür reicht es nicht mehr.
Ein Bit beim GDP-FPGA Timer Control-Register ist ja noch frei, damit könnte man den Modus ändern, dann aber mit einem größeren PLD.

Viele Grüße
Bernd

Beiträge: 35 | Mitglied seit: Dezember 2016 | IP-Adresse: nicht gespeichert
andi
Kennt sich schon aus
**
ID # 213


  Erstellt am 28. März 2023 12:55 (#10)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,
das wär ev. was für das TinyFPGA Board. Das kann man wie einen IC auf eine Platine stecken und es ist ein richtiger FPGA (wenn auch ein kleiner) drauf. Kostet ~$20,- (AX2)
https://www.crowdsupply.com/tinyfpga/tinyfpga-ax-bx
Da kriegt man auf jeden Fall sowas wie einen Timer oder SPI rein.

Beiträge: 132 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
Waldheini
Ist öfters hier
**
ID # 168


  Erstellt am 29. März 2023 20:24 (#11)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ich habe mir das mit dem TinyFPGA Board mal angesehen, um den zu nutzen müßte ich mich sicher noch reinarbeiten. Der AX2 scheint auch nicht mehr erhältlich zu sein.
Zu dem Timer der GDP-FPGA: Ist es richtig, den Timer ohne Interrupt nur nutzen kann, wenn der Jumper nicht gesteckt ist?

Beiträge: 35 | Mitglied seit: Dezember 2016 | IP-Adresse: nicht gespeichert
andi
Kennt sich schon aus
**
ID # 213


  Erstellt am 30. März 2023 00:41 (#12)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,
Nein das ist nicht richtig. Du kannst den Timer auch ohne Interrupt nutzen (auch wenn das wenig Sinn macht). Mittels Control-Reg Bit7 (IE) kannst du Interrupts ein/ausschalten.
Die TinyFPGA Boards sind momentan nicht erhältlich - irgendwann hoffentlich schon wieder.

Beiträge: 132 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
Waldheini
Ist öfters hier
**
ID # 168


  Erstellt am 30. März 2023 21:53 (#13)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Das habe ich mir auch gedacht, aber wie kann ich feststellen, das der Timer ausgelöst hat? Ich nehme an, das das Überlauf-Flag nur gesetzt wird, wenn ein Interrupt nicht quitiert wurde. Da stellten sich die nächsten Fragen: Wie quitiere ich einen Interrupt, und wie setze ich das Überlauf-Flag wieder zurück?
Gibt es eine ausführlichere Doku als in https://hschuetz.selfhost.eu/ndr/hardware/neu/grafik/gdpfpga/GDP-FPGA-Ports.pdf, oder habe ich was überlesen?

Viele Grüße
Bernd

Beiträge: 35 | Mitglied seit: Dezember 2016 | IP-Adresse: nicht gespeichert
andi
Kennt sich schon aus
**
ID # 213


  Erstellt am 31. März 2023 01:27 (#14)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Die einzige Doku die noch ausführlicher ist als das pdf ist der VHDL-Code ;)
Das Überlauf-flag wird bei einem Überlauf gesetzt. Parallel dazu wird ein Interrupt ausgelöst der aktiv bleibt bis das überlauf-flag (bit 6) gelöscht wird (=0x81 bzw. 0x01 ohne Interrupt auf das Control-register schreiben). Interrupt quittieren und Überlauf löschen ist das selbe da der Interrupt direkt aus Bit 7 und bit 6 (und-verknüpfung) vom Control-Register abgeleitet wird

Beiträge: 132 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert
Waldheini
Ist öfters hier
**
ID # 168


  Erstellt am 31. März 2023 20:48 (#15)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ok, jetzt gibt es einen Sinn! Also habe ich es nur nicht verstanden. Vielen Dank!

Viele Grüße
Bernd

Beiträge: 35 | Mitglied seit: Dezember 2016 | IP-Adresse: nicht gespeichert



| https://hschuetz.selfhost.eu | Boardregeln | Datenschutzerklärung


Tritanium Bulletin Board 1.8
© 2010–2021 Tritanium Scripts


Seite in 0,017906 Sekunden erstellt
20 Dateien verarbeitet
gzip Komprimierung eingeschaltet
744,76 KiB Speichernutzung