Ansteurerung des MT8880C DTMF-Transceivers

Hallo. Mein Line-Interface funktioniert mittlerweile prima. Das Einzige was leider (noch) nicht klappt ist das Ansteuern des MT8880C. Dieser funktioniert einwandfrei, da ich mit einem Multimeter am Early Steering-Pin auch nachmessen kann, dass DTMF-Töne erkannt werden. Auch wenn ich in dem Chip die Steuer-Register beschreibe "scheint" alles zu klappt. Danach kann ich mit meinem PIC nämlich den IRQ-Pin auslesen, und diesen auch per Auslesen des Status-Registers zurücksetzen. Das einzige was jetzt noch nicht funktioniert ist das Auslesen der Daten, die vom MT8880C kommen. Vielleicht mache ich da irgendwas grob falsch mit dem Timing, aber am besten schaut mal einer von euch eben drüber. (Ich weiß...ich bin nicht in sci.informatik, aber dort gibts kein Topic zu dem Chip, und hier erscheinen mir die Leute doch recht firm.)

int mt8880_rxd() { int result; set_tris_b(63); (u.a. die pins b0-b3 als eingang schalten (dort hängt der Datenbus des MT8880C) output_high(mt8880_phi2); (phi2 habe ich im Moment zum Testen auf CS gelötet, daher der inverse Pegel) output_high(mt8880_rw); output_low(mt8880_rs0); delay_cycles(3); output_low(mt8880_phi2); result=(input_b() && 15); output_high(mt8880_phi2); return(result); }

Und im Main-Teil von dem Programm habe ich den B-Port folgendermaßen eingestellt:

port_b_pullups(true); output_b(0);

Mein Problem ist jetzt, das ich immer 1 als Ergebniss der Funktion bekomme. Am MT8880 kanns nicht liegen, da ich auch wenn ich das Status-Register auslesen 1 als Ergebniss bekomme. An der Verbindung PIC MT8880 liegts auch nicht. Die habe ich mehrmals durchgemessen.

Was läuft da bloß schief?

mfg

Reply to
Marcel Peters
Loading thread data ...

Das IC hat eine wenig einleuchtende Schnittstelle. An die Details kann ich mich nichtmehr erinnern aber ca.: Steuerung erfolgt über das 8 Bit (?) Register CR dessen beide Nibble auf derselben Adresse liegen.

  • Zugriff nur auf CRA mit Bit b3 RSEL = 0
  • oder sequentieller Zugriff auf CRA und CRB. Dann bei Zugriff auf CRA Bit b3 RSEL = 1. Danach Zugriff auf CRB. Es gibt auch noch andere Gründe warum ich das IC niemehr verwenden würde. Aber die gehirntote Schnittstelle ist sicherlich einer.

MfG JRD

Reply to
Rafael Deliano

Die etwas krumme Ansteuerung des 7bit Config-Registers (in je 4bit geteilt, wobei man im ersten Nibble einstellen kann wo der nächste Schreibzugriff hingehen soll) ist ja nicht das Problem. Das Problem liegt darin begraben, das ich dem Chip keine Daten entlocken kann.

mfg

"Rafael Deliano" schrieb im Newsbeitrag news: snipped-for-privacy@t-online.de...

MT8880C.

Reply to
Marcel Peters

Mein Kommentar hierzu: Listings in der Programmiersprache C sind nur bedingt hilfreich, da man nie weiß, was der Compiler daraus macht. Mit Assemblerprogramm testen. Timing bei Ansteuerung über Ports unkrititsch, da das IC ehedem am Bus eines Prozessors laufen sollte.

MfG JRD

Reply to
Rafael Deliano

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.