[ Uruk @ 01.07.2012. 20:05 ] @
Zdravo!
Nesto se zezam sa MSP430F168, ima 2 DAC-a na sebi i 48K.
Hocu da generisem sinus na izlazu uz pomoc Direct Digital Synthesis metode (lookup tabela + brojac koji svrlja po njoj).
E sad mene zanima kako da dimenzionisem tabelu? odradio sam sa 256 vrijednosti ali to mi se cini premalo. Time moja sinusoida ima 256 naponskih vrijednosti, a DAC mi je 12bitni.
Nekakva logika mi kaze da bih trebao da imam tabelu od 2^12 nivoa sinusoide, sto je 4096 iliti 4KB samo za jednu tabelicu.
Postoji li mogucnost da smanjim ovo nekako (ako mi je ispravan rezon)? imam 48KB na kontroleru ali ko zna sta cu jos dodavati (a i zanima me da li postoji neka metoda smanjivanja).
Bilo kakva pomoc je dobrodosla, ako imate neku dokumentaciju - zakacite, bilo sta.
[ rsinisa @ 01.07.2012. 21:47 ] @
Pretpostavljam da si svih 256 vrednosti odredio za celu sinusoidu. Jedno od rešenje je da upotrebiš 256 vrednosti za 1/4 kruga, odn. za 90 stepeni, a ostale vrednosti lako izračunaš. Drugo rešenje je da radiš aproksimaciju izmedju 2 tačke. Npr. odredio si 256 vrednosti, a hoćeš da imaš 4 puta veću rezoluciju. Onda 3 tačke izmedju izračunaš na neki način, mislim da je linearizacija sasvim dovoljna. Time dobiješ 1024 vrednosti za 90 stepeni, tj. 4096 za celu sinusoidu.

Pozdrav.
Sinisha
[ bogdan.kecman @ 01.07.2012. 21:56 ] @
zavisi kolika ti brzina treba .. generalno ti je najbolje ovo sto ti je sinisa rekao, imas 12bitni DAC, napravis 2^12/4, znaci u 1kb stavis 12bitni info koji ti treba za celu sinusoidu...

e sad, ako ti ne treba brzina, mozes da imas datu u npr externom spi epromu, ako tuces signal napolje sporije nego sto citas iz spi-a mozes da imas signal duzine koliko ti je velik eprom.

ako ti treba arbitrary signal (ne mozes da ga iseces na 4 kao sinus i stavis u ram) onda ti je bolje da koristis externi dac, i neki paralelni ram ... ili recimo .. ja sam radio skoro za neki projekat gde mi je trebao awg (doduse 8bitni) ja sam koristio 8 seriskih ram modula izlaz iz njih pici u dac (ja pravio obican r2r ali svejedno je) tako da tu npr imam 20MHz sample rate i 256 kilobajta
[ branko_g @ 02.07.2012. 08:52 ] @
Citat:
Nesto se zezam sa MSP430F168, ima 2 DAC-a na sebi i 48K.


Ako se vec "igras" sa time onda probaj od jednostavnijih stvari do slozenijih:
1) 256 bajta sa 256 naponska novoa, cela sinusoida.
2) 256 bajta sa 4096 naponsa nivoa, cela sinusoida.
3) 256 bajta za pola sinusoide sa 4096 nivoa.
4) sa posebnim pinom raditi faznu, amplitudnu ili frekventnu modulaciju, cisto digitalno DA-NE.
5) Isto to, samo analogno, preko ADC-a
....

Pozdrav
[ mikikg @ 02.07.2012. 11:19 ] @
@Uruk

Imas opciju sa gotovim DDS sintisajzerima.

Recimo ovaj AD9850: CMOS, 125 MHZ COMPLETE DDS SYNTHESIZER.
http://www.analog.com/en/rfif-...s/ad9850/products/product.html

- 125 MHz Clock Rate
- On-Chip High Performance DAC and High Speed Comparator
- DAC SFDR > 50 dB @ 40 MHz AOUT
- 32-Bit Frequency Tuning Word
- Simplified Control Interface: Parallel Byte or Serial Loading Format
- Phase Modulation Capability

Imaju i sporiji modeli, u sustini je sve isto samo se CLOCK menja. Karakteristike su solidne i kvalitet proizvedenog sinusa je prilicno dobar (mali IMD3).
Na Internetu mozes naci vise gotovih konstrukcija baziranom na ovom AD9850 + neki PIC/Atmel.

[ bogdan.kecman @ 02.07.2012. 13:53 ] @
miki on vec ima mikrokontroler koji ima dac na sebi, AD9850 je cool ako oce da generise samo sinus, ako ce da pravi AWG AD9850 mora da puni na isti nacin na koji bi slao datu na svoj interni dac samo mu je interni dac brzi :D posebno sto taj msp ima 3 interna dma kanala tako da moze da vozi taj dac bez da smara cpu :D
[ goran_68 @ 02.07.2012. 14:15 ] @
AD9850 je preskup. Ja sam jednom ranije iskoristio AD9833 kao generator signala. Sada za nove projekte vidim preporucuju AD9838.
[ ha_23 @ 02.07.2012. 16:34 ] @
Na sledeci link, imas program Cosinus – Sinus Array Creator . Samo link e na 4shared.com i trazi
registracija za skidane.
[ Uruk @ 02.07.2012. 16:41 ] @
Hvala ljudi!
Probacu sa cetvrtinama sinusa, izgleda mi najelegantnije.

Posebno DDS kolo mi nije potrebno, iskreno nije mi ni potrebna bogznakakva preciznost (ali korisno je znati oznake tih kola :) ).
Odabrao sam kontroler sa DACovima da bih olaksao dizajn pcba i pojednostavio pricu.
Nije mi potrebna ni narocita brzina. Ovo je neki projekat sto radim sa drugovima, i bukvalno je vise kao realizacija nekog koncepta, nego kao neki ozbiljan uredjaj.
Ovdje mi je DDS samo pomocna stvar, da generisem ulaz u sistem, i poslije cu posmatrati izlaz. Imam analogni dio, i kontroler koji upravlja time.

Sto se tice arbitrary signala (ako krenem i sa time da se bakcem), koje tu varijante postoje?
jel bi moglo ovako funkcionisati: korisnik nekako nacrta na kompu oblik signala, nekako izvucem semplove odatle, posaljem kontroleru i on to stavi u lookup tabelu? ili i tu postoji neka fora. nekako mi citanje iz tabele zvuci prejednostavno :D

edit: hvala za ovaj program!!! ovo mi je trebalo!