Autor Tema: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876  (Leído 4771 veces)

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

Desconectado JULIO38

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 153
PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« en: 17 de Mayo de 2005, 05:58:00 »
Hola a todos/as

En un pequeño proyecto que estoy haciendo con un amigo, el cual es el que un pic 16f876 marque un numero de telefono, el problema esta en que no siempre marca bien y no se el porque.
Si alguien pudiera ayudarme se lo agradeceria. Giño

Un saludo

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3492
    • http://www.todopicelectronica.com.ar
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #1 en: 17 de Mayo de 2005, 06:42:00 »
Hola julio!, una consulta?, el discado es por TONOS o por PULSOS?
hay una central telefonica interna?, esperas un tiempo luego de "tomar" la linea?
como cargas la linea?
danos mas info ok?

un gran abrazo

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado JULIO38

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 153
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #2 en: 17 de Mayo de 2005, 12:00:00 »
Hola Norberto, es un placer volver a charlar contigo.

Te esplico yo tengo hecho un pequeño circuito que realiza la llamada a un telefono que yo le digo, pero en el tiempo el integrado que utilizo para codificar los tonos dtmf se quedo obsoleto y tengo miles de problemas para encontrar otro que lo sistituya, por lo cual opto por que el pic sea el encargado de generar los dtmf, a mi amigo que es el que se encarga de hacerme el soft le dije que lo hiciera en el picbasic y la verdad es que funciona con el peculiar problema de que hay veces que al hacer el marcado o no lo marca bien o marca un numero distinto al programado, me explico (hay veces que sale una voz que dice el numero marcado no esiste y en otra ocasiones llama a un telefono distinto al que yo pretendo).
En españa se utiliza el discado por tonos.
Concretamente donde yo hago las pruebas tengo varias lineas y concretamente en la que mas me falla es una linea normal analogica y en la otra linea que es compartida atraves de una central rdsi funciona bien.
El circuito de adaptacion de la linea lo hago atraves de un hibrido llamado AG2120.
Y la deteccion de tonos lo hago atraves de un integrado llamado CMX673-P1
Tu crees que hay solución?

GRACIAS Y UN SALUDOTE  RebotadoRebotadoRebotadoRebotadoRebotadoRebotado

Desconectado JULIO38

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 153
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #3 en: 25 de Mayo de 2005, 03:20:00 »
Hola Norberto
Me pongo encontacto contigo otra vez para saber si tengo algun posibilidad de solucionar el problemilla este, pues aun que le e puesto un filtro compuesto de dos resistencias  y dos condensadores sige todavia dandome alguna que otra vez el problema (el numero marcado no existe).Ardiendo

Gracias y un saludo

Julio

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #4 en: 25 de Mayo de 2005, 05:03:00 »
julio38 saludos...

Te comento la generacion de tonos por el pic no es buena saliendo directamente del pic ni que le pongas las resistensias y los condensadores que dice el manual.
debes buscar in mejopr filtrado quite las armonicas que genera el pic.

Importante que uses el pic a 20 Mhz ok sino olvidalo no con filtros te discara .

ami me paso igual a veces disca bien a veces no etc .
trata de usar el mt8888 que genera y recibe dtmf.

y con respecto al mcx que uss para detectar el tono yo lo use y no es nada estable me dio muchos problemas bueno depende lo que estes tu haciendo. ok

saludos....

Desconectado JULIO38

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 153
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #5 en: 25 de Mayo de 2005, 11:16:00 »
Hola psicopic y gracias por interesarte.
Te agradeceria si pudieras decirme como hacer para quitar los armonicos y en referencia al circuito integrdo 8888, como comento anteriormente tengo muchos problemas de suministro de ese y otros iguales  que el y por eso mismo opto por que lo haga el pic.
En referencia al CMX lo utilizo para detectar los tonos de llamando.

Un saludo Giño

Desconectado pikman

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 675
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #6 en: 17 de Junio de 2005, 20:45:00 »
Hola, la tuina de ejemplo de generacion de DTMF de microchip funciona correctamente, pero claro hay que usar un puerto completo del micro,
tambien hay uno parecido en los ejemplos de CCS, se que el PICBASIC
posee una istruccion que se llama DTMFOUT, y genera un tono por un pin,
no se que tan confiable sea, podrias preguntar en el subforo de PBP,
de calquier modo te recomiendo usar el HT9200 de Holtek que es baratisimo,
usa un XTAL de 3,57 Mhz y anada barbaro, ademas hay un modelo que
es el HT9200B que puedes usarlo en modo paralelo o serial, si es paralelo
usa la misma cantidad de lineas que el MT8870 que es un decodificador,
yo lo use para un discador de alarmas, despues migre al MT8880 que genera
recibe ya demas lee call progress asi que no tiene sentido usar estos dos
aunque si es por costos si.
Si lo unico que pretendes es generar DTMF pues entonces puedes usar el
HT9200 que es solo serie son 8 pines y ademas de barato va de maravillas y
no creo que tengas problemas para conseguirlo, si te decides por esto te puedo
ayudar a programarlo aunque no dudo que los vas a poner en funcionamiento
en un periquete, busca el DS en www.holtek.com ahi tambien veras quien es el que lo vende un tu pais.

saludos

ARIEL / PIKMAN
saludos
PikMan

Desconectado JULIO38

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 153
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #7 en: 20 de Junio de 2005, 02:50:00 »
Hola Pikman
Muchas gracias por tu interes, yo concretamente uso el "FREQOUT" no se si el "DTMFOUT" es mejor.Como comento anteriormente, el circuito ya esta hecho de hace bastante tiempo y funcionando perfectamente, el integrado generador de tonos que utilizo es el "TP5088" que es super facilisimo de usar y muy barato pero me encuentro con el problema de que se dejo de fabricar por lo cual me veo en la obligacion de intentar sustituirlo por otro similar, pero me encuentro con el problema que los integrados qe se asemejan al TP5088 son practicamente imposibles de encontrar en mi pais (CLARO ESTA QUE SI LAS CANTIDADES QUE COMPRO SON UN MONTON PUEDEN PEDIRMELO FUERA DEL PAIS) el inconveniente esta en que mas de la mitad de esas cantidaddes me las tendria que comer y me saldria muy caro, tambienbasandonos en la posibilidad de que nuestros grandes amigos los PIC son capaces de hacer ese trabajo pense ¿para que hacer que el circuito sea mas complejo y mas caro? y te digo la verdad que como funcionar funciona de maravilla el problema es como digo anteriormente, el que cuando le da la real gana al circuito no me marca bien el telefono que tiene programado y salta la operadora diciendo eso de (EL NUMERO MARCADO NO EXISTE).
No se si el problema esta en que despues del filtro hay que ponerle algun tipo de amplificador o algo asi. De todas las maneras te pego el esquema de como esta puesto el filtro en el circuito, si conocieras alguna solucion te lo agradeceria.

Un saludoteGiño

Desconectado pikman

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 675
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #8 en: 20 de Junio de 2005, 20:32:00 »
Hola, JULIO38, como te dije anteriormente no uso PICBASIC, lo que si te digo que parece bastante dificil que este circuito sea estable, como me lo muestras, aca en Argentina el HT9200 serial cuesta u$s 0,73 por lo que yo no justifico gastar una linea de programa e generar tonos con el micro, me parece raro que en España donde tu estas no lo consigas, pero bueno todo es posible.

Como solucion a tu problema, puedes usar tal vez la rutina que hay en www.microchip.com, que funciona en cualquier microcontrolador PIC, pero usa 7 pines del micro, y esta en ASM, cualquier compilador permite insertar ASM, por lo que no seria dificil usar esta rutina dentro de tu programa PICBASIC, y si te puedo decir que es la solucion pues en una oportunidad, utilize este metodo y funciona perfectamente, aca te pego el codigo, pero si bajas la nota de aplicacion ahi vas a ver el circuito, ademas no se si te va a servir pues no se si dispones de esa cantidad de pines, el codigo es para el 16C54 deberas redireccionar la ram para el 16F876

espero te ayude, saludos.

; Filename: DTMF.ASM
; **********************************************
; * Author:   John Day                         *    
; *           Sr. Field Applications Engineer  *
; *       Microchip Technology             *
; * Revision: 1.1                              *
; * Date      December 20, 1995                *
; * Part:     PIC16C54                         *
; * Compiled using MPASM V1.40                 *
; **********************************************
; * Include files:                             *
; *           NONE (used by DTMF.ASM)          *
; **********************************************
; * Fuses:    OSC:  XT (3.579545 Mhz xtal)     *
; *           WDT:  OFF                        *
; *            CP:  OFF                *
; ****************************************************************************
; * This program uses and external R2R ladder network to generate complete   *
; * DTMF dial tones used for telphone dialing.                   *
; ****************************************************************************
; * Program Memory:                                                      *
; *          220 Words - sine wave look-up table (7 sine waves total)    *
; *       25 Words - keypad sine address matrix look-up              *
; *           37 Words - DTMF sine wave base initialization/generation   *
; *            3 Words - Initialization                  *
; *       25 Words - Test sample code                    *
; * RAM Memory:                                      *
; *        8 Bytes                           *
; ****************************************************************************
   list     p=16C54, r=dec
   #include <p16c5x.inc>
   __CONFIG _XT_OSC&_WDT_OFF&_CP_OFF

WAVEABASE       EQU     10h ; Base address of sine A waveform
POINTERA        EQU     11h ; Pointer to current position in sine A
WAVEBBASE       EQU     12h ; Base address of sine B waveform
POINTERB        EQU     13h ; Pointer to current position in sine B
NEXTVALUE       EQU     14h ; Sum register to store Sine A + Sine B
SINECOUNT       EQU     15h ; LSB counter for time to output DTMF
SINECOUNTH      EQU     16h ; MSB counter for time to output DTMF
TEMP        EQU 17h ; Temporary storage
ENDSINE         EQU     .127    ; Value to show the end of a sine table
; ****************************************************************************
; * sinelookup                                   *
; * This is the look-up table for the (4 X 3) keypad matrix sine wave table. *
; * There are (7) sine waves stored here and adding any two from the         *
; * matrix will product a DTMF signal for the appropriate key            *
; * Crystal Frequency:  3.579545 Mhz                         *
; * Instructions/Loop:  35                           *
; * Base Frequency:     1209 1336 1477  697  770  852  941 Hz            *
; * Actual Frequency:   1217 1345 1475  691  774  852  946 Hz            *
; * Error                0.7  0.7 -0.1 -0.9  0.5    0  0.5 %             *
; * Num Table Entries:    21   19   52   37   33   30   27           *
; * Total Table Entries: 219                             *
; * Program Memory:                                                      *
; *         220 Words - Used for (7) sine look-up entries                *
; * RAM Memory:                                      *
; *     NONE - Look-up table only                    *
; ****************************************************************************
sinelookup      ; Used as address lable to call look-up table
   addwf      PCL,F    ; Add sine offset to PC to jump into table
sineoffset      ; Used to calculate offset value address
sinerow1        ; Address for sine wave in row 1
   retlw      149
   retlw      170
   retlw      190
   retlw      208
   retlw      224
   retlw      236
   retlw      246
   retlw      253
   retlw      255
   retlw      254
   retlw      250
   retlw      242
   retlw      230
   retlw      216
   retlw      199
   retlw      180
   retlw      160
   retlw      138
   retlw      117
   retlw       95
   retlw       75
   retlw       56
   retlw       39
   retlw       25
   retlw       13
   retlw        5
   retlw        1
   retlw        0
   retlw        2
   retlw        9
   retlw       19
   retlw       31
   retlw       47
   retlw       65
   retlw       85
   retlw      106
   retlw      127  ; End of this sine wave
sinerow2        ; Address for sine wave in row 2
   retlw      152
   retlw      175
   retlw      197
   retlw      216
   retlw      232
   retlw      244
   retlw      252
   retlw      255
   retlw      254
   retlw      248
   retlw      238
   retlw      224
   retlw      207
   retlw      186
   retlw      164
   retlw      140
   retlw      115
   retlw       91
   retlw       69
   retlw       48
   retlw       31
   retlw       17
   retlw        7
   retlw        1
   retlw        0
   retlw        3
   retlw       11
   retlw       23
   retlw       39
   retlw       58
   retlw       80
   retlw      103
   retlw      127  ; End of this sine wave
sinerow3        ; Address for sine wave in row 3
   retlw      154
   retlw      180
   retlw      203
   retlw      223
   retlw      238
   retlw      249
   retlw      255
   retlw      255
   retlw      249
   retlw      238
   retlw      223
   retlw      203
   retlw      180
   retlw      154
   retlw      128
   retlw      101
   retlw       75
   retlw       52
   retlw       32
   retlw       17
   retlw        6
   retlw        0
   retlw        0
   retlw        6
   retlw       17
   retlw       32
   retlw       52
   retlw       75
   retlw      101
   retlw      127  ; End of this sine wave
sinerow4        ; Address for sine wave in row 4
   retlw      157
   retlw      185
   retlw      210
   retlw      230
   retlw      245
   retlw      254
   retlw      255
   retlw      250
   retlw      238
   retlw      221
   retlw      198
   retlw      171
   retlw      142
   retlw      113
   retlw       84
   retlw       57
   retlw       34
   retlw       17
   retlw        5
   retlw        0
   retlw        1
   retlw       10
   retlw       25
   retlw       45
   retlw       70
   retlw       98
   retlw      127  ; End of this sine wave
sinecolumna     ; Address for sine wave in column A
   retlw      165
   retlw      200
   retlw      228
   retlw      247
   retlw      255
   retlw      252
   retlw      238
   retlw      215
   retlw      183
   retlw      147
   retlw      108
   retlw       72
   retlw       40
   retlw       17
   retlw        3
   retlw        0
   retlw        8
   retlw       27
   retlw       55
   retlw       90
   retlw      127  ; End of this sine wave
sinecolumnb     ; Address for sine wave in column B
   retlw      169
   retlw      206
   retlw      235
   retlw      252
   retlw      255
   retlw      245
   retlw      222
   retlw      188
   retlw      149
   retlw      106
   retlw       67
   retlw       33
   retlw       10
   retlw        0
   retlw        3
   retlw       20
   retlw       49
   retlw       86
   retlw      127  ; End of this sine wave
sinecolumnc     ; Address for sine wave in column C (double sine wave)
   retlw      173
   retlw      212
   retlw      241
   retlw      255
   retlw      252
   retlw      233
   retlw      200
   retlw      158
   retlw      112
   retlw       68
   retlw       32
   retlw        8
   retlw        0
   retlw        8
   retlw       32
   retlw       68
   retlw      112
   retlw      158
   retlw      200
   retlw      233
   retlw      252
   retlw      255
   retlw      241
   retlw      212
   retlw      173
   retlw      128
   retlw       82
   retlw       43
   retlw       14
   retlw        0
   retlw        3
   retlw       22
   retlw       55
   retlw       97
   retlw      143
   retlw      187
   retlw      223
   retlw      247
   retlw      255
   retlw      247
   retlw      223
   retlw      187
   retlw      143
   retlw       97
   retlw       55
   retlw       22
   retlw        3
   retlw        0
   retlw       14
   retlw       43
   retlw       82
   retlw      127  ; End of this sine wave
; *****************************************************************************
; * sineaddress                                   *
; * This subroutine is used to calculate actual address in the sinelookup     *
; * table for two DTMF waveforms.  It is only called by setdtmfbase.  W       *
; * is loaded with the key number and this routine returns the sinelookup     *
; * address the sine waves.                           *
; * RAM used:   W                             *
; *     PROGRAM MEM:    25 Words                          *
; *****************************************************************************
sineaddress                  ; Look-up table for sine address
   addwf     PCL,F           ; Add to PC to jump into table
keyoffset
k1      retlw     sinerow1-sineoffset       ; Offset for Row 1 sine wave
   retlw     sinecolumna-sineoffset    ; Offset for Column A sine wave
k2      retlw     sinerow1-sineoffset       ; Offset for Row 1 sine wave
   retlw     sinecolumnb-sineoffset    ; Offset for Column A sine wave
k3      retlw     sinerow1-sineoffset       ; Offset for Row 1 sine wave
   retlw     sinecolumnc-sineoffset    ; Offset for Column A sine wave
k4      retlw     sinerow2-sineoffset       ; Offset for Row 2 sine wave
   retlw     sinecolumna-sineoffset    ; Offset for Column A sine wave
k5      retlw     sinerow2-sineoffset       ; Offset for Row 2 sine wave
   retlw     sinecolumnb-sineoffset    ; Offset for Column B sine wave
k6      retlw     sinerow2-sineoffset       ; Offset for Row 2 sine wave
   retlw     sinecolumnc-sineoffset    ; Offset for Column B sine wave
k7      retlw     sinerow3-sineoffset       ; Offset for Row 3 sine wave
   retlw     sinecolumna-sineoffset    ; Offset for Column B sine wave
k8      retlw     sinerow3-sineoffset       ; Offset for Row 3 sine wave
   retlw     sinecolumnb-sineoffset    ; Offset for Column B sine wave
k9      retlw     sinerow3-sineoffset       ; Offset for Row 3 sine wave
   retlw     sinecolumnc-sineoffset    ; Offset for Column C sine wave
k10     retlw     sinerow4-sineoffset       ; Offset for Row 4 sine wave
   retlw     sinecolumna-sineoffset    ; Offset for Column C sine wave
k11     retlw     sinerow4-sineoffset       ; Offset for Row 4 sine wave
   retlw     sinecolumnb-sineoffset    ; Offset for Column C sine wave
k12     retlw     sinerow4-sineoffset       ; Offset for Row 4 sine wave
   retlw     sinecolumnc-sineoffset    ; Offset for Column C sine wave
key1=k1-keyoffset      ; Calculation for sine addr for keypad 1    
key2=k2-keyoffset      ; Calculation for sine addr for keypad 2
key3=k3-keyoffset     ; Calculation for sine addr for keypad 3
key4=k4-keyoffset      ; Calculation for sine addr for keypad 4
key5=k5-keyoffset      ; Calculation for sine addr for keypad 5
key6=k6-keyoffset      ; Calculation for sine addr for keypad 6
key7=k7-keyoffset      ; Calculation for sine addr for keypad 7
key8=k8-keyoffset      ; Calculation for sine addr for keypad 8
key9=k9-keyoffset      ; Calculation for sine addr for keypad 9
keystar=k10-keyoffset   ; Calculation for sine addr for keypad *
key0=k11-keyoffset     ; Calculation for sine addr for keypad 0
keypound=k12-keyoffset  ; Calculation for sine addr for keypad #
; *****************************************************************************
; * senddtmf                                      *
; * This subroutine is used to calculate the offset address for           *
; * the two sine waves to be sent and initialize the WAVEABASE and WABEBBASE  *
; * file registers.  The key number (key0 - key9 or keystar or keypound) is   *
; * loaded into W before this routine is called.  Next, the DTMF for that     *
; * key is sent to the R2R ladder through portB for 320 mS            *
; * Example:                                              *
; * movlw   key1                                      *
; * call    senddtmf                                  *
; * RAM used:   8 bytes                           *
; *     PROGRAM MEM:    37 Words                          *
; *****************************************************************************
senddtmf
      movwf   TEMP            ; Initialize temp with key number
      call    sineaddress     ; Get the address for sine wave a for this key
      movwf   WAVEABASE       ; Initialize sine wave A base address    
      swapf   WAVEABASE,F     ; swap WAVEABASE so that Z bit is not effected
      movwf   POINTERA        ; Initialize sine wave A pointer address
      incf    TEMP,W          ; Now we get the second sine wave address...
      call    sineaddress     ; Get the address for sine wave b for this key                
      movwf   WAVEBBASE       ; Initialize sine wave B base address
      swapf   WAVEBBASE,F     ; swap WAVEBBASE so that Z bit is not effected
      movwf   POINTERB        ; Initialize sine wave B pointer address
      movlw   20h     ; Place 32 decimal into W for loop counter
      movwf   SINECOUNTH   ; Initialize loop counter to 20
loopsine2cyc
      goto    loopsine       ; Waste two cycles to maintain 35 cycle loop count
loopsine    
      movf    POINTERA,W      ; Place sine wave address into W
      call    sinelookup      ; Look-up first sine wave
      movwf   NEXTVALUE       ; Place first sine wave into NEXTVALUE
      xorlw   ENDSINE         ; Update Z bit
      swapf   WAVEABASE,W     ; Restore to beginning of sine wave
      btfsc   STATUS,Z        ; Skip if not at end of sine wave
      movwf   POINTERA        ; Restore start address if at end of sine
      incf    POINTERA,F      ; Move to the next place in the wave
      movf    POINTERB,W      ; Place sine wave address into W
      call    sinelookup      ; Look-up second sine wave
      addwf   NEXTVALUE,F     ; Add second sine wave into NEXTVALUE
      xorlw   ENDSINE         ; Update Z bit
      swapf   WAVEBBASE,W     ; Pointer of sine wave beginneing -> W
      btfsc   STATUS,Z        ; Skip if not at end of sine wave
      movwf   POINTERB        ; Restore start address if at end of sine
      incf    POINTERB,F      ; Move to next place in the wave
      rrf     NEXTVALUE,W     ; Divide by 2, Place output into PORTB
      movwf   PORTB          ; Update PORTB with new R2R value
      goto    waste2cyc      ; Waste (2) cycles for 35 total
waste2cyc
      decfsz  SINECOUNT,F     ; Skip if we are done
      goto    loopsine2cyc    ; Do it again! (add 2 cycles as well)
      decfsz  SINECOUNTH,F    ; Skip if we are done
      goto    loopsine        ; Do it again!
      retlw   0               ; Return from sine output
; *****************************************************************************
; * init                                      *
; * This code is used to initialize the PIC.  PORTB is set to zero and all    *
; * pins are set to outputs                           *
; * RAM used:   0 bytes                           *
; *     PROGRAM MEM:    3 Words                           *
; *****************************************************************************
init
      clrf    PORTB          ; Init output latches for port B to 0
      clrw               ; Clear W register
      tris    PORTB          ; Set all of PORT B to outputs
; *****************************************************************************
; * testallkeys                                       *
; * This code is used to test all possible keys in the keypad.  First each    *
; * key address is loaded and then senddtmf is called.                        *
; * RAM used:   0 bytes                           *
; *     PROGRAM MEM:    25 Words                          *
; *****************************************************************************
testallkeys      
   movlw   key1        ; Place key "1" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   movlw   key2        ; Place key "2" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   movlw   key3        ; Place key "3" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   movlw   key4        ; Place key "4" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   movlw   key5        ; Place key "5" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   movlw   key6        ; Place key "6" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   movlw   key7        ; Place key "7" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   movlw   key8        ; Place key "8" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   movlw   key9        ; Place key "9" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   movlw   keystar     ; Place key "*" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   movlw   key0        ; Place key "0" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   movlw   keypound    ; Place key "#" address into W
   call    senddtmf    ; Transmit DTMF tone for this key
   goto    testallkeys ; jump back and do it again!
resetvector
   ORG     1ffh        ; The RESET vector of a 54 is at 1FFh
   goto    init        ; Jump to initialion routine
      END        



saludos
PikMan

Desconectado JULIO38

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 153
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #9 en: 30 de Junio de 2005, 02:43:00 »
Hola Pikman
Perdona por no haberte contestado antes pero problemas familiares me han tenido desconectado.
En referencia a el circuito que comentas que lo ves algo inestable, obiamente lo que e puesto es solo para que veas el filtro, que es tal y como indica el manual de picbasic pro, el circuito completo es bastante mas complejo puesto que lleva muchos mas componentes como un circuito detector de caida de tension ,un detector de tonos y varias cosas mas."QUE POR CIERTO CUANDO LO TERMINE Y A ALGUIEN LE PUEDA INTERSAR NO TENGO INCONVENIENTE EN PASARSELO"
Como comente anteriormente el circuito con el filtro que ves en la imagen, funciona pero con el inconveniente que hay veces que no marca bien y consegui averiguar el por que y da la casualidad de que el circuito realmente es correcto al igual que el programa del pic, el jodido fallo esta en la operadora de telefonia, pues el mismo circuito lo enchufe en una linea de telefono que la operadora es telefonica y no fallo ni una sola vez, y en la linea  que  lo estay realizando es una operadora de esas llama "AUNA" o algo asi.
Pues dandole vueltas al asunto me puse a mirar en mi pais todos los malloristas de componentes y encontre el famoso MT8888CE el cual aun que es algo lioso de configurar pero me hace todas las funciones que yo quiero y asi puedo tambien quitar el circuito que me detectaba los tonos de llamando,comunicando etc.
De todas formas, MUCHISIMAS GRACIAS por tu ayuda y interes. Giño Giño
UN GRAN SALUDO  

ATT. JULIO Rebotado Rebotado Rebotado Rebotado Rebotado

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #10 en: 06 de Octubre de 2005, 00:21:00 »
Saludos, Julio por casualidad hiciste pruebas en la detección del CALL PROGRESS con este IC? de ser asi, serías tan amable de orientarme para poder realizarlo? gracias por tu tiempo.

Saludos,
Mario.

Lima - Perú

Desconectado JULIO38

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 153
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #11 en: 07 de Octubre de 2005, 02:23:00 »
Hola Mario
Si, hice las pruebas y lo tengo funcionando.
Dime cual es el problema que tienes, si es de sof o de hard, para poder ayudarte mejor.
Un saludo
att. Julio Giño

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #12 en: 07 de Octubre de 2005, 10:26:00 »
En primer lugar gracias por tu tiempo en leer mi mensaje Giño   El asunto es el siguiente, para la generación y detección de tonos no tengo ningún problema, mi dilema es en la detección del CALL PROGRESS... cuando existe la presencia de los 425Hz a la salida del IRQ/CP tengo un tren de pulsos equivalente a los 425Hz, mi pregunta ¿cómo puedo realizar el análisis de esta señal? se podría hacer con el bloque CAPTURA del modulo CCP del PIC (por cierto estoy usando el 18F4620 y programo en ASM) pero sinceramente nunca use este módulo sólo el PWM. Respecto al HARDWARE no tengo problema, tengo 2 versiones: un diseño con trafo de aislamiento que saque de un modem y otro que un compañero del FORO muy gentilmente compartio. Por favor si pudieras darme alguna orientación de cómo poder distinguir las diferentes señalizaciones en la línea telefónica y sobre todo cuando al otro lado de la línea contestaron te lo agradecería infinitamente Llorando
Saludos,
Mario.

Lima - Perú

Desconectado pikman

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 675
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #13 en: 07 de Octubre de 2005, 11:58:00 »
Mario, para usar el CPP para medir frecuencia, utilizando el modo captura , puedes mirar http://miarroba.com/foros/ver.php?foroid=46840&temaid=639967&marcar=velocidad+viento

en este link se habla de medir la velocidad del viento, pero
mide frecuencia, con pocos cambios puedes implementarlo
para medir la frecuencia de 425 khz.

saludos

ARIEL
saludos
PikMan

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: PROBLEMA AL MARCAR UN NUMERO DE TELEFONO CON UN PIC 16F876
« Respuesta #14 en: 07 de Octubre de 2005, 12:34:00 »
Hola Ariel, gracias una vez más por tu ayuda...  ok ahora mismo me pondre a analizar el programa que me envias, el único detalle es que no me entiendo con el C Enfurruñado  creo que en el CCS hay una opción para visualizarlo en ASM (si me equivoco me corrigen por favor) pero como dicen nunca es tarde para aprender Giño

Saludos,
Mario.

Lima - Perú


 

anything