44,1 Khz gesteuerte Routine unter Win2k ohne DMA betrieb! möglich ??



  • Hallo! (schon ne weile her als ich hier zuletzt war, Grüße an alle die mich noch kennen ;-))

    Ich weiss nicht obs in dieses Forum passt, deshalb schreib ichs auch noch woanders.

    Ich arbeite momentan intensiv an meiner Studienarbeit und habe eine ISA Karte
    gebastelt mit einem 8Mhz µC (68HC12) und will nun diese Karte mit
    Sounddaten füttern in einer Geschwindigkeit von mind. 44,1 Khz (über den ISA Bus natürlich).
    Ich habe mich schon etwas mit der Treiberprogrammierung auseinandergesetzt,
    jedoch ist mir das Schreiben eines Soundtreibers (Kernel Streaming), der ja
    den DMA Controller anspricht, etwas zu anspruchsvoll und vor allem zeitaufwendig.

    Deshalb die Frage an euch: Kann ich das Problem umgehen (vereinfachen) indem ich einen Trick anwende und den PIT auf eine höhere Basisfrequenz programmiere (ich weiss wie das geht) und dann auf die WinAPI Funktion SetTimer() zurückgreife, die ja standardmäßig nur bis zu 1ms einstellbar ist ?? (ich geh mal davon aus dass SetTimer() über IRQ0 gesteuert wird)
    Nachteil: Sehr benutzerunfreundlich da ganzes Betriebssystem um Faktor 44 schneller läuft 😛 (wäre mir aber im schlimmsten falle egal)

    Oder den Prozessortakt auslesen (geht das über CLK_TCK ? siehe time.h ??)
    und dann ein manuelles delay programmieren in abhängigkeit des Taktes ?

    Oder habe ich da unter Windows 0 chance ohne DMA egal wie ichs hinbieg...

    was meint ihr ??

    MFG
    Stephan


  • Mod

    tja, k.A. 🙂 ich bezweifle allerdings, dass ein manuelles delay sonderlich gut funktioniert, da es ja regelmässig vom scheduler unterbrochen wird (mal abgesehen von der cpulast, die es erzeugt). allerdings verfügt der 68HC12 doch eigentlich über genug RAM um messwerte zwischenzuspeichern, so sollte es möglich sein, das notwendige polling intervall auf 5-10ms (bei 44.1kHz) zu erhöhen (so dass 1ms völlig ausreichend wäre).



  • Vergiss das, dann hört man z.B. jede Mausbewegung im Sound, abgesehen davon können die abstrusesten Probleme auftreten, wenn du einfach die Timerfrequenz erhöhst.



  • also das mit dem speicher hört sich gut an, allerdings brauch ich das RAM
    um mein controller programm aufzuspielen, da ich nicht 500 mal das eeprom beschreiben will. soweit ich weiss sinds 1024bytes, davon brauch ich mind. 500 bytes fürs prog.

    also wenn mir das zu komplex wird mit dem DMA werd ich wohl die
    variante mit dem PIT versuchen. auch wenn dann nebenher kein weiteres arbeiten möglich ist, weil man nix mehr anklicken kann weil alles zu schnell ist ..

    mfg



  • Kann man an den 68HC12 externen Speicher anschließen?
    Dann wäre genug Speicher vorhanden, um mit einem Transfer alle paar ms auszukommen.

    Wenn du probierst, die Timerfrequenz zu erhöhen, berichte bitte, wie Windows sich verhalten hat. Nur aus Interesse. 🙂

    edit: Wenn ich das hier richtig deute, ist der Adress/Datenbus des 68HC12 nach außen geführt. Das heißt, man sollte externen RAM anschließen können.

    Hammer schrieb:

    also das mit dem speicher hört sich gut an, allerdings brauch ich das RAM
    um mein controller programm aufzuspielen, da ich nicht 500 mal das eeprom beschreiben will. soweit ich weiss sinds 1024bytes, davon brauch ich mind. 500 bytes fürs prog.

    Du spielst 500mal (pro s?) ein neues Controllerprogramm auf? In den RAM? 😕



  • nein, damit meinte ich halt einfach wenn ich mein HC12 Programm
    über die serielle Schnittstelle ins interne RAM einlade. Hat jetzt nix mit
    den 44khz zutun ...

    Wie sich Windows bei einem PIT tuning verhält ?:
    öffne die Uhr in der Taskleiste und verzehnfache die Frequenz, dann dreht sich der Zeiger 10 mal so schnell 😛
    Wenn ichs um faktor 44 erhöhe, dann kannste halt nix mehr anklicken aufm desktop,
    weil man jetzt 44mal schneller den doppelklick ausführen müsste ...
    das wäre ja auch nur eine Notlösung, sofern mir die Zeit davon läuft... bin froh wenns überhaupt funktioniert !

    mfg



  • meine Entscheidung lautet:
    Interrupt Routine schreiben ! IRQ5 ist so schön frei grad bei mir 😉

    sorry wegen crosspost bei winapi.
    wusste net dass das so eng genommen wird.


Anmelden zum Antworten