Autor Tema: MT8888C  (Leído 2087 veces)

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

Desconectado edwinkarol

  • PIC10
  • *
  • Mensajes: 4
MT8888C
« en: 09 de Agosto de 2004, 15:47:00 »
Necesito detectar y generar tonos con el MT8888C con un microcontrolador PIC16F628 por favor si hay alguien que me pueda ayudar con el circuito y el programa gracias

Desconectado odukec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 174
RE: MT8888C
« Respuesta #1 en: 10 de Agosto de 2004, 09:54:00 »
Hola..

Yo uso el cm8888 y creo que es muy parecido..
Todo lo programo en lenguaje c.. de CCS, e hice una "libreria" para manejar este integrado.. no se si te sirva..

Saludos

Desconectado edwinkarol

  • PIC10
  • *
  • Mensajes: 4
RE: MT8888C
« Respuesta #2 en: 10 de Agosto de 2004, 17:52:00 »
Te agradecería si me puedes enviar esa información con el circuito yo veré como lo hago funcionar
Gracias

Desconectado odukec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 174
RE: MT8888C
« Respuesta #3 en: 11 de Agosto de 2004, 08:34:00 »
Hola

Codigo:

/****************************************************
*****************************************************
                                             RA0 --> CS                                                                          
   RB1 --> WR                               
   RB2 --> RS0                               
   RB3 --> RD                               
   RB4 --> D0                               
   RB5 --> D1                               
   RB6 --> D2                               
   RB7 --> D3                               
                                           
   RB0 --> Libre para Interrupción         
   Este pin puede accederse mediante      
   cm.inter                                 
                                           
*****************************************************
*****************************************************/


#define set_tris_cm(x) set_tris_b(x)

#define CS_LOW output_low(PIN_A0)
#define CS_HIGH output_high(PIN_A0)

//BYTE  dato;

struct cm_pin_map{

      BOOLEAN inter;
      int   cont :3;
      int   data :4;
} cm;

#byte cm = 6

struct cm_pin_map const CM_WRITE = {1,0,0};
struct cm_pin_map const CM_READ = {1,0,15};

void escr_reg_con(BYTE n){

      CS_LOW;
      cm.cont=6;
      delay_cycles(1);
      set_tris_cm(CM_WRITE);
      delay_ms(2);
      cm.data=n;
      delay_ms(10);
      CS_HIGH;
      cm.cont=5;
      delay_ms(10);
      set_tris_cm(CM_READ);
}


void escr_reg_dat(BYTE n){

      escr_reg_con(1);
      CS_LOW;
      cm.cont=4;
      delay_cycles(1);
      set_tris_cm(CM_WRITE);
      delay_ms(2);
      cm.data=n;
      delay_ms(10);
      CS_HIGH;
      cm.cont=5;
      delay_ms(10);
      set_tris_cm(CM_READ);
}

BYTE lee_reg_sta(){
      BYTE buf;
      set_tris_cm(CM_READ);
      CS_LOW;
      cm.cont=3;
      delay_cycles(1);
      buf=cm.data;
      delay_ms(10);
      CS_HIGH;
      cm.cont=5;
      delay_ms(10);
      //set_tris_cm(CM_READ);
      return (buf);
}

BYTE lee_reg_dat(){
      BYTE buf;
      set_tris_cm(CM_READ);
      CS_LOW;
      cm.cont=1;
      delay_cycles(1);
      buf=cm.data;
      delay_ms(10);
      CS_HIGH;
      cm.cont=5;
      delay_ms(10);
      //set_tris_cm(CM_READ);
      return (buf);
}



Saludos

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: MT8888C
« Respuesta #4 en: 01 de Marzo de 2009, 05:09:26 »
HOla!

oye que buen aporte de tu codigo!

estoy trabajando con el cm8888 pero apenas y voy a comenzar a montar el hard y etc...

y pues no se si seria mucha molestia pedirte cuales serian los pasos a seguir para recivir y generar tonos con este integrado...

tengo entendido algunas cositas sobre este integrado (que por un pin genera tonos, por otro pin los detecta... que tiene un registro A, registro B, un registro estatus...  que hay que "seleccionarlo" con el pin cs a cero  y etc... )pero en cuanto al algoritmo para hacer deteccion o generacion si estoy como perdido y pues si me pudieras ayudar te lo agradeceria mucho...

a lo que me refiero mas explicitamente es como acceder a cada uno de estos registros... y otra duda que tengo es si los bits de estos registros se pueden leer o modificar mediante los bits D0 a D3...

por cierto yo trabajo en mikrobasic... si soy capaz d hacer algun programa funcional o alguna libreria la compartiria con gusto
« Última modificación: 01 de Marzo de 2009, 17:16:50 por ekud »
No cometas el crimen varon si no vas a cumplir la condena

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: MT8888C
« Respuesta #5 en: 02 de Marzo de 2009, 05:35:26 »
Despues de mucho pelear con mi fluido ingles  :D aplicado al datasheet del cm8888 pude solucionar muchas de mis dudas... y ahora entiendo gran parte de tu codigo... ( digo gran parte por que mi fuerte no es el C )

Y pues bien ya tengo entendido como cambiar entre los registros de control A y B y como configurarlos, ademas tambien entendi bien como leer el registro estatus y lo que significa su lectura... tambien tengo entendido ya como escribir y leer el registro de datos y tambien tengo claro lo de las interruppciones por el pin IRQ.

Asi las cosas me asaltan dos dudas... la funcion call progress es que??? o para que sirve??? me detecta una llamada entrante o me detecta que en el telefono al que estoy llamando me contestaron???

y la otra duda es en algunas partes de tu codigo... principalmente al final de cada procedimiento o funcion... mejor dicho me refiero a estas lineas:

Código: [Seleccionar]
      CS_HIGH;
      cm.cont=5;
      delay_ms(10);
      set_tris_cm(CM_READ)

-con la primera tengo entendido que "Des-seleccionas" el cm8888 (que ya lo seleccionas a la entrada de cada funcion o procedimiento)

-con la segunda no tengo ni idea que configuras

-luego con la tercera te tomas un tiempo (tal vez para esperar k termine d configurarse el cm8888

-y en la cuarta configuras como entradas los bits ( me imagino que son bits del micro)


Pero d todas estas la ke mas me confunde es "cm.cont=5"... si no me ekivoco con "cm.cont" configuras los bits RD, RS0 y WR (en ese orden), asi pues con "cm.cont=5" tendrias RD = 1   RS0 = 0   WR = 1 pero no encuentro esta configuracion en el datasheet....

entonces hay si me corche!

jeje

« Última modificación: 02 de Marzo de 2009, 05:40:18 por ekud »
No cometas el crimen varon si no vas a cumplir la condena

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: MT8888C
« Respuesta #6 en: 10 de Marzo de 2009, 05:09:30 »
Bueno despues d un par d dolores d cabeza creo entender lo que logras con cm = 5... si me ekivoco por favor avisame...

Citar
Pero d todas estas la ke mas me confunde es "cm.cont=5"... si no me ekivoco con "cm.cont" configuras los bits RD, RS0 y WR (en ese orden), asi pues con "cm.cont=5" tendrias RD = 1   RS0 = 0   WR = 1 pero no encuentro esta configuracion en el datasheet....

si pones a uno RD y WR le estarias diciendo al cm8888 k ni lea ni escriba nada... no?

No cometas el crimen varon si no vas a cumplir la condena