NKC Forum |
Autor | Thema: Timerkarte |
---|---|
DerInder Fast schon Admin Seitenadmins ID # 2 |
Erstellt am 04. Mai 2022 08:44 (#1)
Zitat
PN 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 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 11:45 (#2)
Zitat
PN 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: 666 | Mitglied seit: Januar 2017 | IP-Adresse: nicht gespeichert | |
DerInder Fast schon Admin Seitenadmins ID # 2 |
Erstellt am 04. Mai 2022 14:25 (#3)
Zitat
PN 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 21:54 (#4)
Zitat
PN 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 11:24 (#5)
Zitat
PN 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? 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 08:14 (#6)
Zitat
PN E-Mail
Moin Christian,
na ja als SER-2 "Fan" würde ich mich nicht unbedingt bezeichnen Die hat allerdings den Vorteil, das die mit jeder CPU-Karte läuft 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 20:17 (#7)
Zitat
PN 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: 36 | Mitglied seit: Dezember 2016 | IP-Adresse: nicht gespeichert | |
andi Stammgast ID # 213 |
Erstellt am 27. März 2023 09:22 (#8)
Zitat
PN 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: 183 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert | |
Waldheini Ist öfters hier ID # 168 |
Erstellt am 27. März 2023 20:39 (#9)
Zitat
PN 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: 36 | Mitglied seit: Dezember 2016 | IP-Adresse: nicht gespeichert | |
andi Stammgast ID # 213 |
Erstellt am 28. März 2023 11:55 (#10)
Zitat
PN 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: 183 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert | |
Waldheini Ist öfters hier ID # 168 |
Erstellt am 29. März 2023 19:24 (#11)
Zitat
PN 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: 36 | Mitglied seit: Dezember 2016 | IP-Adresse: nicht gespeichert | |
andi Stammgast ID # 213 |
Erstellt am 29. März 2023 23:41 (#12)
Zitat
PN 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: 183 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert | |
Waldheini Ist öfters hier ID # 168 |
Erstellt am 30. März 2023 20:53 (#13)
Zitat
PN 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: 36 | Mitglied seit: Dezember 2016 | IP-Adresse: nicht gespeichert | |
andi Stammgast ID # 213 |
Erstellt am 31. März 2023 00:27 (#14)
Zitat
PN 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: 183 | Mitglied seit: Mai 2021 | IP-Adresse: nicht gespeichert | |
Waldheini Ist öfters hier ID # 168 |
Erstellt am 31. März 2023 19:48 (#15)
Zitat
PN E-Mail
Ok, jetzt gibt es einen Sinn! Also habe ich es nur nicht verstanden. Vielen Dank!
Viele Grüße Bernd |
Beiträge: 36 | 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,033055 Sekunden erstellt
21 Dateien verarbeitet
gzip Komprimierung eingeschaltet
2368,67 KiB Speichernutzung