Fórum témák

» Több friss téma
Fórum » CS8416 + PCM2707 + Infra érzékelés mikrokontrollerrel
Lapozás: OK   1 / 1
(#) Toto25V hozzászólása Szept 3, 2011 /
 
Egy merész próbálkozásba ütöttem a fejem megint, egy olyan integrált erősítő megépítését tervezem, ami elfogadhatóan szól és kényelmesen, távvezérlőről is irányítható.
Mivel saját DAC-ot építek bele, ezért sokat gondolkoztam rajta, hogy legyen megoldva a bemenet választás.
Végül is úgy gondolom, 8 darab SPDIF bemenetet nem relékkel fogom váltani, hanem mind a nyolcat közvetlenül rákötöm receiverre. Ezért is esett a választás a CS8416-ra, már a meglévő DIR9001-Q1 helyett. Ezenkívül teszek a kapcsolásba még USB vevőnek pcm2707-et. Mivel digitális bemenetek váltására nem igazán tartom igazán jó ötletnek a reléket, meg ha már úgyis távirányítósra építeném az egész "elő-fokot", és ha már PCM2707-en is csak "digitálisan" tudom szabályozni a médialejátszó gombjait, ezért mindenképpen meg kell ismerkednem az SPI-vel. Őszintén szólva kicsit félek tőle, hiszen nem ismerem, soha nem találkoztam vele. A kapcsolásba már amúgy is terveztem egy mikrokontrollert az infravevőhöz, azzal is akarom irányítani az alps féle motoros potmétert, na meg a három darab bemenet választó relét, ami tartalmazna két analóg portot, és az utolsó lenne a DAC... Más aktív áramkört nem tervezek az "elő-fokba". PCM2707 rendelkezik I2S porttal, illetve SPDIF-el. Szerintem az utóbbit fogom választani, nem akarok kapcsolót tenni az I2S portra, meg ha már CS8416, van hely neki.

Na szóval, a téma adott, hogy bírjuk CS8416-ot szoftveres üzemmódra, közben hogyan tudjuk kezelni az USB-n lévő médialejátszót, illetve teljes egészében hogy tudjuk infrával vezérelni a motoros potmétert. Mikrokontrollerként valamelyik AVR-t használnám. Bármilyen ehhez hasonló kapcsolásra, kódokra kíváncsi lennék.
(#) Toto25V hozzászólása Szept 3, 2011 /
 
Habár kezd világossá válni, mi is az a SPI, de nem tudom, hogy kezeljem a kettőt egyszerre , hiszem CS8416-on nem találok SS lábat! Illetve az infra vezérlés is eléggé húzósnak tűnik elsőre.

A motoros potméter kérdése már meg van oldva.
(#) Hp41C válasza Toto25V hozzászólására (») Szept 3, 2011 / 1
 
Szia!

A CS8416 kétféle intefrace -vel rendelkezik: I2C és SPI.
Az I2C hez a SDA (17), SCL (16), AD1 (15) és AD0 (14) kivezetések tartoznak, az SPI -hez a CDOUT (17), CCLK (16), CDIN (15), negált CS (14). Ez a legutóbbi a keresett SS kivezetés - ld. 12.1 SPI Mode fejezetet...
(#) Toto25V válasza Hp41C hozzászólására (») Szept 3, 2011 /
 
Köszönöm szépen, a hozzászólásod segített.

Na akkor most nincs még eldöntve, hogy melyik mikrokontroller legyen, illetve hogyan programozzuk be.
Habár tudok példa programokat keresni, attól tartok, ez még nem lesz elég. A legfőbb gond az infra beprogramozása. Valami olyasmire gondolok, hogy egy jumper felhelyezésénél fel tudhassuk programozni az infra vezérelt portokat EEPROM segítségével. Ledek színe jelezné a folyamat helyzetét. ATMEGA162-t gondolom mikrokontrollernek.
(#) watt válasza Toto25V hozzászólására (») Szept 5, 2011 /
 
Elég árnyaltan fogalmazol. Programoztál már mikrokontrollert?
(#) Toto25V hozzászólása Szept 5, 2011 /
 
Így van, még anno a suliban, de nem foglalkoztunk ilyen komolyan az üggyel.
(#) neocska válasza Toto25V hozzászólására (») Szept 5, 2011 /
 
érdekel engem is a megvalositása
(#) abcdabcd válasza Toto25V hozzászólására (») Szept 5, 2011 /
 
Az I2S-nek van egy előnyös tulajdonsága, ami miatt esetleg érdemes lehet megfontolni a használatát, az SPDIF-fel szemben, mégpedig az, hogy órajel szerint működhet master és slave üzemmódban, így elkerülve a jittert a jelben, amire gondolok, hogy a jelforrásból kivezeted az órajelet is a jelvezeték mellett, a céleszközödet slave-ként használva, így azonos órajelről működne az adó és a vevő oldal is...
(#) Toto25V hozzászólása Szept 5, 2011 /
 
Ezt nem pontosan értem, mármint a I2S részt.
Így épül fel a kapcsolás

>CS8416>SRC4192>PCM1794A DAC>
Na most, ha I2S portra akarom csatlakoztatni a PCM2707-et, akkor a CS8416 után nem kellene kapcsolót beletenni?
Ezt szeretném elkerülni, persze ha van alternatíva, vagy kikapcsolható közben vagy az egyik, vagy a másik, jöhet.

Mikrokontrollernek az Atmega168-at néztem ki.
Infrát talán rá is tudom kötni.
(#) abcdabcd válasza Toto25V hozzászólására (») Szept 6, 2011 /
 
Ha a DAC nak van 2 féle bemenete és arra érted, akkor gondolom egyszerre csak az egyik forrás lehet aktív... ahogy néztem az adatlapját csak a formátumban tér el hogy i2s vagy egyéb a bemeneti jel, szóval lehet, hogy fizikailag ráadásul akkor csak 1 bemenete van...
Viszont, ha a 2707-hez gondoltad, hogy a digi kimenetét az i2s-formátumúra állítod, akkor oda lehet nincs is értelme...
Mert, az órajelben akkor sincs eltérés, ha közös órajelről járatod a két cuccot, mámint a pcm2707-et és a dac-ot, ez meg, mivel hogy egy panelre rakod őket gondolom, így nem probléma...
Egy közös kvarcoszcillátor és kész...

Én az egyéb digitális bemenetekhez gondoltam, hogy spdif mellett az i2s jól jöhet, és akkor mondjuk ha a pc-hez van ilyen kimenetű hangkártyád, pl SB Audigy(nem audigy SE, vagy SBlive de az elvileg csak 48kHz-ig), akkor órajel-jitter mentesen használhatod a DAC-ot, és az Audigy, ha jól tudom 96kHz-ig jó, a 2707 48kHz-ével szemben, szóval ha van ilyen felvételed, akkor ahhoz ez jó megoldás lehet...
(#) Toto25V hozzászólása Szept 6, 2011 /
 
Sajnos az SRC4192 beállítása megköveteli a 24.576 Mhz-et, az kerül a a DAC-ra is, míg a PCM2707 csak a 12 Mhz-et fogadja. Ha PCM2707-et I2S-re állítom, akkor bizony kell valami bemenet választó kapcsoló is, mert I2S-ről fut a CS8416 is.... Ezt lehet IC-s megoldással, vagy relékkel. Én valahogy ellenzem mindkét megoldást, mert az USB-t is csak akkor akarom használni, ha éppen nincs más. Arra meg szerintem jó az SPDIF is.

De amúgy amit mondtál, ötletnek nem rossz.

A kapcsolás nagyjából kezd összeállni, de a mikrokontrolleres programozás elsőre durvának tűnik. Talán ha még sikerül megszólaltatni a CS8416-ot, de az irda beprogramozását nehezebbnek tartom.

Példa a CS8416-ra... headert nem találtam hozzá, de talán megoldható adatlap alapján
  1. int control4_reg = 0x8b; // 0x8b = coax 1 default, 0xb2 = coax 2, 0xba = coax 3, 0xa3 = opt1, 0xaa = opt2,
  2.  
  3. void cs8416_init(void) {
  4.  cs8416_rst = 0;     // put device in reset
  5.  DelayMs(1);       // delay 1 ms
  6.  cs8416_rst = 1;     // wake device
  7.  DelayMs(1);       // delay 1 ms
  8.  cs8416_cs = 1;     // enter SPI mode by setting cs high
  9.  cs8416_write(control4, control4_reg);   // send run state, RXP0 on, RXP2 (not connected on PCB) to TX
  10.  
  11.  cs8416_write(rem, 0xff);       // unmask all receiver error bits
  12.  
  13.  cs8416_write(int_mask, 0xff);       // unmask all IRQ
  14.  
  15.  cs8416_write(sadf, 0b10100101);  // set master mode (1)
  16.                   // OSCLK is 64*Fs (0)
  17.                   // 16-bit resolution (10)
  18.                   // left-justified (0)
  19.                   // MSB on second clock period (1)
  20.                   // sampled on rising edges of OSCLK (0)
  21.                   // right channel when OLRCK is high (1)
  22.  
  23.  
  24.  cs8416_setpdur(1);
  25.  
  26. } //end cs8416_init
(#) abcdabcd válasza Toto25V hozzászólására (») Szept 7, 2011 /
 
Nem egészen ezt tanácsoltam nem gondoltam végig a dolgot, de most megtettem:

A 2707-et meg kell nézni, hiába a saját órajele, 12MHz, járhat-e i2s slave-ként? Mert akkor semmi gond, a másik eszköz a master, és az i2s digitális kimenethez az órajelet akkor a slave eszköz el kell, hogy fogadja tőle, elvben...
(#) fidelcastro válasza Toto25V hozzászólására (») Szept 10, 2011 /
 
Én is csináltam egy hasonló projektet egy évvel ezelőtt. Csak az enyémben a PCM2707 analóg kimenete egy TDA7318 audio (processzor)-ra van kötve. Így távirányítóval (RC5) tudom állítani a hangerőt (a PCM2707-ben is és a TDA7318-ban is), mélyet, magasat, előerősítést, csatorna választást, fadereket. És a PCM2707-nek köszönhetően a Winampot is tudom vezérelni a távirányítóval. Van benne továbbá egy RTCC és SRAM (a beállításokat ebbe menti), és egy hőmérő ami a végfok hőmérsékletét méri. A végfok az egy kapcsolóüzemű TDA8920 és egy toroidról van táplálva. A beállításokat egy 4x20-as LCD-n jeleníti meg, és rendes menüvel is rendelkezik ahol pl. beállíthatjuk az órát, hang beállításokat. Az egészet egy PIC18F vezérelgeti. Teszek fel róla pár képet.
(#) Toto25V hozzászólása Szept 10, 2011 /
 
Jól összeszerelted
Nekem is van hasonló dobozom, a Lomexből hozták.
Habár most a projekt analóg részével foglalkozom, sajnos lehet, hogy AVR programozáshoz igen komoly segítség kell, főleg a távirányító programozása miatt.

Szóval CS8416-ot akarom vezérelni SPI-vel, PCM2707-et is ugyanúgy SPI-vel, adatkönyvük megvan de tartok tőle, hogy ez számomra még nem elég. Az AVR-em Atmega168, RS232-ről programoznám fel.

Szóval mit is kéne csinálni? CS8416-ot SPI-n keresztül az AVR-ben SRC4192-höz beállítani, és a kért optikai/koax csatorna jelet azon keresztül váltani. Nyomógombok nem lennének, csak az infra. Infra jeleket EEPROM-ban kellene tárolni, és ha üres az EEPROM, akkor automatikusan legyen meg az újraprogramozás lehetősége, azaz a mikrokontroller automatikusan tanulja meg, hogy melyik infra jelhez, mi tartozik. Azt még talán megtudom csinálni, hogy ha más érték kell, akkor azt megváltoztatom.

Az AVR-en lenne két darab RGB led, ezek jeleznének mindent, csatornáknak lenne saját színe, a vezérléseknek is, illetve szépen jelezné, hogy éppen infra programozás van, kéri a jelet, elfogadja a jelet, stb.

Ha megoldható az I2S úgy, hogy mindkét eszköz, mármint a CS8416 illetve a PCM2707 tudja használni, akkor szóba jöhet, ha nem, akkor PCM2707 SPDIF-ről fog menni a CS8416-ra.

És mik lennének pontosan az IrDA parancsok
Hangerő fel
Hangerő le
1,2,3,4,5,6,7,8 csatorna váltás
Play,Stop, Pause, Next track, Previous track, Volume up/down, mute.
Talán még adnék hozzá valamit, de ha megvan a teljes példaprogram headerekkel együtt, akkor szerintem nem lesz gond. Apropó, a vevő: INT0 portra kötött TSOP1736
(#) Toto25V hozzászólása Szept 11, 2011 /
 
Ha PCM2707 SSPND lábát LOW-on tartjuk, akkor az egész IC ki van kapcsolva, és mehet I2S-ről a CS8416?

És ha CS8416 RESET lábát tartjuk LOWon, akkor mehet I2S-ről a PCM2707?
(#) Toto25V hozzászólása Szept 16, 2011 /
 
Nos, mégis csak SPDIF-en lesz az USB-s rész,
de szeretnék tanácsot kérni, hogy programozzuk be a IrDA-t? Tanítható példaprogramok kellenének meg ilyenek.
(#) abcdabcd válasza Toto25V hozzászólására (») Szept 17, 2011 /
 
Ha távirányítani akarsz, akkor nem irda kell... vagy valamilyen protokollt kell megvalósítanod az eszközzel pl RC5, vagy elvben enélkül is működhet, ha pl az igorusb szoftverét megnézed(at90s2313), meg elolvasod a koncepciót, akkor kiderül, hogy ott pl semmilyen protokollt nem valósítottak meg, csak valamilyen módon rögzítik a jeleket és egy Xbit hosszú szám az eredmény, amit a pc-re küldenek usb-n... és ezek alapján a gombokhoz tartozó különböző bitsorozatok alapján azonosítják a gombot, amihez a pc-n tetszőleges funkciót rendelhetsz... ez akár simán megoldható a konrtollerben is, hogy annak valamilyen belső funkciójához legyen rendelhető a gomb... nekem az itthon fellelhető kb mind a 10 távirányító minden gombját felismerte... a különböző protokollokkal nem vagyok tisztában, hogy hogy működnek, lehet, hogy ott a küldött jelet valamilyen módon alapból értelmezi és felismeri, hogy mondjuk "play" gombot nyomtál, de itt elég ha te tudod és az adott gombhoz hozzárendeled, hogy az "play" gomb mondjuk...
(#) Toto25V hozzászólása Okt 13, 2011 /
 
Nos, szeretném, ha valaki megírná a programot. Tudom, hogy elég nagy kérés ez, de szerintem sokan vevők lennének rá. Ha megvan a program, kibővíthetem.

Szóval CS8416 alapvezérlés SPI-vel.
PCM2707 vezérlés SPI-vel
AtMega162 mikrokontrollerrel
TSOP3x Infravevővel (INT porta kötve)


Az infra jeleket EEPROM-ba tárolná a kontroller, nyomógomb nincs itt.
És 1-2 RGB led jelezné az állapotokat.

Nagyon fontos lenne, és mivel tényleg ismert a reciever, ezért lehet, hogy csak a programírás riasztja el a felhasználókat a szoftveres üzemmódtól.
(#) Toto25V hozzászólása Okt 16, 2011 /
 
Megkaptam a CS8416 programját. Ezenkívül az IR-hez is van tanuló program, egy projektben, valaki befejezné az írását?
(#) Toto25V hozzászólása Nov 4, 2011 /
 
Esetleg pénzért megoldaná valaki?

IR-ről, CS8416-ról már van példaprogram (header, C) csak úgy kéne összeállítani, hogy működjön. Fent leírva, pontosan mit is kellene.
Következő: »»   1 / 1
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem