• Sábado 21 de Diciembre de 2024, 15:23

Autor Tema:  Cargar Una E2prom Con Usart Del 16f628  (Leído 10830 veces)

microman

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Cargar Una E2prom Con Usart Del 16f628
« en: Jueves 17 de Marzo de 2005, 20:37 »
0
hola gente del foro, soy nuevo por aca y decidi ingresar ya q observe la seriedad con la cual se manejan Uds. Ademas tengo un problemita ya q deseo leer o grabar una memoria E2prom externa mediante un pic q en lo posible tiene q ser el 16f628 el cual soporta transferencia serie tipo USART, y no se como puedo lograr ello.  :) Espero q puedan ayudarme

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #1 en: Jueves 17 de Marzo de 2005, 22:24 »
0
Hola Microman! En primer lugar tendrías que decirnos que tipo de eeprom es, si es una 24Cx, ó 93Cx. La primera se comunica por el puerto I2C, y la segunda por SPI (ambas opciones están en el 16F628). Al puerto serie (USART) normalmente no se conectan éstas memorias :)
Bueno, espero poder ayudar en algo; y bienvenido! :D

Saludos!

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #2 en: Jueves 17 de Marzo de 2005, 23:14 »
0
Se conectan al modulo MSSP configurado como I2C o SPI segun lo necesites, responde el tipo de memoria que utilizas y te damos un aventon. Saludos :) y Bienvenido! :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

microman

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #3 en: Sábado 19 de Marzo de 2005, 00:18 »
0
Aaaaaah yo crei q con el USART podria llegar a lograr mi cometido(q errado q estaba entonces), la memoria es de la linea 24LC como puede ser una 24LC512 q si la consigo la utilizare. Estube mirando pero no se me ocurre como realizar el programa, pueden ayudarme.
Por otro lado soy de Posadas_Misiones_Argentina me desempeño como docente en la seccion Electromecanica de una Escuela Tecnica y como veran me interesa el uso de microcontroladores.
El fin de todo esto o a q quiero llegar es: conectar el micro a una memoria y a un LCD de caracteres y previamente dentro de la E2prom tener grabados rutinas de lecturas de puertos, retardos etc, entonces creo un programa con la ayuda del entorno grafico del LCD y lo vuelco a un PIC externo q tiene E/S y lo dejo funcionando.
Nos mantenemos en contacto, GRACIAS!!!!!!!!!! :hola:

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #4 en: Sábado 19 de Marzo de 2005, 08:11 »
0
Hola ! Bueno, las rutinas de lectura de puertos, retardos, etc. van en la memoria flash del micro, que no es lo mismo que la EEPROM. Depende para que necesites EEPROM, es decir que cantidad de datos quieres almacenar, el 16F628 tiene 128 bytes de E2 (para abreviar) interna; son muy fáciles de manejar.
Si tienes un LCD, los textos a escribir que no varíen, p.e. títulos, menus, etc. van en la flash.
Hojeando el manual del 628, me doy cuenta ahora de que éste no tiene implementado modulo MSSP; así que perdón por el error de uno de los mensajes anteriores :huh:  Viendo esto, vas a tener que implenetar la comunicación por soft... cosa que funciona. Hace poco dejé un poco de código en una discución iniciada por Elisa Marti, fijate, en una de esas te sirve...
Bueno, espero que puedas hacer tu proyecto.
Saludos!

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #5 en: Sábado 19 de Marzo de 2005, 09:14 »
0
Citar
Hojeando el manual del 628, me doy cuenta ahora de que éste no tiene implementado modulo MSSP; así que perdón por el error de uno de los mensajes anteriores

- Que hermosa mala noticia me has dado Huguen :( .. pido disculpas, pense que este microcontrolador por ser el que reemplaza al PIC16F84 y al tener modulo USART disponia tambien de modulo MSSP. Mil disculpas y como dice Huguen deberas reemplazar la falta de modulo MSSP elaborando la comunicacion por software tal como hizo Eliza_Marti en un PIC16F84A: http://foros.solocodigo.com/index.php?showtopic=14045 ... pido disculpas por mi descuido, te respondi sin antes consultar el datasheet del micro y ahora que veo es mala noticia para mi ya que tenia algunas cositas en mente con el PIC16F628 :( .. que macana  :unsure: . Un Abrazo!  :)
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #6 en: Sábado 19 de Marzo de 2005, 15:28 »
0
Hola Jonathan! En realidad el error fue mío, pero no importa... Lo bueno es que nos dimos cuenta antes de meter más la pata :D

Saludos!

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #7 en: Domingo 20 de Marzo de 2005, 06:27 »
0
jejeje, solo por descuidados  :ph34r: ... me gustaria saber si ya probo el programa que le pasaste a Eliza... talves si no le funciono podriamos hecharle un cable. Saludos :)
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

pikman

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #8 en: Martes 12 de Abril de 2005, 08:55 »
0
Hola, bueno, en primer lugar quiero decirles que me parece impecable este foro, con respecto al debate planteado, pues puedo ayudarle a quien le interese con rutinas I2C, en ASM para usar con cualquier microcontrolador de MicroChip y con algunos cambios otras marcas, de cualquier manera les recomiendo mirar el PIC16F88, que ademas de tener un precio inferior al 16F84 y similar al 16F628, posee el MSSP, conversor A/D de 10 bits de resolucion, 8 mhz de reloj interno de 4  frecuencias seleccionables, USART, ICSP, permite utilizar debug in circuit y ademas tiene 4 KW de memoria, 4 veces mas que el famoso 16F84A, y 256 bytes de memoria eeprom, creo que definitivamente no tiene sentido usar otro micro en caso de necesitar caracteristicas similares, y  es compatible pin a pin, con los sus antecesores, realmente una maravilla, bueno espero que les sirva y a vuestra disposicion.............


Ariel / PikMan

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #9 en: Miércoles 13 de Abril de 2005, 15:49 »
0
Bienvenido pikman!!  :lol: gracias por tu interes en ayudar y por la descripcion y recomendacion del pic16f88 ;) .. si es posible y quieres podrias colgar en un post las rutinas que mencionas, ya hay unas que deje para la serie con modulo MSSP y otras que dejo Huguen_aus_Tirol, pero nunca esta demas tener otras mas :). Las gracias anticipadas y espero te sientas a gusto en el foro. Saludos! :)
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

pikman

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #10 en: Lunes 16 de Mayo de 2005, 05:44 »
0
Hola, bueno, aqui dejo el codigo, como esta funciona en un 16F877 u otro que tenga puerto C, por lo tanto hay que modificar esto, tambien debe usarse la instruccion tris para los 16CX (los de 12 bits) en lugar de cargar el registro tris, por lo tanto si se pretende usar un PIC16C55 por ejemplo ( pues este posee port C), se debe reemplazar esto

bsf   STATUS,RP0
   movlw   b'11100111'
   movwf   TRISC
bcf   STATUS,RP0

por

   movlw   b'11100111'
                tris            portc

Y  ademas las direcciones de los registros de RAM, que pueden lelgar a ser posiciones usadas en otros procesos, o bueno si les sobra memoria las dejas solo para esto, pero no olviden este precioso detalle.

Como podran observar mas abajo, cada vez que se realiza una operacion se programa el sentido de los pines, se puede llegar a optimizar, y eliminar algunas
operaciones pero para entender la rutina se las dejo asi, y por supuesto no olviden que el valor binario que cargan al registro debe contener las direcciones fijas de los otro pines, y por ultimo las lineas SDA y SCL deben tener una resistencia de PULL-UP de 100K al +VCC, en algunos circuitos omiten la de SDA, pero les aconsejo porner las dos si no le puede llegar a doler la cabeza.
Es posible, en los micros que lo disponen, activar en el portB los week pullup, con esto se pueden omitir las resistencias internas.
Al final hay dos rutinas una que lee y  otra que escribe un byte determinado de la memoria.
No todas las 24XX son iguales, de la 24C16 en adelante la direccion es de 16 bits, y si se va usar la 24LC16 mucha atencion que su direccionamiento no es igual, de cualquier modo les recomiendo leer la hoja de datos de la memoria que vayan a utilizar, basicamente estas rutinas pueden ser usadas para cualquiera.

saludos y espero que les sirva.

PIKMAN / ARIEL




;====================================================================
; Definicion de registros auxiliares en RAM para manejo de la memoria
; Rutina generica para microcontroladores sin MSSP, totalmente
; FIRMWARE es aplicable en cualquier microcontrolador, de la linea 16c6xx
; para los 16c5x hay que modificar los registros TRIS si no no anda
;====================================================================
ADDR   equ   0x30 ; direccion a escribir
DATAO   equ   0x31 ; dato a escribir
SLAVE   equ   0x32 ; direccion de esclavo
TXBUF   equ   0x33 ; buffer de tx
COUNT   equ   0x34
EEPROM   equ   0x35
RXBUF   equ   0x36 ; buffer de rx
LOOPS   equ   0x37
LOOPS2   equ   0x38
BCOUNT  equ   0x39

; Definicion de Bits Para para manejo de la memoria

DI   equ   7    ; bits internos
DO   equ   6    
SDATA   equ   4    ; pines SDA ( datos) y SCL ( clock ) I2C
SCLK   equ   3    ; en este caso programa los pines 3 y 4
                                      ; modificar segun circuito.



;==============RUTINA PARA GENERAR BIT DE START===================

BSTART
   bsf   STATUS,RP0
   movlw   b'11100111'
   movwf   TRISC
   bcf   STATUS,RP0   
   bcf   PORTC,SCLK
   bsf   PORTC,SDATA
   nop
   bsf   PORTC,SCLK
   nop
   nop
   nop
   nop
   nop
   bcf   PORTC,SDATA
   nop
   nop
   nop
   nop
   nop
   bcf   PORTC,SCLK
   nop
   nop
   return

;==============RUTINA PARA GENERAR BIT DE STOP===================

BSTOP
   bsf   STATUS,RP0
   movlw   b'11100111'
   movwf   TRISC
   bcf   STATUS,RP0   
   bcf   PORTC,SCLK
   bcf   PORTC,SDATA
   nop
   nop
   nop
   bsf   PORTC,SCLK
   nop
   nop
   nop
   bsf   PORTC,SDATA
   nop
   nop
   bcf   PORTC,SCLK
   nop
   nop
   nop
   return

;==============RUTINA PARA ENVIAR BIT HACIA LA MEMORIA============

BITOUT
   bsf   STATUS,RP0
   movlw   b'11100111'
   movwf   TRISC
   bcf   STATUS,RP0   
   bcf   PORTC,SCLK
   bsf   PORTC,SDATA
   btfss   EEPROM,DO
   bcf   PORTC,SDATA
   nop
   nop
   bsf   PORTC,SCLK
   nop
   nop
   nop
   nop
   bcf   PORTC,SCLK
   return

;==============RUTINA PARA RECIBIR BIT DESDE LA MEMORIA===========

BITIN
   bsf   EEPROM,DI
   bsf   STATUS,RP0
   movlw   b'11110111'
   movwf   TRISC
   bcf   STATUS,RP0   
   bcf   PORTC,SCLK
   bsf   PORTC,SCLK
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   btfss   PORTC,SDATA
   bcf   EEPROM,DI
   bcf   PORTC,SCLK
   return

;==============RUTINA TRANSMITIR UN BYTE ===================


TX   
   movlw   .8   
   movwf   COUNT
TXLP   bcf   EEPROM,DO
   btfsc   TXBUF,7
   bsf   EEPROM,DO
   call   BITOUT
   rlf   TXBUF,1
   decfsz   COUNT
   goto   TXLP
   call   BITIN
   return

;==============RUTINA PARA RECIBIR UN BYTE========================


RX
   clrf   RXBUF
   movlw   .8
   movwf   COUNT
   bcf   STATUS,C
RXLP   rlf   RXBUF,F
   call   BITIN
   btfsc   EEPROM,DI
   bsf   RXBUF,0
   decfsz   COUNT
   goto   RXLP
   bsf   EEPROM,DO
   call   BITOUT
   return   

;==============RUTINA PARA LEER UN BYTE DE LA MEMORIA=============

LEER
   call   BSTART         ; Se genera Bit de START
   nop
   nop
   bcf   SLAVE,0         ; Selecciona el modo de escritura
   movfw   SLAVE         ; del dispositivo esclavo
   movwf   TXBUF         ; Tranb   
   call   TX         ;
   movfw   ADDR   
   movwf   TXBUF
   call   TX
   nop
   nop
   call   BSTART   
   nop
   nop
   bsf   SLAVE,0
   movfw   SLAVE
   movwf   TXBUF
   call   TX
   nop
   call   RX
   bsf   EEPROM,DO
   call   BITOUT
   call   BSTOP
   return

;==============RUTINA PARA ESCRIBIR UN BYTE DE LA MEMORIA=============

ESCRIB
   call   BSTART         ; Se genera bit de START
   nop
   nop
   bcf   SLAVE,0         ; Selecciona modo escribir en
   movfw   SLAVE         ; la direccion del esclavo y se pone en W
   movwf   TXBUF         ; Se transfiere W al buffer de TX
   call   TX         ; Se transmite el byte a la memoria
   movfw   ADDR         ; Se carga en W la direccion a escribir
   movwf   TXBUF         ; Se transfiere W al buffer de TX
   call   TX         ; Se transmite el byte a la memoria
   nop
   nop
   movfw   DATAO         ; Se transfiere a W el dato a escribir   
   movwf   TXBUF         ; Se transfiere W al buffer de TX
   call   TX         ; Se transmite el byte a la memoria
   call   BSTOP         ; Se Genera bit de STOP
   movlw   .20         ; Carga 20 milisegundos
   movwf   LOOPS         ; Para esperar que termine
   call   WAIT         ; la escritura en la memoria      
   return            ; Y retorna

   goto   WAIT      
WAIT1   movlw   .150
   goto   WAIT
WAIT            ; Retardo de W milisegundos
        movwf   TEMP3      
TOP2    movlw   .110
        movwf   TEMP4        
TOP     nop                     ; sit and wait
        nop
   nop
   nop
   nop
   nop
   decfsz  TEMP4,F    ; inner loop done?
   goto    TOP             ; no, go again
   decfsz  TEMP3,F         ; outer loop done?
   goto    TOP2            ; no, go again
   return
;=================================================================

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #11 en: Lunes 16 de Mayo de 2005, 23:56 »
0
Hola Pikman! Muy buenas las rutinas! :)
Solo quiero corregir un pequeño detalle. Las R de 100K son un poco grandes, puedes llegar a tener problemas, con 10K ya estaría super...
Cuando usas el PIC como maestro, la linea SCL es salida, por lo que no puedes habilitar la R interna; cuando el micro envia información a la memoria, SDA es salida, por lo que tampoco se puede habilitar la R interna. Es decir que si o si se necesitan las R afuera.
Por lo demás, está perfecto!
Un abrazo

Saludos! :hola:

Hugo

Ivan N.

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #12 en: Jueves 10 de Agosto de 2006, 16:26 »
0
Buenas a todos! Antes que anda soy nuevo en el foro y la verdad que felicito a esta comunidad por la seriedad con que toman las consultas.
Antes que nada voy a aclarar un poquito mi situacion. Soy estudiante de electronica, mas precisamente estoy en una secundaria con orientacion electronica. Para poder recibirme tengo que realizar un proyecto a modo de prueba final. Mas o menso lo que estoy haciendo, o mejor dicho tratando de hace que un pic conectado a un telefono, guarde en su memoria el numero al que se desea llamar y lo compare con una lista de numeros permitidos previamente almacenados. Uno de los problemas principales es que recien comenzamos a aprender a programar pics hace unos 3 meses, por lo tanto mis conocimientos sobre el tema no son muchos (por suerte desde hace unos años se nos enseña a programar con orientacion a bajo nivel  :D ). El segundo problema es que sabiendo que lso numeros telefonicos tienen varios numeros y que por cada numero necesito un byte, y si ademas se tiene en cuenta que necesitare almacenar al menos unos 50 numeros telefonicos, la memoria del pic es un gran problema segun me dijieron algunos profesores. Asi mismo me dijieron que iba a tener que usar una memoria externa del tipo 24LCXX.
Bueno hasta aqui la breve situacion xD. Ahora si las consultas:

Leyendo material que fui bajando de varios lugares sobre este tipo de memorias y lso pics, me di cuenta de que funcionan con un protocolo I2C y que estan los masters y los slaves.

1º En mi caso el pic que necesitaria tendria q ser master ya q la memoria es slave, verdad?

2º Que tipo de instrucciones se utilizan para escribir datos en la memoria desde el pic (siendo este el master) y cuales se utilizan para leer datos de la memoria?

3º Cuales son los registros que controlan la comunicacion I2C?

Y por ultimo si alguien fuera tan amable de dejar algun ejemplo de un codigo que utilice estas instrucciones y registros para escribir y leer datos de la memoria se agradeceria muchismo! Desde ya muchas gracias!

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #13 en: Jueves 10 de Agosto de 2006, 22:16 »
0
Bienvenido!
Me parece un proyecto interesante... Existen algunos integrados que se encargan de convertir los tonos DTMF en su correspondiente valor binario (de 4 bits); deberías buscar cual es el que consigues en tu zona.
En segundo lugar, los codigos binarios que se generan son de 4 bits, es decir las teclas del 0 al 9, el *, el #, y digamos C, D, E y F para las otras cuatro posibilidades (normalmente no las tenemos en los teléfonos). Es decir, que por byte podemos guardar 2 "teclas" del teléfono. Tomando algún micro con EEPROM interna de 128 bytes, podrías almacenar 256 digitos, digamos que unos 25 números telefónicos.
Pero si prefieres usar una memoria externa, podrías guardar más números, u otros datos (tiempo de llamada, fecha, etc.)
En este caso, lo mejor es que busques un micro con modulo I2C incorporado. Lee en la hoja de datos todo lo relacionado a este modulo e intenta escribir el programa y probarlo; no es algo muy complicado, solo hay que escribir correctamente los distintos registros. También vas a necesitar la hoja de datos de la memoria que uses (todo se encuentra en la red)
No hay instrucciones específicas para escribir o leer estas memorias, tienes que escribir las rutinas para estas tareas
Bien, busca la información, la lees y después nos cuentas... Mientras veo que puedo conseguirte de ejemplo

Saludos!

Ivan N.

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #14 en: Jueves 10 de Agosto de 2006, 23:44 »
0
Muchas gracias por tu interes!
Te cuento que toda la parte del harware ya la tengo desarrollada y 100% funcionando  :D . En efecto para la deteccion de tonos uso un simple integrado, en mi caso el CM8870. Este integrado, como todos los otros decodificadores DTMF, posse 5 salidas de datos, 4 que se utilizan para brindar un numero binario correspondiente a la tecla presionada como bien dijiste, y otro que avisa de la presencia de un tono DTMF decodificado en la salida (todo aquel que desee mas informacion sobre el tema no dude en preguntar xD).
Lo que planteas de guardar 2 teclas por byte es muy interesante ya q asi ahorraria bastante espacio... pero al verdad es q nose muy bien como hacerlo. Tendria q ir preguntando bit por bit e ir guardando bit por bit con la instruccion bsf Numero,x (aca va una duda muy de principiante: La x que indicaria el numero del bit que pongo a 1, puede ser un contador que se valla incrementando de a uno? )

Y el tema del pic, tendria q se un pic q traiga el modulo MSSP, o sea q sea master?
Por q encontre por varios lados que hay 2 tipos de pic con I2C, uno q es simplemente I2C, y que hay que armar todo un programa como el que postearon mas arriba, y despues hay otro que es MI2C, que segun lei en varios lados toda la interfaz de software q hay q hacer en el otro caso ya biene integrada en el mismo hardware. Con esto pienso q en el segundo caso el programa deberia ser menos engorroso. Y en lo personal apunto a que si esto es asi utilizar un pic con esta caracteristica para alivianar el programa xD

Estube viendo unas hojas de datos de pic q traen el MSSP pero no encontre en ninguna ejemplos practicos de como serian las lineas de codigo para grabar o leer memorias con esto...  :(

Si alguien me puede sacar todas estas dudas se agradece! xD

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #15 en: Sábado 12 de Agosto de 2006, 20:03 »
0
Hola!
Lees el primer numero marcado, te queda el número en los 4 bits (nibble) bajos del registro donde lo guardes. Con la instrucción SWAPF inviertes los nibbles, de tal manera que el primer digito discado queda en los 4 bits altos del registro. Luego lees el segundo digito marcado y haces una operación OR con el registro donde tienes el primer digito... y listo, ya tienes dos digitos en un byte ;)

En cuanto al micro, uno que tenga simplemente un modulo SSP ya lo puedes usar como maestro. No recuerdo ahora exactamente los detalles, pero se que no es nada complicado. Tendría que buscar entre mis archivos para sacarte algún ejemplo, pero puedes encontrar algo en las Aplication Notes de Microchip.
La primera vez que lo hice fue con un 16F876, y funcionó perfecto; creo que este micro solo tiene SSP <_<

Si no es molestia, te agradecería si me pasas el circuito de interfaz que tienes entre la línea telefónica y la entrada del CM8870. Puedes dejarlo aquí, o a mi correo (hugoerhard@yahoo.de)

Saludos

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #16 en: Domingo 13 de Agosto de 2006, 09:04 »
0
Hola!
Perdón por el error... el 16F873 tiene MSSP.
Aqui dejo una rutina (dice para la memoria 24C02, pero en realidad es para cualquier 24C). Solo paso la rutina de lectura de la memoria; solo es cuestion de tomarla como base para escribir la rutina de escritura. Es fácil, y más con la ayuda de la hoja de datos de la memoria...
Asi tambien, pueden escribirse las rutinas para otros dispositivos I2C.

Saludos
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Ivan N.

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #17 en: Lunes 14 de Agosto de 2006, 22:22 »
0
Muchas gracias por el ejemplo! Y la explicacion de como guardar lasm 2 teclas en un byte. Con el tema del circuito me vas a tener q aguantar unos dias que ando con la maquina rota y ando einstalando todo, pero en unos dias te lo mando.

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #18 en: Martes 15 de Agosto de 2006, 01:00 »
0
No hay problema!
Mantenenos informado de tu proyecto...
Saludos

Ivan N.

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Cargar Una E2prom Con Usart Del 16f628
« Respuesta #19 en: Domingo 20 de Agosto de 2006, 17:23 »
0
Decodificador DTMF:

  La función de este circuito es detectar que tecla del teléfono fue pulsada en función de un pulso. Este pulso esta compuesto por dos frecuencias distintas, una denominada FLOW y la otra FHIGH, estas frecuencias son generadas en el momento en que se pulsa dicha tecla y para cada tecla hay una combinación determinada de frecuencias:

FLOW (Hz)   FHIGH (Hz)    Tecla
697                  1209             0
697                  1336               1
697                  1477               2
770                  1209               3
770                  1336               4
770                  1477               5
852                  1209               6
852                  1336               7
852                  1477               8
941                  1209               9
941                  1336               *
941                  1477               #


Este circuito fue obtenido de las hojas de datos del integrado CM8870, salvo por los seguidores de tensión conformados por el LM324 y el TL081, colocados en las salidas del CM8870, con el fin de adaptar impedancias y evitar que si cortocircuitan las salidas del circuito se destruya el CM8870. Cabe aclarar que el regulador de tensión, con sus respectivos capacitores, que alimenta al CM8870 también fue agregado al circuito original dado por el fabricante.
Si queres mas informacion sobre el tema o hay algo q no entiendas decime que trato de explicar mejor (ahora directamente lo arranque de un informe q tubimos q presentar xD) El circuito consta de 5 salidas del pìn 11 al 14 son las salidas q1 a q4, que representan el numero binario correspondiente a la tecla presionada. La quinta salida e sel pin 15 que muestra un uno logico cuando hay un nuevo numero DTMF en las salidas q1-q4, y se mantiene en estado alto mientras la tecla que genero el DTMF se encuentre presionada. La tabla de los numeros binarios que corresponden a cada tecla la podes ver en datasheet del CM8870.

Bue y con el tema del proyecto al final decidimos guardar los datos en la memoria interna del pic y veremos cuantos numeros entran xD. mas o menos unos 20 deberian entrar xD. Asi q con eso se simplifica bastante pero igualmente tenemos el tema de la comparacion del numero marcado con la lista de numeros permitidos... ver de q manera cargamos la lista de numeros esa a traves del telefono, y como saber cuando el usuario termino de marcar el numero xD. Asi q veremos q pasa... ahh por cierto finalmente decidimos usar el pic16F819.  Cualquier sugerencia de sobre el tema sera bienvenida, desde ya muchas gracias.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.