WÄ…tki
 
[ Pobierz całość w formacie PDF ]

D3h - wyłączenie wzmocnienia sygnałów z układu DA. U\ycie lego rozkazu spowoduje, \e sygnały pojawiające się
na wyjściu DA nie będą przesyłane do wzmacniacza (nie będą wzmacniane i przesyłane na odpowiednie gniazdo
karty). U\ycie rozkazu nie zakłóci
103
PROGRAMOWANIE DSP
odtwarzania syntezowanego przez układ FM dzwięku. Nale\y zwrócić uwagę, \e u\ycie rozkazu D3h jest
wymagane przed rozpoczęciem konwersji analogowo-cyfrowej. Powody są tu jasne - próbkowany dzwięk jest
jednocześnie kierowany na wyjście układu DA i bardzo łatwo o powstawianie sporych zakłóceń podczas
samplin-gu. Kierowany na wyjście DA sygnał jest przy tym mocno zniekształcony - winy nale\y upatrywać w
prędkości działania samej karty. Dowodem na to mo\e być fakt, \e przetwarzaniu analogowo-cyfrowemu przy
włączonym wzmacnianiu DA w trybie emulacji Sound Blaste^a na kartach Gravis Ultra Sound towarzyszy
dzwięk bardzo dobrej jakości. Rozkazu D3h mo\emy u\ywać do chwilowego wyciszania odtwarzanej próbki
dzwiękowej.
D8h - testowanie włączenia układu wzmacniania sygnałów z DA. Je\eli do układu DSP wyślemy kod
rozkazu D8h, odczytana zaraz potem z DSP wartość będzie równa FFh, gdy wyjście układu DA jest
połączone ze wzmacniaczem lub OOh, gdy tak nie jest. W praktyce rozkaz rzadko u\ywany (powtórne
wysłanie do DSP komendy Dlh lub D3h nie powoduje przecie\ \adnego błędu).
DOh - zatrzymanie transmisji DM. D4h - kontynuacja wstrzymanej rozkazem DOh transmisji DM.
Rozkaz E l h
Rozkaz El h nie został opisany w dokumentacji firmowej, mimo \e jest przyjmowany nawet przez starsze
układy. Wysyłając go do DSP sprawdzić mo\emy wersję karty. Pierwszy odebrany zaraz po wysłaniu kodu
komendy bajt to bardziej znaczący numer wersji karty, drugi bajt - mniej znaczący. Oto tekst zródłowy
programu wyświetlającego numer wersji zainstalowanej karty:
Program Wersja;
Uses
DSPDir;
begin ifnotDSPResetthen
begin
wnteInCBrak karty Sound Blaster');
halt
end;
DSPWrite[$E1], {wystanie kodu rozkazu } writefSound Blaster');
writeln(DSPRead,'.',OSPRead) end.
ROZDZIAA 4
4.6 BADANIE KONFIGURACJI SB
Elegancko napisany program powinien zwalniać u\ytkownika z obowiązku samodzielnego ustalania parametrów
pracy. W szczególności dotyczy to programów rozrywkowych. Programy obsługujące karty dzwiękowe powinny
więc automatycznie rozpoznawać ich konfigurację. W odniesieniu do kart serii Sound Blaster oznacza to
sprawdzenie numeru linii 1RQ, adresu bazowego i numeru kanału DM u\ywanych przez kartę. Sprawa badania
adresu bazowego jest dosyć prosta - wystarczy podejmować próby resetowania układu DSP, za ka\dym razem
zakładając inną wartość adresu. Poprawna (i odebrana w określonym czasie) odpowiedz układu oznaczać będzie,
\e przyjęta wartość jest prawidłowa. Algorytm ten został zaim-plementowany w przedstawionej wcześniej
bibliotece DSPDir. Więcej problemów nastręcza jednak sprawdzanie numerów kanału DM i linii IRQ- O ile
zało\ymy, \e komputer komunikuje się z kartą u\ywając pierwszego kanału procedura odnajdywania numeru
przerwania IRQ przypisanego karcie działać powinna według schematu:
" Zainstalowanie własnych procedur obsługi przerwań IRQ 2, 3, 5, 7. Ka\da z procedur powinna modyfikować
wartość zadeklarowanej wcześniej zmiennej globalnej przypisując jej swój numer.
" Zainicjowanie transmisji przyjętym kanałem DM. Zakończenie transmisji spowoduje wywołanie ustawionego
zworka-mi przerwania. Procedura jego obsługi nada odpowiednią wartość zmiennej, z której następnie będziemy
mogli odczytać numer linii IRQ, na jakiej pojawił się sygnał.
W przypadku, gdy nie znamy numeru kanału DM u\ywanego podczas transmisji, algorytm powtarzamy dla
kolejnych, prawdopodobnych kanałów. Poni\ej prezentuję tekst zródłowy programu wyświetlającego informacje o
konfiguracji karty Sound Blaster (przy zało\eniu transmisji kanałem DM l):
program SBIRGInfo;
uses dos.dspdir;
var
01dlRQHand2,01dlRQHand3,01dlRQHand5;pointer;
01dlRQHand7;pointer;
{stare wektory przerwań IRQ}
PROGRAMOWANIE OSP
Numberbyte;
OLD21 byte:
procedurÄ™ ProclRQ2; interrupt, { dla IRQ2 } begin
Number:=2;
portE$20]:=$2C { EOI} end;
procedurÄ™ ProclRQ3; inCerrupt; { dla IRQ3 } begin Number:=3;
port[$20]:=$20 {EO!} end:
procedurÄ™ PraclRQ5; mterrupt: { dla IRQ5 } begin
Number:=5;
port[$20]:=$20 {EOI} end;
procedurÄ™ Pr'oclRQ7; inCerrupt; { dla IRQ7 } begin
Number:=7;
port[$203:=$2Q {EOI} end;
begin
if noc SBInstalled Chen { czy wykryto kartÄ™ } begin
wntelnC'Brak karty Sound Blaster''];
halt end;
getintvec(8-2,aidlRQHand2); { zapamiętujemy stary wektor} setintvec(8+2,@ProclRQ2]; { naginamy"}
getintvecES*3,OldlRQHand3); { zapamiętujemy stary wektor} 5etintvec(8+3,@ProclRQ3]; { naginamy"}
getintvec[8-5,OldlRQHand51; { zapamiętujemy stary wektor} setintvec(S+5,@ProclRQ5]: { naginamy"}
getintvec[8-7,OldlRQHand7); { zapamiętujemy stary wektor} setintvec(8+7,(o)ProclRQ7); { naginamy"}
OLD21 :=port[$21];
p0(t[$21]:=porc[$213and89:
ROZDZIAA 4
{odblokowane l;nnlRa2,3.5,7}
port[$OA]'=5: { ustawienie maski dla kanafu OMA 1 } port[$OC]:=0; [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • bialaorchidea.pev.pl
  •  
    Copyright © 2006 MySite. Designed by Web Page Templates