Autor Tema: Problemas con MT8870  (Leído 2993 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado LEONARDO_59

  • PIC10
  • *
  • Mensajes: 9
Problemas con MT8870
« en: 18 de Agosto de 2007, 18:29:04 »
amigos, espero que alguien pueda ayudarme, tengo un circuito standard del decodificador de tonos dtmf mt8870de, he realizado multiples cambios al circuito, lo tengo con los cap de 100nf res de 390k 100k xtal de 3.57 y hasta el momento no decodifica los tonos que le estoy generando desde mi PC, la pregunta es ¿es necesario que los tonos vayan acompañados con voltage?...  en todo caso cual sería mi problema ya que con las diferentes variaciones no he logrado que los leds indicadores se enciendan mostrandome los binarios, el circuito es de modo de entrada única...... Gracias

LEONARDO
LEONARDO_59

Desconectado bikertron

  • PIC10
  • *
  • Mensajes: 27
Re: Problemas con MT8870
« Respuesta #1 en: 16 de Enero de 2008, 17:06:47 »
La puesta en marcha del mt8870 es muy sencilla si lo tienes bien conectado, el modo de conexión esta muy explicito en el datasheet
el resto es codigo

aca te dejo un codigo para que lo estudies

Código: [Seleccionar]

///////////////////////
//RECEPTOR DTMF//
///////////////////////

#define DTMF_Q4 PIN_B1
#define DTMF_Q3 PIN_B2
#define DTMF_Q2 PIN_B3
#define DTMF_Q1 PIN_B4  //el pin B0 lo tengo como interrupción externa del pic para cuando el integrado detecta un numero configurado de low to high

/*ext_int_edge(L_TO_H);
   enable_interrupts(INT_EXT);*/

//////////////////
//FUNCIONES//
/////////////////

// cuando se activa la interrupción levanto una bandera para luego en un loop infinito detecto la bandera y llamo la función y bajo la bandera

void almacenar_numero_linea()
   { 
     putc('A');
     delay_ms(10);
     Q1=input(DTMF_Q1);
     Q2=input(DTMF_Q2);
     Q3=input(DTMF_Q3);
     Q4=input(DTMF_Q4);
     
     if(Q1==1)
     bit_set(numero,0);
     if(Q1==0)
     bit_clear(numero,0);
     if(Q2==1)
     bit_set(numero,1);
     if(Q2==0)
     bit_clear(numero,1);
     if(Q3==1)
     bit_set(numero,2);
     if(Q3==0)
     bit_clear(numero,2);
     if(Q4==1)
     bit_set(numero,3);
     if(Q4==0)
     bit_clear(numero,3);
     printf(" %u ",numero);
     numerodis[i]=numero;  // numerodis[] es un vector de tamaño i de 8 bit donde se almacenan los numeros discados
     ++i;
    }

Apaga la tele!!!!!!!  y movilizate en bicicleta...


 

anything