keilc 发表于 2009-4-16 13:33:22

MT8880怎么接手机啊?接语音输出端??我用示波器测了,按键时波形没什么变化,不知道是不是示

路过的朋友可以提些意见,或者讨论一下!!!!


MT8880怎么接手机啊?接语音输出端??我用示波器测了,按键时波形没什么变化,不知道是不是示波器问题。
MIC1P
麦克风 1 正极
MIC1N
麦克风 1 负极
SPK1P
受话器 1 正极
SPK1N
受话器 1 负极
个人认为DTMP-INPUT应该接SPKIP(语音端输入,翻译为受话器,英文为RECEIVER,翻译后为接收器、听筒)。
电路如下:mt8880提供
http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_436825.JPG
(原文件名:dtmf.JPG)
cs接地了!!!
附上资料提供的:
http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_437071.JPG
(原文件名:dtmf1.JPG)
程序如下:dtmf接收中断模式
#include "port128.h"
#include <avr/io.h>
#include "avrlibdefs.h"
#include <avr/interrupt.h>


//PORTA0-PORTA3:D0-D3
//PORTA4:RW
//PORTA5:RS0

#defineDTMFPORTA
unsigned chardata;
unsigned char dt_number=0;
unsigned char r_buf;


/* MT8880芯片初始化子函数 */
void MT8880_initialize(void)
{
       DTMF=0x3f;/* 读SR */
       DTMF=0x20;/* CRA=0000 */
       DTMF=0x20;/* CRA=0000 */
       DTMF=0x28;/* CRA=1000 */
       DTMF=0x20; /* CRB=0000 */
}
   


/* 接收初始化子函数 */
void MT8880_rece_init(void)
{
        cli();
        cbi(DDRD,1);
        sbi(PORTD,1);
        EIMSK=0xfd;//屏蔽int11111 1101
        EICRA=0xfe;//int1下降沿沿触发1111 1110
        EIFR |= 0x02;//清零intf1
        EIMSK|= 0x02;//使能int1
        sei();
}


/* 接收中断服务程序 */

SIGNAL(SIG_INTERRUPT1)
{
        cli();
        DTMF=0x3f;/* 读SR */
        DTMF=0x1f;/* 读RDR */
        r_buf=DTMF&0x0f;/* 保存 */
        sei();

}
/*
英文mt8880资料:
点击此处下载 ourdev_436852.pdf(文件大小:318K) (原文件名:mt8880.pdf)
中文mt8880资料:
点击此处下载 ourdev_436839.pdf(文件大小:181K) (原文件名:mt8880-1.pdf)
没听880论文集:
点击此处下载 ourdev_436938.pdf(文件大小:9.52M) (原文件名:dtmf论文集.pdf)

keilc 发表于 2009-4-17 17:18:12

1、找出点问题,中断一没打开。
2、clk通过一个电容接了晶振的一端。我用的片子是mega128,时序可能和51的不同。clk引脚接了porta。7,并加了延时。



问题还是多多。电话通后,按键没反应。不能进中断。(软件模拟可以的)

#include "port128.h"
#include <avr/io.h>
#include "avrlibdefs.h"
#include <avr/interrupt.h>
#include "dtmf.h"
#include "delay.h"

//PORTA0-PORTA3:D0-D3
//PORTA4:RW
//PORTA5:RS0
//PORTA6:CLK    ++++++   avr&micro;&yen;&AElig;&not;&raquo;ú&ordm;&Iacute;51&micro;&yen;&AElig;&not;&raquo;ú&Ecirc;±&ETH;ò&Icirc;&Ecirc;&Igrave;&acirc;&pound;&iquest;&para;&Ocirc;&Oacute;&Uacute;51&Iacute;¨&sup1;&yacute;&Ograve;&raquo;&cedil;&ouml;30p&micro;&Auml;&micro;&ccedil;×è&frac12;&Oacute;&frac34;§&Otilde;&ntilde;&sup1;&Uuml;&frac12;&Aring;&iexcl;&pound;&iexcl;&pound;&iexcl;&pound;&iexcl;&pound;&iexcl;&pound;&iexcl;&pound;

#defineDTMFPORTA
unsigned chardata;
unsigned char dt_number=0;
unsigned char r_buf;


/* MT8880&ETH;&frac34;&AElig;&not;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;×&Oacute;&ordm;&macr;&Ecirc;&yacute; */
void MT8880_initialize(void)
{
       DTMF=0x3f;/* &para;&Aacute;SR */
       DTMF |= 0x40; //CS=0;
       delay_1us();
       DTMF=0x20;/* CRA=0000 */
       DTMF &= 0xdf; //CS=1;


       DTMF |= 0x40; //CS=0;
       delay_1us();
       DTMF=0x20;/* CRA=0000 */
       DTMF &= 0xdf; //CS=1;



       DTMF |= 0x40; //CS=0;
       delay_1us();
       DTMF=0x28;/* CRA=1000 */
       DTMF &= 0xdf; //CS=1;

       DTMF |= 0x40; //CS=0;
       delay_1us();
       DTMF=0x20; /* CRB=0000 */
       DTMF &= 0xdf; //CS=1;
}
   


/* &frac12;&Oacute;&Ecirc;&Otilde;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;×&Oacute;&ordm;&macr;&Ecirc;&yacute; */
void MT8880_rece_init(void)
{
        cli();
        cbi(DDRD,1);
        sbi(PORTD,1);
        EIMSK &= 0xfd;//&AElig;&Aacute;±&Icirc;int11111 1101
        EICRA = (EICRA|0x08)&0xfb;//int1&Iuml;&Acirc;&frac12;&micro;&Ntilde;&Oslash;&Ntilde;&Oslash;&acute;&yen;·&cent; ****10**
        EIFR |= 0x02;//&Ccedil;&aring;&Aacute;&atilde;intf1
        EIMSK|= 0x02;//&Ecirc;&sup1;&Auml;&Uuml;int1
        sei();
}

/* &frac12;&Oacute;&Ecirc;&Otilde;&Ouml;&ETH;&para;&Iuml;·&thorn;&Icirc;&ntilde;&sup3;&Igrave;&ETH;ò */

SIGNAL(SIG_INTERRUPT1)
{
        cli();
        DTMF |= 0x40; //CS=0;
        delay_1us();
        DTMF=0x3f;/* &para;&Aacute;SR */
        DTMF &= 0xdf; //CS=1;

        DTMF |= 0x40; //CS=0;
        delay_1us();
        DTMF=0x1f;/* &para;&Aacute;RDR */
        DTMF &= 0xdf; //CS=1;


        r_buf=DTMF&0x0f;/* ±&pound;&acute;&aelig; */
        sei();

}


试验中,请路过的高手多多指教。

90999 发表于 2009-4-18 19:49:59

LZ是打算把固定电话当成手机用嘛?利用老N或者老M的退休手机,又想避免家里人不会用手机。

keilc 发表于 2009-4-20 20:05:56

不是的!想给手机加上自动语音提示的功能。就像拨打10086一样!!!

keilc 发表于 2009-4-20 20:14:40

现在基本上确定dtmf_in就是接语音的输出端。
今天空闲时,又改了改程序严格按照资料上的来的。只是资料上的延时不是很确定说得不是很清楚。不知道怎么办。IRQ端的中断拨号时总打不开。
措施一:改查询方式,状态寄存器的接受位竟然一直是1。
措施二:自己写数据寄存器,然后在自己读。用jtag调试。一点反应没有。
现在想确定mt8880是不是坏的!!!!

各位大侠有没有什么高招啊!资料上有个测试的,看不太懂!!!

keilc 发表于 2009-6-15 14:09:32

帖子沉了,顶一顶!!!!

keilc 发表于 2009-6-15 14:09:56

帖子沉了,顶一顶!!!!

zhiwei 发表于 2009-6-15 21:12:59

手机声音比较弱吧,可那检不出来。
页: [1]
查看完整版本: MT8880怎么接手机啊?接语音输出端??我用示波器测了,按键时波形没什么变化,不知道是不是示