Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

sinusoide digitale

61 views
Skip to first unread message

xdecax

unread,
Mar 30, 2006, 7:52:53 AM3/30/06
to
devo trovare il modo di produrre con un d/a 8 bit una bella onda
sinusoidale..
non importa la frequenza..
il processore è Z80
si tratta di una cosa didattica.. vorrei fare bella figura ma da 2 o 3
giorni non trovo una soluzione..
mi viene in mente di usare il seno.. ma come faccio con lo Z80???? mah.....

chi mi da qualche dritta?
grazie


IW6DFW, Maurizio

unread,
Mar 30, 2006, 8:52:14 AM3/30/06
to
Potresti calcolarlo tramite gli sviluppi in serie di Taylor o MC Laurin
(chiedi al tuo prof di matematica) ma non mi sembra il caso, quindi cerca in
internet info sulla tecnica DDS (sintesi digitale diretta dei segnali).

Buon lavoro.

"xdecax" <email...@nononono.com> ha scritto nel messaggio
news:442bd43d$0$18298$4faf...@reader1.news.tin.it...

Valeria Dal Monte

unread,
Mar 30, 2006, 9:12:06 AM3/30/06
to

IW6DFW, Maurizio <iw6dfwCA...@gmail.com> wrote in message
ioRWf.57321$A83.1...@twister1.libero.it...

> Potresti calcolarlo tramite gli sviluppi in serie di Taylor o MC Laurin
> (chiedi al tuo prof di matematica) ma non mi sembra il caso, quindi cerca
in
> internet info sulla tecnica DDS (sintesi digitale diretta dei segnali).

Non so se intendevi dirgli di mettere un DDS esterno, ma se e'
una cosa didattica non [enso che gli vada bene. Se invece
volevi dirgli di fare un DDS con il micro, non e' che il DDS da
solo gli generi la sinusoide.
Da quanto ho capito io, vorrebbe generare i dati di una sinusolide
da software e mandarli al DAC per visualizzare il risultato su un
oscilloscopio.
Soluzioni:
1. Sviluppo in serie come gli hai detto tu, ma richiede parecchi
calcoli in virgola mobile, a quel punto meglio usare un linguaggio
ad alto livello e usare la funzione di libreria seno.
2. Preparare una tabella di valori precalcolati della funzione seno
e metterla in rom, quindi da software, leggere i dati e mandarli al DAC.
3. Usare l'algoritmo CORDIC che serve propio per generare funzioni
trigonometriche con numeri interi.

SB

unread,
Mar 30, 2006, 9:21:53 AM3/30/06
to
Il giorno Thu, 30 Mar 2006 14:52:53 +0200, "xdecax" <email...@nononono.com> ha
scritto:

Di seguito il listato in QuickBasic per generare una tabella sinusoidale su di
un file.
Non mi chiedere molto perchè si tratta di un programma del 1988, se non hai il
QB lo puoi scaricare qui:

http://www.ring-apotheke.com/pkworld/download/compiler/qb71eng.zip

_______________________________

' CALCOLO SINUSOIDE IDEALE PER EPROM USANDO UNA PRECISIONE DI 8 BITS
' IL NUMERO DI GRADINI E' VARIABILE USANDO VALORI DI [Res] IN PASSI DI 8 BITS

CONST PI = 3.141592653589793#
DEFINT I

Res% = 256 ' 1024
STP# = 2 * PI / (Res% - 1)
Byt% = Res% / 256
A$ = "SIN" + LTRIM$(STR$(Res%)) + ".SRC"

CLS : PRINT
PRINT "FILE PER GENERATORE SINUSOIDALE CON RISOLUZIONE 8 BITS E NUMERO DI
STEPS"; Res%


OPEN A$ FOR OUTPUT AS #1
PRINT #1, ";HEX 8 BITS SINUSOIDE"; TAB(27); "STEP"; TAB(38); "SENO"; TAB(60);
"PIENA RISOLUZIONE"


OPEN "FILESIN.SRC" FOR OUTPUT AS #2

PRINT #2, ";FILE PER GENERATORE SINUSOIDALE CON RISOLUZIONE 8 BITS E NUMERO DI
STEPS"; Res%

FOR I = 0 TO Res% - 1
X# = STP# * I
S# = (SIN(X#))
SR# = ((S# + 1) / 2) * (Res%)
HXV$ = "0" + HEX$(INT(SR# / Byt%)) + "H"

PRINT #1, CHR$(9); "DB"; CHR$(9); HXV$; CHR$(9); HEX$(I); CHR$(9); S#;
CHR$(9); SR#

IF I MOD 10 = 0 THEN
PRINT #2, CHR$(&HD); CHR$(&HA); CHR$(9); "DB"; CHR$(9);
ELSE
PRINT #2, ",";
END IF

PRINT #2, HXV$;

NEXT I

CLOSE
_____________________________

Max

unread,
Mar 30, 2006, 10:00:11 AM3/30/06
to
> mi viene in mente di usare il seno.. ma come faccio con lo Z80????
mah.....
>

Potresti utilizzare una tabella memorizzata in eprom in cui per ogni valore
di angolo memorizzi, con un formato che a te sta bene, il relativo valore di
seno.
A questo punto semplicemente puntando alla tabella (es con HL) con uno
spiazzamento dipendente dall'angolo ottieni ciň che ti serve...facile e
senza scomodare tanta matematica ;-)

Ciao

Max


SB

unread,
Mar 30, 2006, 10:29:01 AM3/30/06
to
Il giorno Thu, 30 Mar 2006 16:21:53 +0200, SB <stNOOOb...@tin.it> ha
scritto:

>Il giorno Thu, 30 Mar 2006 14:52:53 +0200, "xdecax" <email...@nononono.com> ha
>scritto:
>
>>devo trovare il modo di produrre con un d/a 8 bit una bella onda
>>sinusoidale..
>>non importa la frequenza..
>>il processore è Z80
>>si tratta di una cosa didattica.. vorrei fare bella figura ma da 2 o 3
>>giorni non trovo una soluzione..
>>mi viene in mente di usare il seno.. ma come faccio con lo Z80???? mah.....
>>
>>chi mi da qualche dritta?

Una volta che hai la tabella devi darla fuori sul tuo DAC a intervalli regolari,
l'ideale sarebbe usare un timer se hai qualcosa tipo uno Z80 CTC sulla scheda.

xdecax

unread,
Mar 31, 2006, 4:36:31 AM3/31/06
to
>
> Di seguito il listato in QuickBasic per generare una tabella sinusoidale
su di
> un file.
> Non mi chiedere molto perchè si tratta di un programma del 1988, se non
hai il
> QB lo puoi scaricare qui:

GRAZIE
penso che userò questa "tattica"
appena ho sotto mano la piastra test faccio una prova e vi faccio sapere


Emiliano

unread,
Mar 31, 2006, 6:29:14 AM3/31/06
to
> GRAZIE
> penso che userň questa "tattica"

> appena ho sotto mano la piastra test faccio una prova e vi faccio sapere

Ottima soluzione, cmq prova a dare un'occhiata all'algoritmo CORDIC, č
veramente qualche cosa di meraviglioso, con questo algoritmo potresti
generare sinusoidi di frequenza arbitraria.
Ciao, Emiiano.


xdecax

unread,
Mar 31, 2006, 7:29:03 AM3/31/06
to
> Ottima soluzione, cmq prova a dare un'occhiata all'algoritmo CORDIC, è

> veramente qualche cosa di meraviglioso, con questo algoritmo potresti
> generare sinusoidi di frequenza arbitraria.

ho guardato ed è veramente interessante.. però è decisamente fuori dalla mia
portata.. non ho + la mente fresca come una volta :)
mi sembra eccessivo per fare bella figura in 10 minuti di lezione..
opterò per l'inserimente di 128 o addirittura 256 valori in una tabella da
richiamare prima in un senso e poi nel senso opposto.. saranno a dir tanto
20 righe di prog + la tabella...con qualche nop varierò la frequenza (che
non è importante..)

grazue ancora


Angelo

unread,
Mar 31, 2006, 11:42:15 AM3/31/06
to
ci ho fatto la tesi su sta roba, il seno (un periodo) č memorizzato in
tabella
e i vari campioni li leggi a frequenza di interrupt (timer),
cioe' prima imposti un timer e poi nella sua routine di interrupt li mandi
al dac!
Semplice no??? ;-)

"xdecax" <email...@nononono.com> ha scritto nel messaggio
news:442bd43d$0$18298$4faf...@reader1.news.tin.it...

> devo trovare il modo di produrre con un d/a 8 bit una bella onda
> sinusoidale..
> non importa la frequenza..

> il processore č Z80

Giuss

unread,
Apr 1, 2006, 7:31:46 AM4/1/06
to
xdecax ha scritto:

> devo trovare il modo di produrre con un d/a 8 bit una bella onda
> sinusoidale..
> non importa la frequenza..
> il processore è Z80
> si tratta di una cosa didattica.. vorrei fare bella figura ma da 2 o 3
> giorni non trovo una soluzione..
> mi viene in mente di usare il seno.. ma come faccio con lo Z80???? mah.....

A che serve il processore? Basta una eprom collegata direttamente al
convertitore D/A

Stefano

unread,
Apr 1, 2006, 9:18:29 AM4/1/06
to

"Giuss" <gius...@dada.it> ha scritto nel messaggio
news:442e72b2$0$29731$4faf...@reader2.news.tin.it...
..almeno un contatore ti serve oltre alla eprom!..


xdecax

unread,
Apr 1, 2006, 1:11:30 PM4/1/06
to
> > A che serve il processore? Basta una eprom collegata direttamente al
> > convertitore D/A
> >
> ..almeno un contatore ti serve oltre alla eprom!..

bhe lo scopo è farla con quello che ho.. e cioè una piastra z80 didattica..


Giuss

unread,
Apr 2, 2006, 1:57:49 PM4/2/06
to
Stefano ha scritto:

Certo davo per scontato un contatore e un oscillatore :)

ciao

xdecax

unread,
Apr 5, 2006, 6:13:03 PM4/5/06
to
precaricati i valori di un intero periodo
da 80h a FFh, da FFh a 80h, da 80h a 00h e da 00h a 80
e leggendoli con un programmino da 4 righe
viene proprio una bella sinusoide..
peccato per la frequenza... 300 hz con risoluzione di 256 valori, e circa
570 hz con risoluzione 128


0 new messages