Provate ora a collegare un microfono alla presa d’ingresso della scheda DSP e pronunciate qualche parola, vedrete muoversi tutte le linee. I trattini rossi che sovrastano le linee bianche rappresentano i picchi raggiunti da queste ultime.
Nello schermo in basso troviamo tre lettere A, R e Q che indicano i possibili comandi da impartire allo strumento; queste lettere coincidono rispettivamente con la scelta del tipo di campionamento, il reset del programma e l’uscita. Premendo il tasto “A” noterete che le linee bianche si muovono più lentamente e che più aumenterà il valore scritto in fianco alla voce AVERAGE più il movimento delle righe bianche sarà lento. Ciò avviene poiché i valori campionati dal DSP, prima di essere visualizzati, verranno mediati tra loro in modo da aggiornare la schermata video ogni 2, 4, 8 frame.
Premendo il tasto R è possibile resettare il programma, mentre premendo Q l’esecuzione viene terminata. Con questo analizzatore di spettro è possibile, ad esempio, vedere quali frequenze compongono, la nostra voce rispetto a quella di un nostro amico oppure vedere quanto disturbo contiene un segnale elettrico. In ogni caso occorre ricordare che la massima ampiezza del segnale in ingresso non deve superare i 6 volt e la frequenza gli 8 Khz. Se la natura del segnale da misurare è di dubbia provenienza è sempre consigliabile disaccoppiare quest’ultimo dalla scheda del DSP onde evitare di danneggiarla.
Qualora applicando un microfono alla scheda e parlando in quest’ultimo non vedrete muoversi alcuna riga dello strumento dovrete interporre tra la scheda del DSP e il vostro microfono un amplificatore per aumentare l’ampiezza del segnale. Passiamo ora ad analizzare il programma sorgente ovvero quello scritto in assembler (Spec50.asm). Allo scopo, utilizziamo un qualsiasi editor per MS-DOS per visualizzarne il listato.
;************************************************************************** ;SUBROUTINE INIT_S - Inizializza buffer dei dati ;************************************************************************* Init_S: LAR AR6,#_D_base ;Carica indirizzo D BASE in AR6 LAR AR7,#511 ;Carica in AR7 il valore 511 MAR *,AR7 ;Seleziona il registro AR7 CLRC INTM ;Abilita interrupt per ricevere dati FILL:BANZ FILL,*,AR7 ;Resta in attesa di aver caricato ;tutti i dati SETC INTM ;Disabilita gli interrupt LAR AR5,#_B_base ;Carica AR5 con indir. BASE B LAR AR6,#_D_base ;Carica AR6 con indir. BASE D LAR AR7,#255 ;Carica AR7 con il valore FF hex MAR *,AR6 ;Seleziona registro ausiliario AR6 FILLX: LACC *+,0,AR5 ;Carica in Acc il valore contenuto ;all’indirizzo presente in AR6, ;incrementa il suo contenuto ;e utilizza AR5 SACL *+,0,AR7 ;Salva Acc nella locaz. memoria ;indicata da AR5, incrementa il ;suo valore e passa al reg. AR7 BANZ FILLX,*-,AR6 ;Esegui questa operazione ;fino ad azzerare il contenuto ;del registro LAR AR7,#255 ;Carica AR7 con FF hex LAR AR5,#_D_base ;Carica l’indirizzo di base in AR5 MAR *,AR6 ;Seleziona AR6 FILLY: LACC *+,16,AR5 ;Carica Acc con il contenuto ;spostato di 16 posti della prima ;locazione di memoria specificata ;dal registro AR5 e incrementa ;il suo valore SACH *+ ;Memorizza la parte alta del ;nuovo indirizzo e incrementa AR5 SACL *+,0,AR7 ;Memorizza la parte bassa di Acc ;incrementa il reg. AR5 e ;seleziona il reg. AR7 BANZ FILLY,*-,AR6 ;Salta alla label Filly fino a quando ;il registro AR7 non è 0 RET ;Ritorno dalla subroutine ;************************************************************************** ;************************************************************************** ;SUBROUTINE TO_HOST - Trasmetti dati al PC ;************************************************************************** TO_HOST: LACC #80h ;Carica Acc con il valore 80 hex CALL BCXMIT ;Chiama la subroutine di sincronizz. CALL BRECV ;Chiama la subroutine di attesa ;per l’invio dei primi 16 bit SUB #01Bh ;Sottrai 1B hex dall’acc. BCND TO_HOST,NEQ ;Salta all’inizio della subroutine ;se acc. diverso da 0 LAR AR3,#_D_base ;Carica in AR3 l’indirizzo di ;partenza del nuovo array LAR AR5,FFT_S/2-1 ;Carica AR5 con il valore ;determinato dall’espressione MAR *,AR3 ;Seleziona il registro AR3 more2: LACC *+ ;Carica Acc. con il valore ;presente all’indirizzo specificato ;da AR3 e incrementa il suo valore MAR *+ ;Incrementa AR3 RPT #7 ;Ripeti l’istruzione seguente 7 volte SFR ;Muovi contenuto di Acc a destra CALL XMIT ;Chiama subroutine di ;trasmissione seriale MAR *,AR5 ;Seleziona registro AR5 BANZ more2,*-,AR3 ;Salta alla label MORE2 se il ;valore di AR5 è diverso da 0 RET ;Ritorno dalla subroutine ;**************************************************************************
Il kit è disponibile da Futura Elettronica



































