TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Mako22 en 12 de Septiembre de 2007, 09:12:08

Título: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 12 de Septiembre de 2007, 09:12:08
Un saludo a todos después de mucho tiempo en dique seco.

Tengo un gran problema al que espero me podáis ayudar.

Mi padre tiene 72 años y vive solo. Hace un año sufrió una enfermedad que se llama “Síndrome de Guillem Barré”, es decir se quedo total mente paralizado en menos de 24 horas, dejando de respirar y todo. Suerte que un tío mío llego a tiempo y le pudieron salvar.

A estado ingresado en un centro de rehabilitación 7 meses y el resto viviendo conmigo en casa, donde ha tenido que aprender nuevamente a respirar, a caminar, a comer, etc. etc.

Ahora vuelve a estar en su casa, con toda la preocupación que a mí eso me reporta, ya que no está bien del todo, y no sabemos si volverá a estar al 100%.

He mirado para contratar un servicio de tele asistencia, pero son bastante caros y mi sueldo y su pensión no son para tirar cohetes.

He pensado usar un Pic ( He encontrado una alarma para un estanco en este foro que me podría servir pero no me deja descargar los ficheros, no sé porque ), Alguien me puede facilitar un esquema y un pequeño programa que me sirviera??, la idea es la siguiente:

Dejarle a él un pequeño mando a distancia que una vez pulsado, ( solo mientras está en casa ), marcara en el teléfono normal el número de mi móvil. Con eso ya me conformaría, pero si además pudiera llevar un pequeño micro pre amplificado, que me permitiera escucharle, ya sería el no va más.

 He encontrado esto, que ya me podría servir:

http://users.tpg.com.au/users/talking/TaxiPhonePage1.html

pero alguien me podría modificar el esquema y el asm para usarlo con un pic que permitiera  reprogramarse (PICF84)??

Lo digo porque mis conocimientos tanto en diseño como en programación son bastante limitados  y aunque en la página explica ambas cosas no lo tengo muy claro y me urge poder montarlo lo antes posible.

Saludos a Todos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: jfmateos2 en 13 de Septiembre de 2007, 05:53:02
Hola Mako

Yo también tengo conocimientos muy limitados y poca experiencia, pero intentaré echarte una mano en lo que pueda.

De momento ando buscando por la Web a ver si encuentro algo.

El proyecto que pones del teléfono TAXI parece bastante aproximado a lo que necesitas. Quizás podrías intentar montarlo sobre un protoboard a ver si funciona tal y como está.

De momento he encontrado un documento en el que la interfaz con la línea telefónica se realiza de un modo más seguro:

http://paper.ijcsns.org/07_book/200705/20070526.pdf

Aquí tienes otro proyecto parecido a lo que necesitas:

http://www.elektronika.ba/projekti/?akc=daj_projekt&idprojekt=7

Si yo fuera tú empezaría por montar este último proyecto que te adjunto para comprobar si funciona el marcado telefónico, y después implementaría la parte de radio-frecuencia (esto sería bastante fácil).

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 13 de Septiembre de 2007, 07:23:09
Hola jfmateos2. Gracias por tu rápida respuesta.
Estos dos montajes estan muy bien, lo unico que me parecen un poco más complejos que el vinculo que yo tengo.
Ayer se me ocurrio ponerme en contacto con el creador del circuito del cual pongo el link, y me ha contestado esto a mis preguntas:
   
¿El circuito electrónico es el mismo para el F84 que para el 508?
¿Que patillas del 508 son equivalentes al F84?

Contestación:

Use the pins on the F84 that are equal to the function of the pins for the '508
 
See Talking Electronics website   See "Start here with '508" article.


Here is the comparison of the location of the files in the '508 and other chips.   You will have to change the program so that the files can be accessed.   Some of the files in the '508 program cannot be accessed when using a '84 as the files are used by the micro itself. You have to add the value of "TWO OH"     "20H"   to all the files to shift them down the file memory so you can use them when running a PIC'84.

Pero como mis conocimientos de inglés y de PICs son muy pocos, me quedo a dos velas.

¿Sabes algún link donde ponga como cambiar el circuito de un 508 por un 16F84?

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: jfmateos2 en 13 de Septiembre de 2007, 08:16:44
Hola Mako, al principio de la página 2 (http://users.tpg.com.au/users/talking/TaxiPhonePage2.html) de su proyecto tiene puesta la equivalencia de pines entre ambos microcontroladores. Yo tampoco entiendo la modificación que te propone que hagas en el código (lo siento). Lo que menos me gusta de este proyecto es que no veo claro cómo conectarlo a la línea telefónica.

Por eso te recomendaba el proyecto bosnio (http://www.elektronika.ba/projekti/?akc=daj_projekt&idprojekt=7); en éste está claro cómo se conecta, no hay que realizar ninguna modificación en el programa y, sí es más complicado, pero esa complicación viene del hecho de que las entradas y salidas están convenientemente aisladas (mediante el transformador). Además, en este proyecto tienes hasta la plantilla del PCB. En esta página http://hackedgadgets.com/2007/03/27/alarm-phone-dialer/ tienes algunos comentarios sobre este proyecto en inglés. Lo más complicado puede ser encontrar el MT8880.

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: sander en 13 de Septiembre de 2007, 12:17:47
Hola Mako , te comento que me pidieron que desarrolle un circuito similar al que tu quieres, lamentablemente no puedo pasarte lo que hice. Pero si podria ayudarte para que termines mas rapidamente.

El ckto que pones es similar al que  use como base para el sistema que me pidieron

http://users.tpg.com.au/users/talking/DialAlarm-1-Page1.html

En este ckto para realizar la llamada utiliza el descolgado de la linea lo hace con el 4N25 el BD679 y la resistencia de 470 ohms poniendo un cero a la entrada del optoacoplador se realiza el descolgado. y la marcacion se la hace mediante las lineas GP1 y GP0 del PIC estos dos pines generan señales cuadradas con las frecuencias para la marcacion por DTMF estas dos señales se filtran mediante los filtros de 100 omhs y 1 uF  y luego  se suman mediante el transistor BC547.

Entonces para adaptar el ckto tienes que conectar a un pin del 16F84A la entrada del 4N25 para poder descolgar el telefono y luego rehusar la rutina que genera un digito DTMF , para esto ultimo tienes que ver un poco el programa.

Espero que esto te sirva de ayuda.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 13 de Septiembre de 2007, 16:03:10
Hola Mako22, el circuito del link que propones es muy sencillo, el unico error que le encuentro es que la conexión a la linea telefónica no se hace en serie como lo propone, si no que va en paralelo como cualquier teléfono.

Si tienes dudas sobre ese circuito solo consúltalas y trataré de respondertelas.

Con respecto al PIC también puedes usar por ejemplo el 12F625 que es muy similar al 12C508 propuesto, pero con memoria flash.

Con respecto al programa como está en .asm si deseas puedo reformarlo para que lo puedas aplicar el 16F628A (recomiendo este por ser mejor y más varato que el 16F84A)

Un saludo.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 14 de Septiembre de 2007, 02:31:38
En primer lugar mi más sincero agradecimiento por vuestra ayuda a los tres.

Una cosa Chaly29, aparte de poderme modificar el ASM para el 16F628A, me podrías decir de un modo grafico que modificaciones tengo que hacer en el circuito para que funcione con este PIC y no con el 508?.

Si me pudieras solventar estas dos cuestiones empezaría por montar este circuito, creo que por cantidad de componentes y por no tener ninguna pieza rara sería el más fácil de hacer, sino tendría que intentar hacer uno de los que proponen nuestros amigos, aunque me dan un poco de miedo el no poder encontrar quizás algún componente.

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 14 de Septiembre de 2007, 10:04:54
Hola Mako22, al circuito lo reformaremos en 2 etapas, en la primera lo referente a los componentes pasivos, y en la segunda cambiaremos el PIC

(http://img403.imageshack.us/img403/2697/taxiphonelq6.jpg)

* Puedes ver que solo dejé un pulsador, esto con la idea de simplificar el circuito
* El led que originalmente era de color verde lo cambie por uno rojo, con esto disminuimos la tensión de alimentación del PIC de 5.4Vcc a 5.1Vcc
* Y grafique de manera correcta la conexión a la linea telefónica

Probablemente también halla que cambiar la disposición del transistor con sus componentes asociados, pero eso lo veremos más adelante.

Un saludo.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 14 de Septiembre de 2007, 11:35:48
Ok! Carlos vamos allá.

Quedo impaciente esperando tu próximo mensaje.

Un Saludo
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 14 de Septiembre de 2007, 14:43:57
Hola Mako22, este es el programa para el PIC anterior, le e realizado algunas mejoras y correjido algunos errores, también traté de traducirlo al castellano:

Código: ASM
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;
  3. ;       TAXI PHONE for 12c508A CHIP
  4. ;
  5. ;       Nota: El numero marcado por este programa no está aprobado
  6. ;       Coloque el numero telefónico a ser marcado en la tabla 1
  7. ;
  8. ;       Frecuencia del cristal del PIC de 4MHz
  9. ;
  10. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  11.  
  12.         LIST            P = 12C508A
  13.         INCLUDE         <P12C508A.INC>
  14.         ERRORLEVEL      -302
  15.  
  16.         __CONFIG        _MCLRE_OFF&_CP_ON&_WDT_ON&_XT_OSC
  17.  
  18. ;.......................................................................
  19. ;Definicion de pines
  20. #DEFINE         OUT_TONO_H      GPIO,0          ;Pin de salida del tono alto
  21. #DEFINE         OUT_TONO_L      GPIO,1          ;Pin de salida del tono bajo
  22. #DEFINE         PULSADOR        GPIO,3          ;Pin de entrada del pulsador
  23.  
  24. ;Definicion de la RAM
  25. NUM_DISCA       EQU             .7              ;07h Numero que se está discando
  26. TEMP            EQU             .8              ;08h Reguistro temporal
  27. CARRIER         EQU             .9              ;09h Carrier DTMF
  28. TONO_LOW        EQU             .10             ;0Ah Tono bajo
  29. DEC_TONO_L      EQU             .11             ;0Bh Decrementar tono bajo
  30. TONO_HIGH       EQU             .12             ;0Ch Tono alto
  31. DEC_TONO_H      EQU             .13             ;0Dh Decrementar tono alto
  32. CONT_1          EQU             .14             ;0Eh Rutina de retardo
  33. CONT_2          EQU             .15             ;0Fh Rutina de retardo
  34. CONT_3          EQU             .16             ;10h Rutina de retardo
  35.  
  36. ;.......................................................................
  37.         ORG     .0
  38.         goto    INICIO
  39.  
  40. ;.......................................................................
  41. ;Table 1 Tabla que almacena el numero a discar
  42. ;0A = 0
  43. ;01 = 1
  44. ;02 = 2
  45. ;03 = 3
  46. ;04 = 4
  47. ;05 = 5
  48. ;06 = 6
  49. ;07 = 7
  50. ;08 = 8
  51. ;09 = 9
  52.  
  53. ;Colocar tantos RETLW como dígitos tenga el numero que se desea discar
  54. ;Para finalizar colocar el valor RETLW 0Eh para indicar que ya no hay numeros a discar
  55. ;En el ejemplo el numero discado es: 0112329255
  56.  
  57. Table1
  58.         addwf   PCL,F
  59.         retlw   0Ah             ;0
  60.         retlw   01h             ;1
  61.         retlw   01h             ;1
  62.         retlw   02h             ;2
  63.         retlw   03h             ;3
  64.         retlw   02h             ;2
  65.         retlw   09h             ;9
  66.         retlw   02h             ;2
  67.         retlw   05h             ;5
  68.         retlw   05h             ;5
  69.         retlw   0Eh             ;E = fin del numero
  70.  
  71. ;.......................................................................
  72. ;Table2 tonos bajos del DTMF
  73. Table2
  74.         addwf   PCL,F
  75.         nop
  76.         retlw   75h             ;1
  77.         retlw   75h             ;2
  78.         retlw   75h             ;3
  79.         retlw   6Bh             ;4
  80.         retlw   6Bh             ;5
  81.         retlw   6Bh             ;6
  82.         retlw   60h             ;7
  83.         retlw   60h             ;8
  84.         retlw   60h             ;9
  85.         retlw   57h             ;0
  86.  
  87. ;.......................................................................
  88. ;Table3 tonos altos del DTMF
  89. Table3
  90.         addwf   PCL,F
  91.         nop
  92.         retlw   44h             ;1
  93.         retlw   3Dh             ;2
  94.         retlw   37h             ;3
  95.         retlw   44h             ;4
  96.         retlw   3Dh             ;5
  97.         retlw   37h             ;6
  98.         retlw   44h             ;7
  99.         retlw   3Dh             ;8
  100.         retlw   38h             ;9
  101.         retlw   3Dh             ;0
  102.  
  103. ;.......................................................................
  104. ;Short delay between tone approx 50mS
  105. Del1
  106.         clrwdt                  ;Reseteo el WDT
  107.         movlw   .80
  108.         movwf   CONT_2
  109. Del1A
  110.         decfsz  CONT_1,F
  111.         goto    Del1A
  112.         decfsz  CONT_2,F
  113.         goto    Del1A
  114.         retlw   .0
  115.  
  116. ;.......................................................................
  117. ;Retardo de 0.7sec
  118. Del2
  119.         clrwdt                  ;Reseteo el WDT
  120.         nop
  121.         nop
  122.         nop
  123.         nop
  124.         nop
  125.         nop
  126.         nop
  127.         decfsz  CONT_1,F
  128.         goto    Del2
  129.         decfsz  CONT_2,F
  130.         goto    Del2
  131.         retlw   .0
  132.  
  133. ;.......................................................................
  134. ;Retardo de 0.1sec
  135. Del3
  136.         movlw   .110
  137.         movwf   CONT_1
  138. PLoop1
  139.         movlw   .181
  140.         movwf   CONT_2
  141. PLoop2
  142.         clrwdt                  ;Reseteo el WDT
  143.         clrwdt                  ;Reseteo el WDT
  144.         decfsz  CONT_2,F
  145.         goto    PLoop2
  146.         decfsz  CONT_1,F
  147.         goto    PLoop1
  148.         retlw   .0
  149.  
  150. ;.......................................................................
  151. ;Discado del numero por medio de DTMF
  152. Dial1
  153.         movf    NUM_DISCA,W     ;Cargo el dígito a discar en W
  154.         call    Table1
  155.         movwf   CARRIER         ;Cargo en CARRIER el numero a discar
  156.         movlw   0Eh             ;Verifico que el valor anterior no sea 0Eh
  157.         xorwf   CARRIER,W
  158.         btfsc   STATUS,Z
  159.         goto    Main5           ;Si es 0Eh salgo de la rutina de discado
  160.         movf    CARRIER,W
  161.         call    Table2
  162.         movwf   TONO_LOW        ;Cargo el reguistro con el valor para el tono bajo
  163.         movwf   DEC_TONO_L      ;Cargo el reguistro con el valor para el tono bajo
  164.         movf    CARRIER,W
  165.         call    Table3
  166.         movwf   TONO_HIGH       ;Cargo el reguistro con el valor para el tono alto
  167.         movwf   DEC_TONO_H      ;Cargo el reguistro con el valor para el tono alto
  168.         goto    DTMF1
  169. Dial2
  170.         call    Del1            ;Llamada a retardo antes de discarl el proximo dígito
  171.         call    Del1            ;Llamada a retardo antes de discarl el proximo dígito
  172.         incf    NUM_DISCA,F     ;Incremento el dígito a discar
  173.         goto    Dial1
  174.  
  175. ;.......................................................................
  176. ;Rutina que genera el DTMF
  177. DTMF1
  178.         movlw   .160            ;Cantidad de ciclos del tono de discado
  179.         movwf   TEMP
  180. DTMF2
  181.         decfsz  DEC_TONO_H,F    ;Decremento el reguistro del tono alto
  182.         goto    DTMF3
  183.         movlw   .1
  184.         xorwf   OUT_TONO_H      ;Seteo la salida adecuada
  185.         movf    TONO_HIGH,W     ;Cargo W con el valor para el tono alto
  186.         movwf   DEC_TONO_H      ;Re-Cargo el reguistro de decremento de tono alto con el valor inicial
  187. DTMF3
  188.         decfsz  DEC_TONO_L,F    ;Decremento el reguistro del tono bajo
  189.         goto    DTMF2
  190.         movlw   .2
  191.         xorwf   OUT_TONO_L      ;Seteo la salida adecuada
  192.         movf    TONO_LOW,W      ;To re-load low-tone file
  193.         movwf   DEC_TONO_L      ;Re-load low-tone file
  194.         decfsz  TEMP,F          ;Decrement loops file
  195.         goto    DTMF2
  196.         goto    Dial2
  197.  
  198. ;.......................................................................
  199. INICIO
  200.         movlw   B'00111100'     ;GP0 y GP1 como salidas el resto entradas
  201.         tris    GPIO            ;Cargo el reguistro TRIS
  202.         clrf    GPIO            ;Borro el reguistro GPIO
  203.         clrwdt                  ;Reseteo el WDT
  204.         movlw   B'00001111'     ;Prescaler en 128 asignado al WDT
  205.         option                  ;Cargo el reguistro OPTION
  206. Main1
  207.         call    Del2            ;Llamada a retardo
  208.         call    Del2            ;Llamada a retardo
  209.  
  210.         clrf    NUM_DISCA       ;Borro todos los reguistros a usar
  211.         clrf    TEMP
  212.         clrf    CARRIER
  213.         clrf    TONO_LOW
  214.         clrf    DEC_TONO_L
  215.         clrf    TONO_HIGH
  216.         clrf    DEC_TONO_H
  217.         clrf    CONT_1
  218.         clrf    CONT_2
  219.         clrf    CONT_3
  220.  
  221. Main2
  222.         movf    NUM_DISCA,W
  223.         call    Table1
  224.         xorlw   .0
  225.         btfss   STATUS,Z
  226.         goto    Main3
  227.         incf    NUM_DISCA,F
  228.         goto    Main2
  229. Main3
  230.         btfss   PULSADOR        ;Verifico el pulsador, si esta en alto salto
  231.         goto    Main4           ;si está en bajo salto a la rutina Main4
  232. Sw
  233.         clrwdt                  ;Reseteo el WDT
  234.         btfsc   PULSADOR        ;Verifico el pulsador, si esta en bajo salto
  235.         goto    Sw              ;Si es alto salto a Sw
  236.         call    Del3            ;Llamada a retardo
  237.         btfsc   PULSADOR        ;Verifico el pulsador, si esta en bajo salto
  238.         goto    Sw              ;Si es alto salto a Sw
  239. Main4
  240.         clrwdt                  ;Reseteo el WDT
  241.         goto    Dial1           ;Salto a la rutina de discado
  242. Main5
  243.         movlw   .166            ;Rutina de retardo de 2min para luego de discar
  244.         movwf   CONT_3
  245. RET
  246.         call    Del2            ;Llamada a retardo
  247.         decfsz  CONT_3,F
  248.         goto    RET
  249.         goto    Main1           ;Reinicio todo el proceso desde la posición Main1
  250.  
  251. ;.......................................................................
  252.         end

Espero que valla siendo de ayuda.

Un salud.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 14 de Septiembre de 2007, 15:05:54
Hola Mako22, esta es la reforma y cambio de PIC que te propongo:

(http://img236.imageshack.us/img236/223/taxiphoneal4.jpg)

En este PIC ya usamos el oscilador interno y conectamos el pin MCLR. Por lo demas se mantiene igual que el circuito anterior.

Un saludo.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 14 de Septiembre de 2007, 15:51:35
Y este es el programa para el 16F628A:

Código: ASM
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;
  3. ;       TAXI PHONE con microcontrolador 16F628A
  4. ;
  5. ;       Nota: El numero marcado por este programa no está aprobado
  6. ;       Coloque el numero telefónico a ser marcado en la tabla 1
  7. ;
  8. ;       Frecuencia de funcionamiento 4MHz
  9. ;
  10. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  11.  
  12.         LIST            P = 16F628A
  13.         INCLUDE         <P16F628A.INC>
  14.         ERRORLEVEL      -302
  15.  
  16.         __CONFIG        _BODEN_OFF&_BOREN_ON&_CP_ON&_DATA_CP_ON&_PWRTE_ON&_WDT_ON&_LVP_OFF&_MCLRE_ON&_INTOSC_OSC_NOCLKOUT
  17.  
  18. ;.................................................................
  19. ;Definición de pines
  20. #DEFINE         PULSADOR        PORTB,3         ;Pin de entrada del pulsador
  21.  
  22. ;Definición de la RAM
  23. NUM_DISCA       EQU             .32             ;20h Numero que se está discando
  24. TEMP            EQU             .33             ;21h Reguistro temporal
  25. CARRIER         EQU             .34             ;22h Carrier DTMF
  26. TONO_LOW        EQU             .35             ;23h Tono bajo
  27. DEC_TONO_L      EQU             .36             ;24h Decrementar tono bajo
  28. TONO_HIGH       EQU             .37             ;25h Tono alto
  29. DEC_TONO_H      EQU             .38             ;26h Decrementar tono alto
  30. CONT_1          EQU             .39             ;27h Rutina de retardo
  31. CONT_2          EQU             .40             ;28h Rutina de retardo
  32. CONT_3          EQU             .41             ;29h Rutina de retardo
  33.  
  34. ;.................................................................
  35.         ORG     .0
  36.         bcf     STATUS,RP0      ;Selecciono el banco de memoria 0
  37.         bcf     STATUS,RP1
  38.         goto    INICIO
  39.  
  40.         ORG     .4
  41.         bcf     INTCON,GIE      ;Desactivo todas las intrerrupciones
  42.         return
  43.  
  44. ;.................................................................
  45. ;Table 1 Tabla que almacena el numero a discar
  46. ;0A = 0
  47. ;01 = 1
  48. ;02 = 2
  49. ;03 = 3
  50. ;04 = 4
  51. ;05 = 5
  52. ;06 = 6
  53. ;07 = 7
  54. ;08 = 8
  55. ;09 = 9
  56.  
  57. ;Colocar tantos RETLW como dígitos tenga el numero que se desea discar
  58. ;Para finalizar colocar el valor RETLW 0Eh para indicar que ya no hay numeros a discar
  59. ;En el ejemplo el numero discado es: 0112329255
  60.  
  61. Table1
  62.         addwf   PCL,F
  63.         retlw   0Ah             ;0
  64.         retlw   01h             ;1
  65.         retlw   01h             ;1
  66.         retlw   02h             ;2
  67.         retlw   03h             ;3
  68.         retlw   02h             ;2
  69.         retlw   09h             ;9
  70.         retlw   02h             ;2
  71.         retlw   05h             ;5
  72.         retlw   05h             ;5
  73.         retlw   0Eh             ;E = fin del numero
  74.  
  75. ;.................................................................
  76. ;Table2 tonos bajos del DTMF
  77. Table2
  78.         addwf   PCL,F
  79.         nop
  80.         retlw   75h             ;1
  81.         retlw   75h             ;2
  82.         retlw   75h             ;3
  83.         retlw   6Bh             ;4
  84.         retlw   6Bh             ;5
  85.         retlw   6Bh             ;6
  86.         retlw   60h             ;7
  87.         retlw   60h             ;8
  88.         retlw   60h             ;9
  89.         retlw   57h             ;0
  90.  
  91. ;.................................................................
  92. ;Table3 tonos altos del DTMF
  93. Table3
  94.         addwf   PCL,F
  95.         nop
  96.         retlw   44h             ;1
  97.         retlw   3Dh             ;2
  98.         retlw   37h             ;3
  99.         retlw   44h             ;4
  100.         retlw   3Dh             ;5
  101.         retlw   37h             ;6
  102.         retlw   44h             ;7
  103.         retlw   3Dh             ;8
  104.         retlw   38h             ;9
  105.         retlw   3Dh             ;0
  106.  
  107. ;.................................................................
  108. ;Short delay between tone approx 50mS
  109. Del1
  110.         clrwdt                  ;Reseteo el WDT
  111.         movlw   .80
  112.         movwf   CONT_2
  113. Del1A
  114.         decfsz  CONT_1,F
  115.         goto    Del1A
  116.         decfsz  CONT_2,F
  117.         goto    Del1A
  118.         retlw   .0
  119.  
  120. ;.................................................................
  121. ;Retardo de 0.7sec
  122. Del2
  123.         clrwdt                  ;Reseteo el WDT
  124.         nop
  125.         nop
  126.         nop
  127.         nop
  128.         nop
  129.         nop
  130.         nop
  131.         decfsz  CONT_1,F
  132.         goto    Del2
  133.         decfsz  CONT_2,F
  134.         goto    Del2
  135.         retlw   .0
  136.  
  137. ;.................................................................
  138. ;Retardo de 0.1sec
  139. Del3
  140.         movlw   .110
  141.         movwf   CONT_1
  142. PLoop1
  143.         movlw   .181
  144.         movwf   CONT_2
  145. PLoop2
  146.         clrwdt                  ;Reseteo el WDT
  147.         clrwdt                  ;Reseteo el WDT
  148.         decfsz  CONT_2,F
  149.         goto    PLoop2
  150.         decfsz  CONT_1,F
  151.         goto    PLoop1
  152.         retlw   .0
  153.  
  154. ;.................................................................
  155. ;Discado del numero por medio de DTMF
  156. Dial1
  157.         movf    NUM_DISCA,W     ;Cargo el dígito a discar en W
  158.         call    Table1
  159.         movwf   CARRIER         ;Cargo en CARRIER el numero a discar
  160.         movlw   0Eh             ;Verifico que el valor anterior no sea 0Eh
  161.         xorwf   CARRIER,W
  162.         btfsc   STATUS,Z
  163.         goto    Main5           ;Si es 0Eh salgo de la rutina de discado
  164.         movf    CARRIER,W
  165.         call    Table2
  166.         movwf   TONO_LOW        ;Cargo el reguistro con el valor para el tono bajo
  167.         movwf   DEC_TONO_L      ;Cargo el reguistro con el valor para el tono bajo
  168.         movf    CARRIER,W
  169.         call    Table3
  170.         movwf   TONO_HIGH       ;Cargo el reguistro con el valor para el tono alto
  171.         movwf   DEC_TONO_H      ;Cargo el reguistro con el valor para el tono alto
  172.         goto    DTMF1
  173. Dial2
  174.         call    Del1            ;Llamada a retardo antes de discarl el proximo dígito
  175.         call    Del1            ;Llamada a retardo antes de discarl el proximo dígito
  176.         incf    NUM_DISCA,F     ;Incremento el dígito a discar
  177.         goto    Dial1
  178.  
  179. ;.................................................................
  180. ;Rutina que genera el DTMF
  181. DTMF1
  182.         movlw   .160            ;Cantidad de ciclos del tono de discado
  183.         movwf   TEMP
  184. DTMF2
  185.         decfsz  DEC_TONO_H,F    ;Decremento el reguistro del tono alto
  186.         goto    DTMF3
  187.         movlw   .16
  188.         xorwf   PORTB,F         ;Seteo la salida adecuada
  189.         movf    TONO_HIGH,W     ;Cargo W con el valor para el tono alto
  190.         movwf   DEC_TONO_H      ;Re-Cargo el reguistro de decremento de tono alto con el valor inicial
  191. DTMF3
  192.         decfsz  DEC_TONO_L,F    ;Decremento el reguistro del tono bajo
  193.         goto    DTMF2
  194.         movlw   .32
  195.         xorwf   PORTB,F         ;Seteo la salida adecuada
  196.         movf    TONO_LOW,W      ;To re-load low-tone file
  197.         movwf   DEC_TONO_L      ;Re-load low-tone file
  198.         decfsz  TEMP,F          ;Decrement loops file
  199.         goto    DTMF2
  200.         goto    Dial2
  201.  
  202. ;.................................................................
  203. INICIO
  204.         clrwdt                  ;Reseteo el WDT
  205.         movlw   .7              ;Desactivo los comparadores
  206.         movwf   CMCON
  207.         clrf    PORTA           ;Borro el puerto A
  208.         clrf    PORTB           ;Borro el puerto B
  209.         bsf     STATUS,RP0      ;Cambio al banco de memoria 1
  210.         movlw   B'01111111'     ;Todo el puerto A como entrada
  211.         movwf   TRISA
  212.         movlw   B'11001111'     ;RB4 y RB5 como salidas y el resto entradas
  213.         movwf   TRISB
  214.         movlw   B'10001111'     ;Prescaler en 128 asignado al WDT
  215.         movwf   OPTION_REG      ;Cargo el reguistro OPTION
  216.         bcf     STATUS,RP0      ;Cambio al banco de memoria 0
  217.  
  218. Main1
  219.         call    Del2            ;Llamada a retardo
  220.         call    Del2            ;Llamada a retardo
  221.  
  222.         clrf    NUM_DISCA       ;Borro todos los reguistros a usar
  223.         clrf    TEMP
  224.         clrf    CARRIER
  225.         clrf    TONO_LOW
  226.         clrf    DEC_TONO_L
  227.         clrf    TONO_HIGH
  228.         clrf    DEC_TONO_H
  229.         clrf    CONT_1
  230.         clrf    CONT_2
  231.         clrf    CONT_3
  232.  
  233. Main2
  234.         movf    NUM_DISCA,W
  235.         call    Table1
  236.         xorlw   .0
  237.         btfss   STATUS,Z
  238.         goto    Main3
  239.         incf    NUM_DISCA,F
  240.         goto    Main2
  241. Main3
  242.         btfss   PULSADOR        ;Verifico el pulsador, si esta en alto salto
  243.         goto    Main4           ;si está en bajo salto a la rutina Main4
  244. Sw
  245.         clrwdt                  ;Reseteo el WDT
  246.         btfsc   PULSADOR        ;Verifico el pulsador, si esta en bajo salto
  247.         goto    Sw              ;Si es alto salto a Sw
  248.         call    Del3            ;Llamada a retardo
  249.         btfsc   PULSADOR        ;Verifico el pulsador, si esta en bajo salto
  250.         goto    Sw              ;Si es alto salto a Sw
  251. Main4
  252.         clrwdt                  ;Reseteo el WDT
  253.         goto    Dial1           ;Salto a la rutina de discado
  254. Main5
  255.         movlw   .166            ;Rutina de retardo de 2min para luego de discar
  256.         movwf   CONT_3
  257. RET
  258.         call    Del2            ;Llamada a retardo
  259.         decfsz  CONT_3,F
  260.         goto    RET
  261.         goto    Main1           ;Reinicio todo el proceso desde la posición Main1
  262.  
  263. ;.................................................................
  264.         end

Espero que funcione y me comentes que tal anduvo.

Un saludo.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 14 de Septiembre de 2007, 17:24:27
Bueno Carlos, que puedo decir, ¡ ESTO ES RAPIDEZ, LO DEMAS SON TONTERIAS !

Lástima que mañana tengo cerrada la tienda de componentes. Pero el lunes sin falta los compro y me pongo a montarlo. Cuanto lo pruebe te digo algo, espero tenerlo funcionando para el martes.

Usare para grabar el PIC el programa "Icprog".

¿Es necesario que haga algo en especial, o que active alguna opción es especial?

Que tengas un buen fin de semana.
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 14 de Septiembre de 2007, 19:40:25
Hola Mako22, no es necesario que hagas nada especial, solo compila el programa, habrelo con el IC-PROG y programa el PIC, tal cual está "creo" debería funcionar, ahora si tú deseas experimentar un poco eso es otro tema :mrgreen:

Un saludo.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Nocturno en 15 de Septiembre de 2007, 02:15:40
Offtopic

Chaly, ¿cuál es el software que utilizas para esos esquemas?
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 15 de Septiembre de 2007, 03:04:25
Hola Manolo, a mi también me gustaría saberlo :mrgreen:, están muy buenos, realmente lo único que yo hice fue agarrar el esquema que se encuentra en la página del diseñador de dicho circuito y reformarlo con el paint.

Lamento no poder ayudarte.

Un saludo.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Nocturno en 15 de Septiembre de 2007, 03:45:17
Ah, jeje, el viejo Paint. Bueno, entonces es que eres un artista  :mrgreen:
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: aitopes en 15 de Septiembre de 2007, 11:45:42
Hola!
Si el esquema original es de "Pablin", esta hecho con Paint. Hace unos dos años fue al primer persona que contacte para comenzar con la electronica, y le pregunte que soft usaba para hacer los esquemas. Y me mando un mail con una imagen de todos los componentes sueltos, en GIF, que usaba para cortar y pegar con PAINT para hacer sus esquemas. :)

Saludos!
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 15 de Septiembre de 2007, 15:22:38
Bueno, el esquema no estaba en la pagina de Pablin, pero es muy probable que sea como comenta aitopes ya que el tipo de letra del Paint coincide muy bien con los del esquema que e reformado.

Un saludo.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: aitopes en 15 de Septiembre de 2007, 16:14:55
Hola Carlos! (Tanto tiempo, no? :) )

Pense en Pablin por los colores....  :D :D :D

Saludos.
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 17 de Septiembre de 2007, 14:42:55
Hola Carlos.

Bueno, ya tengo el circuito montado, lo único que no tengo es el PIC. No lo tenían y me han prometido que mañana lo tendré, y para ir adelantando faena lo he montado todo.
Si todo está correcto solo será pichar el PIC.

Un par de preguntas:
Como mi teléfono tiene un número menos que el de ejemplo, la línea 72 la he eliminado completamente. ¿Correcto?
¿Que programa usas para compilar?, yo el único que tengo es el "Pic Compiler", ¿es el adecuado o me aconsejas otro?

Un saludo
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: sander en 17 de Septiembre de 2007, 15:49:50
Mako22 para compilar el codigo en ensamblador puedes usar el MPLAB que puedes descargar gratuitamente de la pagina de Microchip.

Sobre el circuito que armaste , estube revisando la informacion en la pagina del autor  y me parece que podrias tener un problema, ya que para que el circuito pueda realizar el marcado , primero tienes que levantar  el auricular del telefono  y despues presionar el pulsador, pero de todas formas te serviria para probar la marcacion.

 
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 18 de Septiembre de 2007, 02:29:57
Hola Sander.

Según he leído por ahí, para simular el descolgado de un auricular de teléfono, solo es necesario colocar una resistencia de 500 ohmios en paralelo con la línea para hacer el descolgado.

Todavía no lo he probado. A ver si me traen el PIC esta tarde y lo pruebo todo.

Ya tengo el MPlab.

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 18 de Septiembre de 2007, 12:40:13
Bueno, ya tengo el PIC y el **.hex pero cada vez que intento grabarlo obtengo un error de verificación despues de la grabación

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: aitopes en 18 de Septiembre de 2007, 12:43:08
Hola Mako!
¿No estas protegiendo el PIC? Si es asi, la verificacion da error, aunque (por supuesto!) este bien grabado.

Saludos!
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: sander en 18 de Septiembre de 2007, 12:54:54
Creo que Aitopes tiene razon , en el codigo que Chaly29 te paso tienes el fuse CP_ON esto esta protegiendo al PIC, ponlo a CP_OFF y se deberia solucionar.
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: djpalas en 18 de Septiembre de 2007, 14:31:05
Hola Mako

te aconsejaría que uses el software Winpic800, me quité muchos quebraderos de cabeza "0000h" cuando lo descubrí hace unos años :)

http://winpic800.com/

Saludos!!
Diego J.
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 18 de Septiembre de 2007, 17:02:58
Bueno amigos, después de un montón de horas, sigo peleando. Creo que ya lo he probado todo. Pon la patilla 10 ... quítala, actualiza el controlador *.sys del ic prog, activa el .. desactiva el ...
He probado el Winpic800, y este permite el borrado del pic sin ningún error, pero se queja al igual que el icprog del error 0000 al grabar.
Chicos por hoy me tomo un descanso o mis nervios, o mi mujer me matan.

Saludos y hasta mañana que espero tener más suerte.

Y muchas gracias a todos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 18 de Septiembre de 2007, 17:24:11
Hola Mako22, con respecto a la linea 72 está correcto, esa es la que devías borrar.

Con el error de programación:

* Que programador estás usando?
* As intentado grabar cualquier cosa en el PIC?
* Lo a grabado?

Para el .asm tal como te lo e pasado, en el soft programador tienes que seleccionar la opción "verificar durante la programación" y destildar la opción de "verificar tras la programación"

* Haz realizado una prueba de hardware del soft y del programador?

Espero tus respuestas, un saludo.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 19 de Septiembre de 2007, 02:30:54
Hola Carlos.

Parece que hoy tengo un buen día. Lo primero que he hecho al levantarme ya te puedes imaginar que es. Ponerme con el dichoso PIC. y ¡ YA LO TENGO GRABADO !

¿Cual era el problema?
¡ Una soldadura de mi grabador JDM ¡

Bueno hoy tengo el día un poco liado pero espero a última hora de la noche poder probarlo.

Una pregunta, la línea de teléfono me parece que funciona sobre unos 24 ó 48 voltios si no estoy confundido. ¿No petará el PIC?

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 19 de Septiembre de 2007, 03:11:10
Otra cosa Carlos:

Como dice Sanders, la grabación la he realizado poniendo no solo CP_ON  a CP_OFF sino que también he puesto DATA_CP_ON a DATA_CP_OFF, por si las moscas.

¿ Es correcto ?

Supongamos que en uno de estos PICS lo grabara con estas dos opciones a ON. ¿Se pueden volver luego a borrar o no?

Este montaje no solo me solucionará un problema importante, sino que me está enseñando mucho sobre esto bichejos negros y con tantas patillas.

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 19 de Septiembre de 2007, 04:26:19
Hola Mako22, el circuito original está pensado como ya lo han comentado para funcionar en serie con un telefono ya instalado, si no quieres usar el teléfono puedes reemplazar este por una resistencia de 390 o 470 ohms y 5W que obtendrás el mismo resultado.

Sí, la linea telefónica normalmente debería tener unos 48 Vcc, al momento de descolgar el teléfono esta tensión baja unos cuantos volts, pero el circuito posee un regulador de tensión formado por la resistencia de 100 ohms, el led rojo y el diodo zener de 3.3V, este conjunto de componentes debería regular la tensión entre las patillas de alimentación del PIC a unos 5.1Vcc aproximadamente, con esto logrando que no se queme.

Con respecto a las opciones CP_XX y DATA_CP_XX no hay ningun tipo de problema que uses cualquiera de las variantes, pero solo con estas dos, el resto las debes conservar tal cual yo las e programado, ya que hacen al correcto funcionamiento del PIC (incluso al oscilador) y todo el conjunto, estas dos opciones anteriores solo hacen a la seguridad de copia del programa dentro del PIC y no al propio funcionamiento del mismo, o sea protejen el firmware, y como en este caso no es estricto, pues es lo mismo cualquiera de ambas

Espero que la prueba sea sactifactoria, si es así luego le hiremos anexando más cosas, como por ejemplo que simule el descolgado del teléfono.

Un saludo.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 19 de Septiembre de 2007, 08:26:02
Ok!


Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 19 de Septiembre de 2007, 16:00:35
Bueno ya tenemos aquí los primeros resultados, paso a contaros.

1- Con el teléfono colgado, conecto el pic. Al levantar el auricular, si el pulsador del pic está abierto, como debería ser, instantáneamente , se produce el marcado (Yo diría que de algunos dígitos posiblemente, no todos).

2 - Si cierro el pulsador a continuación se produce el marcado de todos los dígitos.

3 - Si descolgamos con el pulsador cerrado, y a continuación lo abrimos se produce el marcado de todos los dígitos.

4 - Una vez que hemos realizado la llamada, si dejamos el pic conectado, aunque colguemos el auricular, si volvemos a descolgar, la línea marca ocupada, y no volvemos a tener línea operativa hasta que no colgamos el auricular y desconectamos el PIC al mismo tiempo.

Resumiendo, al descolgar el auricular con el pulsador abierto no se debería producir ningún marcado hasta que lo cerremos.

En el supuesto del caso 3 que hemos mencionado, después de producirse el marcado, la línea marca como si al número que llamamos estuviera comunicando, cosa que no es cierta, y en el teléfono no suena la llamada.

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 20 de Septiembre de 2007, 02:31:10
Hola a todos.

Carlos, por si te sirve de algo he encontrado las características técnicas de la línea de teléfonos que tenemos en casa. Por si es que algún parámetro se tuviera que cambiar, y por eso es que siempre da comunicando el numero.


http://www.telefonica.es/interfaces/doc_pdf/ITE-CA-001-V04.pdf

Un Saludo
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 20 de Septiembre de 2007, 08:44:28
Hola Mako22, en estos momentos estoy un poco complicado (nacimiento de un nena de por medio), pero ni bien me "descomplique" un poco me pongo a estudiar este tema.

Un saludo y disculpa la demora.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 20 de Septiembre de 2007, 10:11:12
Mi más sincera enhorabuena.

Te deseo que valla todo !MUY BIEN¡

Por aquí seguiremos cuando tengas tiempo.

Un saludo  ¡PAPA!
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 20 de Septiembre de 2007, 12:37:29
Quiero aclarar un temita, no soy el padre del bebe, solo el padre "postizo", o la persona que acompaño a la madre durante el transcurso del embarazo, como más les guste tomarlo.

Gracias de todas maneras.

Saludos.
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 21 de Septiembre de 2007, 02:17:18
Bueno rectifico, entonces el mensaje quedaría tal que así:

Te deseo que valla todo !MUY BIEN¡

Por aquí seguiremos cuando tengas tiempo.

Un saludo
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 22 de Septiembre de 2007, 05:37:13
Bueno, hoy hemos adelantado un pasito más.

El PIC marca PERFECTAMENTE.

Hoy día festivo y con más tranquilidad, me he puesto a probar nuevamente y he aquí los resultados:

- Con el auricular colgado. el pic enchufado, y el pulsador del pic cerrado, procedemos a descolgar el auricular.
- Tono de línea correcto.
- Abrimos el pulsador del pic y se produce el marcaje de número.
- ¡Sorpresa! salta la llamada en mi móvil ( solo es cuestión de esperar un tiempo prudencial, no es inmediato ) (Curiosamente hoy la línea no me marcaba comunicando ¿?).
- Ahora aquí pasan dos cosas:

           * Si cuelgo el auricular, y no desconecto el pic,  mi móvil suena durante 35 segundos. Si vuelvo a desconectar  el    auricular después de dejar de sonar el móvil, la línea marca como línea ocupada.
           * Si cuelgo el auricular y desconecto el pic, mi móvil sonara igualmente durante 35 segundos y si vuelvo a descolgar el auricular una vez que deje de sonar, la línea marca OK, lista para un nuevo uso.

Resumiendo, una vez realizada la llamada y marcado el número hay que colgar el auricular y desconectar el pic de la línea.

Otra cosa que he notado, es que mientras está conectado el pic el volumen del auricular baja al menos en un 20%.

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 04 de Octubre de 2007, 00:39:58
Hola a todos.

¿ Podría alguien hecharme una mano para solucionar estos dos problemas que me quedan ? Sinceramente, me interesaría poder solucionarlo lo antes posible.

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: sander en 04 de Octubre de 2007, 10:29:50
Bueno, hoy hemos adelantado un pasito más.

El PIC marca PERFECTAMENTE.

Hoy día festivo y con más tranquilidad, me he puesto a probar nuevamente y he aquí los resultados:

- Con el auricular colgado. el pic enchufado, y el pulsador del pic cerrado, procedemos a descolgar el auricular.
- Tono de línea correcto.
- Abrimos el pulsador del pic y se produce el marcaje de número.
- ¡Sorpresa! salta la llamada en mi móvil ( solo es cuestión de esperar un tiempo prudencial, no es inmediato ) (Curiosamente hoy la línea no me marcaba comunicando ¿?).
- Ahora aquí pasan dos cosas:

           * Si cuelgo el auricular, y no desconecto el pic,  mi móvil suena durante 35 segundos. Si vuelvo a desconectar  el    auricular después de dejar de sonar el móvil, la línea marca como línea ocupada.
           * Si cuelgo el auricular y desconecto el pic, mi móvil sonara igualmente durante 35 segundos y si vuelvo a descolgar el auricular una vez que deje de sonar, la línea marca OK, lista para un nuevo uso.

Resumiendo, una vez realizada la llamada y marcado el número hay que colgar el auricular y desconectar el pic de la línea.

Otra cosa que he notado, es que mientras está conectado el pic el volumen del auricular baja al menos en un 20%.

Saludos



Si el Pic ya te marca y la llamada llega a tu celular me imagino que tienes la mitad hecha , ahora sobre lo que la señal de audio baja y sobre lo que tienes que desconectar el PIC, y demas posiblemente se solucione si es que haces que el PIC realize el descuelgue para realizar el marcado, es decir que maneje la linea.  Ya puse un link hacia un circuito similar al que armaste que hace esto y no seria muy complicado de implementar ya que ya probaste con el basico.

Saludos
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Mako22 en 06 de Octubre de 2007, 02:30:38
Bueno, intentaré a ver lo que consigo, con mi escasos conocimiento.

Gacias y un
Saludo
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 06 de Octubre de 2007, 13:46:26
Hola Mako22, perdona la demora, no a sido que te alla dejado de lado, solo que trabajando en promedio 14 horas diarias (sabados y domingos incluidos) te aseguro que no quedan ganas de ponerse frente a la PC, solo se te curza una cama y una almuada :)

Aquí el programa con el pulsador invertido:

Código: ASM
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;
  3. ;       TAXI PHONE con microcontrolador 16F628A
  4. ;
  5. ;       Nota: El numero marcado por este programa no está aprobado
  6. ;       Coloque el numero telefónico a ser marcado en la tabla 1
  7. ;
  8. ;       Frecuencia de funcionamiento 4MHz
  9. ;
  10. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  11.  
  12.         LIST            P = 16F628A
  13.         INCLUDE         <P16F628A.INC>
  14.         ERRORLEVEL      -302
  15.  
  16.         __CONFIG        _BODEN_OFF&_BOREN_ON&_CP_ON&_DATA_CP_ON&_PWRTE_ON&_WDT_ON&_LVP_OFF&_MCLRE_ON&_INTOSC_OSC_NOCLKOUT
  17.  
  18. ;................................................
  19. ;Definición de pines
  20. #DEFINE         PULSADOR        PORTB,3         ;Pin de entrada del pulsador
  21.  
  22. ;Definición de la RAM
  23. NUM_DISCA       EQU     .32             ;20h Numero que se está discando
  24. TEMP            EQU     .33             ;21h Reguistro temporal
  25. CARRIER         EQU     .34             ;22h Carrier DTMF
  26. TONO_LOW        EQU     .35             ;23h Tono bajo
  27. DEC_TONO_L      EQU     .36             ;24h Decrementar tono bajo
  28. TONO_HIGH       EQU     .37             ;25h Tono alto
  29. DEC_TONO_H      EQU     .38             ;26h Decrementar tono alto
  30. CONT_1          EQU     .39             ;27h Rutina de retardo
  31. CONT_2          EQU     .40             ;28h Rutina de retardo
  32. CONT_3          EQU     .41             ;29h Rutina de retardo
  33.  
  34. ;................................................
  35.         ORG     .0
  36.         bcf     STATUS,RP0      ;Selecciono el banco de memoria 0
  37.         bcf     STATUS,RP1
  38.         goto    INICIO
  39.  
  40.         ORG     .4
  41.         bcf     INTCON,GIE      ;Desactivo todas las intrerrupciones
  42.         return
  43.  
  44. ;................................................
  45. ;Table 1 Tabla que almacena el numero a discar
  46. ;0A = 0
  47. ;01 = 1
  48. ;02 = 2
  49. ;03 = 3
  50. ;04 = 4
  51. ;05 = 5
  52. ;06 = 6
  53. ;07 = 7
  54. ;08 = 8
  55. ;09 = 9
  56.  
  57. ;Colocar tantos RETLW como dígitos tenga el numero que se desea discar
  58. ;Para finalizar colocar el valor RETLW 0Eh para indicar que ya no hay numeros a discar
  59. ;En el ejemplo el numero discado es: 0112329255
  60.  
  61. Table1
  62.         addwf   PCL,F
  63.         retlw   0Ah             ;0
  64.         retlw   01h             ;1
  65.         retlw   01h             ;1
  66.         retlw   02h             ;2
  67.         retlw   03h             ;3
  68.         retlw   02h             ;2
  69.         retlw   09h             ;9
  70.         retlw   02h             ;2
  71.         retlw   05h             ;5
  72.         retlw   05h             ;5
  73.         retlw   0Eh             ;E = fin del numero
  74.  
  75. ;................................................
  76. ;Table2 tonos bajos del DTMF
  77. Table2
  78.         addwf   PCL,F
  79.         nop
  80.         retlw   75h             ;1
  81.         retlw   75h             ;2
  82.         retlw   75h             ;3
  83.         retlw   6Bh             ;4
  84.         retlw   6Bh             ;5
  85.         retlw   6Bh             ;6
  86.         retlw   60h             ;7
  87.         retlw   60h             ;8
  88.         retlw   60h             ;9
  89.         retlw   57h             ;0
  90.  
  91. ;................................................
  92. ;Table3 tonos altos del DTMF
  93. Table3
  94.         addwf   PCL,F
  95.         nop
  96.         retlw   44h             ;1
  97.         retlw   3Dh             ;2
  98.         retlw   37h             ;3
  99.         retlw   44h             ;4
  100.         retlw   3Dh             ;5
  101.         retlw   37h             ;6
  102.         retlw   44h             ;7
  103.         retlw   3Dh             ;8
  104.         retlw   38h             ;9
  105.         retlw   3Dh             ;0
  106.  
  107. ;................................................
  108. ;Short delay between tone approx 50mS
  109. Del1
  110.         clrwdt                  ;Reseteo el WDT
  111.         movlw   .80
  112.         movwf   CONT_2
  113. Del1A
  114.         decfsz  CONT_1,F
  115.         goto    Del1A
  116.         decfsz  CONT_2,F
  117.         goto    Del1A
  118.         retlw   .0
  119.  
  120. ;................................................
  121. ;Retardo de 0.7sec
  122. Del2
  123.         clrwdt                  ;Reseteo el WDT
  124.         nop
  125.         nop
  126.         nop
  127.         nop
  128.         nop
  129.         nop
  130.         nop
  131.         decfsz  CONT_1,F
  132.         goto    Del2
  133.         decfsz  CONT_2,F
  134.         goto    Del2
  135.         retlw   .0
  136.  
  137. ;................................................
  138. ;Retardo de 0.1sec
  139. Del3
  140.         movlw   .110
  141.         movwf   CONT_1
  142. PLoop1
  143.         movlw   .181
  144.         movwf   CONT_2
  145. PLoop2
  146.         clrwdt                  ;Reseteo el WDT
  147.         clrwdt                  ;Reseteo el WDT
  148.         decfsz  CONT_2,F
  149.         goto    PLoop2
  150.         decfsz  CONT_1,F
  151.         goto    PLoop1
  152.         retlw   .0
  153.  
  154. ;................................................
  155. ;Discado del numero por medio de DTMF
  156. Dial1
  157.         movf    NUM_DISCA,W     ;Cargo el dígito a discar en W
  158.         call    Table1
  159.         movwf   CARRIER         ;Cargo en CARRIER el numero a discar
  160.         movlw   0Eh             ;Verifico que el valor anterior no sea 0Eh
  161.         xorwf   CARRIER,W
  162.         btfsc   STATUS,Z
  163.         goto    Main5           ;Si es 0Eh salgo de la rutina de discado
  164.         movf    CARRIER,W
  165.         call    Table2
  166.         movwf   TONO_LOW        ;Cargo el reguistro con el valor para el tono bajo
  167.         movwf   DEC_TONO_L      ;Cargo el reguistro con el valor para el tono bajo
  168.         movf    CARRIER,W
  169.         call    Table3
  170.         movwf   TONO_HIGH       ;Cargo el reguistro con el valor para el tono alto
  171.         movwf   DEC_TONO_H      ;Cargo el reguistro con el valor para el tono alto
  172.         goto    DTMF1
  173. Dial2
  174.         call    Del1            ;Llamada a retardo antes de discarl el proximo dígito
  175.         call    Del1            ;Llamada a retardo antes de discarl el proximo dígito
  176.         incf    NUM_DISCA,F     ;Incremento el dígito a discar
  177.         goto    Dial1
  178.  
  179. ;................................................
  180. ;Rutina que genera el DTMF
  181. DTMF1
  182.         movlw   .160            ;Cantidad de ciclos del tono de discado
  183.         movwf   TEMP
  184. DTMF2
  185.         decfsz  DEC_TONO_H,F    ;Decremento el reguistro del tono alto
  186.         goto    DTMF3
  187.         movlw   .16
  188.         xorwf   PORTB,F         ;Seteo la salida adecuada
  189.         movf    TONO_HIGH,W     ;Cargo W con el valor para el tono alto
  190.         movwf   DEC_TONO_H      ;Re-Cargo el reguistro de decremento de tono alto con el valor inicial
  191. DTMF3
  192.         decfsz  DEC_TONO_L,F    ;Decremento el reguistro del tono bajo
  193.         goto    DTMF2
  194.         movlw   .32
  195.         xorwf   PORTB,F         ;Seteo la salida adecuada
  196.         movf    TONO_LOW,W      ;To re-load low-tone file
  197.         movwf   DEC_TONO_L      ;Re-load low-tone file
  198.         decfsz  TEMP,F          ;Decrement loops file
  199.         goto    DTMF2
  200.         goto    Dial2
  201.  
  202. ;................................................
  203. INICIO
  204.         clrwdt                  ;Reseteo el WDT
  205.         movlw   .7              ;Desactivo los comparadores
  206.         movwf   CMCON
  207.         clrf    PORTA           ;Borro el puerto A
  208.         clrf    PORTB           ;Borro el puerto B
  209.         bsf     STATUS,RP0      ;Cambio al banco de memoria 1
  210.         movlw   B'01111111'     ;Todo el puerto A como entrada
  211.         movwf   TRISA
  212.         movlw   B'11001111'     ;RB4 y RB5 como salidas y el resto entradas
  213.         movwf   TRISB
  214.         movlw   B'10001111'     ;Prescaler en 128 asignado al WDT
  215.         movwf   OPTION_REG      ;Cargo el reguistro OPTION
  216.         bcf     STATUS,RP0      ;Cambio al banco de memoria 0
  217.  
  218. Main1
  219.         call    Del2            ;Llamada a retardo
  220.         call    Del2            ;Llamada a retardo
  221.  
  222.         clrf    NUM_DISCA       ;Borro todos los reguistros a usar
  223.         clrf    TEMP
  224.         clrf    CARRIER
  225.         clrf    TONO_LOW
  226.         clrf    DEC_TONO_L
  227.         clrf    TONO_HIGH
  228.         clrf    DEC_TONO_H
  229.         clrf    CONT_1
  230.         clrf    CONT_2
  231.         clrf    CONT_3
  232.  
  233. Main2
  234.         movf    NUM_DISCA,W
  235.         call    Table1
  236.         xorlw   .0
  237.         btfss   STATUS,Z
  238.         goto    Main3
  239.         incf    NUM_DISCA,F
  240.         goto    Main2
  241. Main3
  242.         btfsc   PULSADOR        ;Verifico el pulsador, si esta en alto salto
  243.         goto    Main4           ;si está en bajo salto a la rutina Main4
  244. Sw
  245.         clrwdt                  ;Reseteo el WDT
  246.         btfss   PULSADOR        ;Verifico el pulsador, si esta en bajo salto
  247.         goto    Sw              ;Si es alto salto a Sw
  248.         call    Del3            ;Llamada a retardo
  249.         btfss   PULSADOR        ;Verifico el pulsador, si esta en bajo salto
  250.         goto    Sw              ;Si es alto salto a Sw
  251. Main4
  252.         clrwdt                  ;Reseteo el WDT
  253.         goto    Dial1           ;Salto a la rutina de discado
  254. Main5
  255.         movlw   .166            ;Rutina de retardo de 2min para luego de discar
  256.         movwf   CONT_3
  257. RET
  258.         call    Del2            ;Llamada a retardo
  259.         decfsz  CONT_3,F
  260.         goto    RET
  261.         goto    Main1           ;Reinicio todo el proceso desde la posición Main1
  262.  
  263. ;................................................
  264.         end

Prueba esto luego veremos lo otro.

Un saludo.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: jfmateos2 en 24 de Octubre de 2007, 04:15:15
Hola Mako, voy a acercarme esta mañana a comprar los componentes para montar tu mismo circuito pero tengo una duda. ¿Al final montaste el puente rectificador como está indicado en el circuito original o como te dijo Chaly? ¿No estás utilizando la resistencia 390-470ohm/5W sino un teléfono, verdad?
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: jfmateos2 en 29 de Octubre de 2007, 17:20:54
Aquí (http://213.97.130.124/telef1/telef1.htm) otro circuito similar que marca un número de teléfono cuando detecta que se ha perdido el suministro eléctrico. En este caso la marcación se realiza por pulsos.

Y aquí (http://213.97.130.124/home/PDF/telef4.pdf) para marcación por tonos.

Ambos a baterías.
Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: Chaly29 en 30 de Octubre de 2007, 01:58:29
Hola!! Tal parece que Mako22 se a alejado del tema, ya sea porque solucionó el problema y porque se a dado por vencido, pero igual me gustaría saber el motivo.

Un saludo.

Atte. CARLOS.

Título: Re: Ayuda para una persona mayor que vive sola
Publicado por: krostby en 25 de Octubre de 2009, 00:26:57
Hola Marco, lograste solucionar tu problema ??