M
Marcel Peters
Guest
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
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