Hallo :)
Ich hab noch nie was mit I2C gemacht, will aber ganz gern einen PCM3070
ansteuern.
Ich hab schon oft mit div. AT Mega Controllern PWM gemacht, dabei muss
man ja nur Register setzen und diese mit Werte füttern, eigentlich ganz
easy. Nun sehe ich dass Atmel die TWI Hardwareschnittstelle hat, ist es
damit ähnlich einfach einen den PCM3070 anzusprechen? Also einfach
Register aktivieren und mit Daten füttern??
Viele Grüße
Ampler
Ja ist es. Nur mit dem Unterschied, das I2C ein Bussystem ist. Da gibt
es Interaktionen, die du durch Auslesen von Registern mitegeteilt
bekommst und wo Du (die Software) dann drauf reagieren musst.
Im Ergebnis musst Du wohl eine kleine Schrittkette zusammenbauen. Ist
aber ordentlich im DB beschrieben.
Dein PWM ist schon eher mit der blinkenden LED, die die meisten von uns
zum Laufen gebracht haben verwandt. Nur meist etwas schneller.
I²C eher mit der seriellen Datenübertragung via RS232 oder einem CAN-Bus
vergleichbar.
Ampler schrieb:> Nun sehe ich dass Atmel die TWI Hardwareschnittstelle hat, ist es> damit ähnlich einfach einen den PCM3070 anzusprechen?
Es ist relativ einfach, sobald man erst mal dahinter gestiegen ist und
die Fallstricke überwunden hat. Der PCM3070 kann aber auch SPI, damit
ist es wirklich simpel.
Ampler schrieb:> Hallo :)>> Ich hab noch nie was mit I2C gemacht, will aber ganz gern einen PCM3070> ansteuern.>> Ich hab schon oft mit div. AT Mega Controllern PWM gemacht, dabei muss> man ja nur Register setzen und diese mit Werte füttern, eigentlich ganz> easy. Nun sehe ich dass Atmel die TWI Hardwareschnittstelle hat, ist es> damit ähnlich einfach einen den PCM3070 anzusprechen? Also einfach> Register aktivieren und mit Daten füttern??>> Viele Grüße> Ampler
Es ist nicht vergleichbar und nicht so einfach wie bei PWM.
I2C ist ein Bus, und du musst gewisse Reihenfolgen/Regeln einhalten.
http://www.best-microcontroller-projects.com/i2c-tutorial.htmlhttp://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html
Du solltest Aufmerksam das Datenblatt des Geräts das du ansprechen
willst studieren. Dort stehen die wichtigen Adressen drin die du
benötigen wirst.
Und das wichtigste, der Standardablauf zum Senden von Daten an ein
Device:
1. Send a start sequence
2. Send 0xE0 ( I2C address of the SRF08 with the R/W bit low (even
address)
3. Send 0x00 (Internal address of the command register)
4. Send 0x51 (The command to start the SRF08 ranging)
5. Send the stop sequence.
Hälst du dich am Anfang daran, so ist ein Debuggen einfach und es sollte
recht flott problemlos funktionieren. Danach kannst du dann, um die
Geschwindigkeit zu steigern, nach Punkt 4 direkt weitere Daten senden.
Dies erfordert aber meist eine Änderung von 3., sodass man dort am
Anfang nur Fehler reinbaut, wenn man den I2C Bus zum ersten mal benutzt.
Hi
>Ok Danke für die Infos ich werd mir einfach mal einen PCM3070 bestellen>und rumprobieren. Vielleicht krige ichs ja hin :)
Warum siehst du dir nicht die passenden Application Notes auf der
ATMEL-Seite an?
MfG Spess
Ich hab mir den PCM3070 soeben bestellt und werde es probieren.
Mir ist leider noch nicht so ganz klar wie ich die Filter des miniDSP's
einstellen kann, Volume Control und Routing sind klar dazu muss man
"einfach" nur die entsprechenden Register mit Werten füllen, bei den
Filtern ist das irgendwie komplizierter.
Es ist für mich nicht ersichtlich wie ich Trennfrequenz, Filtergüte und
Q einstellen kann aber vielleicht fällt der Groschen wenn ich das Teil
vor mir liegen hab.
Interessantes Teil, der PCM 3070, aber sicher nicht ganz einfach. Wohl
ähnlich komplex wie ein Mikrokontroller. Wo kann man ihn bekommen ?
Die Beschreibung der Register und Möglichkeiten gibt es hier:
http://www.ti.com/lit/ug/slau332/slau332.pdf
Zum Experimentieren würde ich mir erstmal einen I2C-Adapter für den PC
besorgen, mit dem man beliebige einzelne I2C-Kommandos abschicken kann.
Bei Digikey ist zwar der Preis 6,34 annehmbar, aber die Versandkosten
mit 18,00 doch ein wenig hoch. lohnt sich wohl erst bei höheren
Stückzahlen dort zu kaufen.
Habs auch bei Farnell gesehen, 7,51. Mit Versand und Mwst dann 18,87.
Ich hab ihn zusammen mit anderen Teilen bei Farnell über die Arbeit
bestellt. Sollte heute vielleicht schon kommen :)
I2C Adapter für den PC? Über USB? Das klingt interessant, ich denke da
besorg ich mir einen.
Ich glaub aber man kann die Filter und DSP Einstellungen nur über die
TruePath Software machen, ist das richtig?
Ich wüsste nicht was es bringen sollte über PC. Der DAC verwendet den
I2C/SPI Bus ja nur für die Steuerung, Audio Daten werden über einen
seperaten I2S, oder einen anderen unterstützten Bus gesendet.
So wie ich beim kurzen Überblicken des Datenblatts verstanden habe
kannst du in den miniDSP ein Programm laden, welches du mit der TruePath
Software erstellst, mit deinem uC dann aber beim Start in den IC
reinladen musst.
Die Filter musst du in Register dir zusammenbauen können (S.22)
Schade, das das Eval Board so teuer ist, den TAS3208 gabs für knapp
einen Hunderter weniger und das war ein kompletter DSP mit I2C
Bootloader und '51 MCU onboard. Sieht aber trotzdem nach einem
interessanten Teil aus. Für die User-Biquad Filter solltest du dir evtl.
mal ein Filterberechner Programm holen und ein wenig damit rumspielen.
Ein 5-Band EQ sollte damit jedenfalls machbar sein.
Mir fehlt noch der direkte S/PDIF Ausgang, den der TAS3208 auch gleich
hatte.
Frank M. schrieb:> So wie ich beim kurzen Überblicken des Datenblatts verstanden habe> kannst du in den miniDSP ein Programm laden, welches du mit der TruePath> Software erstellst, mit deinem uC dann aber beim Start in den IC> reinladen musst.
Bitte haltet mich nicht für blöd aber ich hab das noch nie gemacht. Die
TruePath Software erstellt eine cfg- Datei.
Die cfg-Datei muss ich dann in hex umwandeln damit ich die in den µC
bekomme, richtig?
Wie mach ich das programmiertechnisch? Also angemommen ich schieb das
Programm (mit der Steuersoftware für den kompletten Amp, für Display,
Volume, Eingangswahl etc...) im Atmel Studio auf den Atmel (z.b. den
ATMega32), wie bastle ich das cfg File für den PCM3070 da mit rein? Oder
brauch ich dafür einen eigenen Eeprom auf dem nix anderes als die cfg
File im Hexformat liegt und wo ich dann Byte für Byte aus dem Eeprom in
den PCM3070 schaufle?
Ampler schrieb:> Wie mach ich das programmiertechnisch? Also angemommen ich schieb das> Programm (mit der Steuersoftware für den kompletten Amp, für Display,> Volume, Eingangswahl etc...) im Atmel Studio auf den Atmel (z.b. den> ATMega32), wie bastle ich das cfg File für den PCM3070 da mit rein?
wie sieht denn so ein cfg File aus?
Karl Heinz Buchegger schrieb:> Ampler schrieb:>>> Wie mach ich das programmiertechnisch? Also angemommen ich schieb das>> Programm (mit der Steuersoftware für den kompletten Amp, für Display,>> Volume, Eingangswahl etc...) im Atmel Studio auf den Atmel (z.b. den>> ATMega32), wie bastle ich das cfg File für den PCM3070 da mit rein?>> wie sieht denn so ein cfg File aus?
Ich hab noch keine gesehen, nur ein kurzes Tutorial auf Youtube
angeschaut wo gesagt wird dass ein cfg File erstellt wird das man dann
in den PCM laden muss.
Ampler schrieb:> Wie mach ich das programmiertechnisch? Also angemommen ich schieb das> Programm (mit der Steuersoftware für den kompletten Amp, für Display,> Volume, Eingangswahl etc...) im Atmel Studio auf den Atmel (z.b. den> ATMega32), wie bastle ich das cfg File für den PCM3070 da mit rein? Oder> brauch ich dafür einen eigenen Eeprom auf dem nix anderes als die cfg> File im Hexformat liegt und wo ich dann Byte für Byte aus dem Eeprom in> den PCM3070 schaufle?
Ist das nicht mal erst nebensächlich? Brauchst du den miniDSP übehaupt
am Anfang?
Ich würde mich erst einmal darum kümmern das Teil in Betrieb zu nehmen,
bevor ich mir Gedanken darüber mache wie ich den miniDSP Programmiere,
da das ja dann schon sehr abgefahren wird. Und du sicherlich schon
einige Tage damit verbringen wirst die Grundlegenden Funktionen dieses
doch sehr sehr umfangreichen ICs zu implementieren.
Durch den miniDSP bekommst du dann einen Equalizer etc hin, was jetzt
für den ersten Betrieb bestimmt noch nicht notwendig ist.
Ich weiß auch nicht wie es wirklich geht. Aber wenn man sich das
Datenblatt mal wieder anschaut, dann sieht man doch, dass Register
80-114 und Register 152-186 die Instruktionen für den ADC und DAC
miniDSP enthalten. Also da muss das cfg File dann reingeschrieben
werden.
Am einfachsten ist es, da du ja vermutlich eh eine SD-Karte benutzt auf
der du die Daten aufzeichnest und abspielst, das CFG File direkt von der
SD-Karte am Anfang in die Register rein zu laden. Dadurch musst du den
uC auch nicht jedes mal neu programmieren, wenn du bspw. den EQ ändern
willst, sondern kannst einfach das cfg File auf der SD-Karte mit einem
anderen ersetzen.
Du kannst es natürlich auch im Programmcode speichern, ähnlich wie
Bilder oder Schriften im uC implementiert werden und dieses konstante
Array dann in den IC laden.