AC97 Codec an dsPIC

Gast #418806
Lesenswert?

Ich versuche seit Stunden einen AC97 Codec am DCI eines dsPIC30F4013 zum
 Laufen zu bekommen.
Der dspic wird mit 117MHz getaktet und läuft. Das DCI wird
initialisiert (die Ausgänge gehen auf Low, die Eingänge auf tristate),
der AC97 Codec (ein WM9701) liefert den 12,288MHz Bittakt, nur der
dspic reagiert nicht auf diesen Takt. Es werden also keine FrameSync
Signale erzeugt und keine Daten übertragen.
Wenn ich den Bittakt auf intern umschalte, erzeugt der dspic den
Bittakt, Framesync und überträgt Daten. Die Initialisierung müsste also
passen, aber wieso arbeitet der dspic nicht mit externem Takt ?
Angehängte Dateien:
Gast #521032
Lesenswert?

Hallo,
wurde das Problem je gelöst ?

Ich benutze den DCI eines dsPIC30F4013 im IIS Frame Sync Mode, CSCK & 
COFSD = Input, DJST = 0, Frame länge = 1 Wort.
CSDO wird 0, Eingänge werden Tristate, Clock, CSDI und Frame Impuls 
liegen an trotzdem keine Datenausgabe auf CSDO
Auch wenn DLOOP = 1 wird CSDI nicht an CSDO durchgereicht.

Der dsPIC bekommt einen 4.096 Mhz Takt mit ECIO *4 (16,384Mhz)
Der IIS Codec bekommt den gleichen 4Mhz Takt *3 (12,288Mhz)
Der Bittakt beträgt 512Khz

Mein Hardwaredesign läßt keinen Masterbetrieb des dsPIC zu, deswegen ist 
das noch ungetestet.

Hat hier jemand den DCI des dsPIC30F4013 überhaupt schon mal im Slave 
Mode zum laufen gebracht ?
Wenn ja, welche Chip Revision ? Ich habe hier die Rev A1
Für den großen Bruder, den dsPIC30F6013 beschreibt das Errata Sheet eine 
Fehlfunktion (keine Details) des DCI im beschriebenen Slave Betrieb wenn 
Framelängen > 1 Wort eingestellt sind. Für den 4013 ist nichts 
dergleichen beschrieben.
Gast #523277
Lesenswert?

Bei mir: Master & slave Mode, Senden ok, Empfang = 0 !

Dieser Fehler ist seit dem 17.Jan.2006 bei Microchip bekannt, nur das 
der Microchip Tech. Support nichts davon weiß.
Ebensowenig wie die aktuelle Errata, Family Reference, dsPic30F4013 
Datasheet, der neue MPLAB C30 Compiler V2.05, die Language tools 
libraries oder, oder, oder. Kursieren tut die Lösung im Microchip Forum 
und als Beispielcode unter dsPic Code Examples auf der Web Site.
Das Geheimniss ist das der DCI gemeinsam mit dem AD Konverter genutzt 
wird und nicht die Kontrolle über den CDI erlangt, wenn nicht der AD Pin 
auf Digital In gestellt wird. Über den Rest seiner Pins kann er aber 
anscheinend trotzdem frei verfügen was die Sache natürlich 
undurchschaubar macht.
Die Fam. Ref ist ja auch nur 772 Seiten lang + das Datasheet mit 220 
Seiten .
Ich währe da schon irgendwann drauf gekommen wenn ich das Geraffel von 
Anfang bis Ende durchgelesen hätte. Hab ja auch sonst nichts zu tun.

ADPCFG |=0x0F00; // ist die Lösung

Das witzige war, sobald ich in den Debug Modus gewechselt bin, mit dem 
ICD2 als Debugger, war der Fehler weg. Auch dieses Verhalten hat sich 
der Tech. Support nicht die Mühe gemacht mir zu erklären.

Hab ich einen Hals.....

@benedikt
Danke für Deine Antwort, ich dachte schon ich würde es als einziger 
nicht raffen...
Gast #523998
Lesenswert?

Ein Fehler kommt selten alleine...
ADPCFG = 0x1E00;
Sonst ist AN8 auf Dig Input statt COFS, d.h. der slave frame geht nicht.

Bei einem sich dem slave frame modus verweigernden SPI Bus könnte das 
setzen von AN2 auf Dig. In auch helfen. Ich hab zwar schon alles 
umgestrickt weil der Mist nicht lief, aber versuchen werde ich das auch 
noch mal.

Mit Deiner Aussage hast Du zwar völlig recht, aber wenn denn irgendwann 
einmal alle Bugs raus, bzw. wenigstens vernünftig dokumentiert sind, und 
die dsPics die Stabilität eines 8031 erreicht haben, kommt das der 
eierlegenden Wollmilchsau ziemlich nahe.
Die Typenvielfalt sucht man woanders vergebens und das Preis- 
Leistungsverhältniss würde stimmen, wenn man nicht so eine elendig lange 
Zeit mit Fehlersuche verbringen könnte.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren