Autor Tema: integrales, derivadas en la familia de los 16fxxx  (Leído 4097 veces)

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

Desconectado z0d4

  • PIC10
  • *
  • Mensajes: 9
integrales, derivadas en la familia de los 16fxxx
« en: 11 de Octubre de 2005, 02:17:00 »
Hola amigos, en un proyecto que estoy realizando necesito calcular la derivada de un registro.... el problema es que esta rutina la he encontrado hecha solamente para la familia de los 17f y 18f. En varias he leido que por las limitantes de la familia 16xx, todos los calculos para hacer estas rutinas hacen que no sea viable la implementacion de éstas en los pics que mencione. Pero como mi aplicacion no requiere una rapida velocidad de procesamiento, quiero implementarlo.

Si alguno tiene la idea de implementar esta rutina, me sería de gran ayuda.

Me despido. y de antemano muchas gracias.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: integrales, derivadas en la familia de los 16fxxx
« Respuesta #1 en: 11 de Octubre de 2005, 06:45:00 »
Si posteases el código que has encontrado quizá sirva de ayuda para encontrar un modo de solucionar tu problema.
Cuando dices que quieres calcular la derivada de un registro,te refieres a que ese registro es una estructura que contiene la función a derivar ¿no?

Desconectado poi5on

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 127
RE: integrales, derivadas en la familia de los 16fxxx
« Respuesta #2 en: 11 de Octubre de 2005, 10:31:00 »
Primera vez q escucho eso, por favor podrian dar mas info? un registro guarda un valor binario, la derivada de un numero es cero. Entonces como conviertes el valor de un registro en una función?
SaludosRebotadoRebotado

Desconectado z0d4

  • PIC10
  • *
  • Mensajes: 9
RE: integrales, derivadas en la familia de los 16fxxx
« Respuesta #3 en: 11 de Octubre de 2005, 12:55:00 »
Hola, primero q nada mis disculpas, ya poi5on tiene razon en que la derivada de una constante es cero.. y olvide explicarles la idea de la rutina que tengo.

La idea es conectar mediante software el conversor a/d del pic a un registro con la idea de variar un registro cualquiera... en un loop cerrado, y a medida que vaya variando ese registro ir obteniendo el valor de la derivada que deseo en otro registro.

Ahora, la rutina de derivada q encontre esta en la aplication note http://ww1.microchip.com/downloads/en/AppNotes/00544d.pdf de la microchip

Esta rutina es para la familia de los pic17... y por ignorancia no podria cambiarlo ya que hay instrucciones q desconozco, como el movfp y otros

;*******************************************************************
00968 ; Numerical Differenciation
00969 ;
00970 ; The so called “Three-Point Formula” is implemented to
00971 ; differenciate a sequence of points (uniformly sampled).
00972 ; The eqn implemented is :
00973 ; f’(Xn) = [ f(Xn - 2h) - 4*f(Xn - h) + 3*f(Xn)]*0.5/h
00974 ; where Xn is the present sample and ‘h’ is the step size.
00975 ;
00976 ; The above formula may be rewritten as :
00977 ;
00978 ; f’(Xn) = [ 0.5*f(Xn -2) - 2*f(Xn - 1) + 0.5*3*f(Xn)]*1/DiffK
00979 ; where DiffK = h = Step Size
00980 ;
00981 ; This differenciation routine can be used very effectively
00982 ; in the computation of the differential component part in
00983 ; a PID Loop calculation in Motor Control Applications
00984 ;
00985 ; Double precision arithmetic is used throught
00986 ; The present sample value is assumed to be in locations
00987 ; (XnHi, XnLo). The past two values are assumed to be in locations
00988 ; (Xn_1_Hi, Xn_1_Lo) & (Xn_2_Hi, Xn_2_Lo).
00989 ; The output value is located in DiffHi & DiffLo. No overflow
00990 ; checking mechanism is implemented. If the values are limited
00991 ; to 12 bits, then the user need not worry about overflows
Ó 1997 Microchip Technology Inc. DS00544D-page 4-33
AN544
00992 ;
00993 ; It is user’s responsibility to update the past values with the
00994 ; present values before calling this routine.
00995 ; After computation, the present value Xn is not moved to Xn_1
00996 ; because the user may want these values to be intact for other
00997 ; computations ( say numerical integration)
00998 ; Also it is user’s responsibility to set past 2 values
00999 ; (Xn_1 & Xn_2) values to be zero on initialization.
01000 ;
01001 ;*******************************************************************
01002 ;
02C6 01003 Diff
02C6 6A2B 01004 movfp Xn_2_Lo,WREG
02C7 0E27 01005 addwf XnLo,W
02C8 011A 01006 movwf ACCbLO
02C9 6A2C 01007 movfp Xn_2_Hi,WREG
02CA 1028 01008 addwfc XnHi,W
02CB 011B 01009 movwf ACCbHI ; Y = f(Xn-2) + f(Xn)
01010 ;
02CC 6A27 01011 movfp XnLo,WREG
02CD 0F1A 01012 addwf ACCbLO, F
02CE 6A28 01013 movfp XnHi,WREG
02CF 111B 01014 addwfc ACCbHI, F
02D0 6A27 01015 movfp XnLo,WREG
02D1 0F1A 01016 addwf ACCbLO, F
02D2 6A28 01017 movfp XnHi,WREG
02D3 111B 01018 addwfc ACCbHI, F ; Y = f(Xn-2) + 3*f(Xn)
01019 ;
02D4 8804 01020 bcf ALUSTA,C
02D5 191B 01021 rrcf ACCbHI, F
02D6 191A 01022 rrcf ACCbLO, F ; Y = 0.5*[ f(Xn-2) + 3*f(Xn) ]
01023
01024 ;
02D7 6A29 01025 movfp Xn_1_Lo,WREG
02D8 051A 01026 subwf ACCbLO, F
02D9 6A2A 01027 movfp Xn_1_Hi,WREG
02DA 031B 01028 subwfb ACCbHI, F
02DB 6A29 01029 movfp Xn_1_Lo,WREG
02DC 051A 01030 subwf ACCbLO, F
02DD 6A2A 01031 movfp Xn_1_Hi,WREG
02DE 031B 01032 subwfb ACCbHI, F ; Y = 0.5*[f(Xn-2) + 3*f(Xn)] - 2*f(Xn-1)
01033 ;
02DF 6A2D 01034 movfp DiffKLo,WREG
02E0 0118 01035 movwf ACCaLO
02E1 6A2E 01036 movfp DiffKHi,WREG
02E2 0119 01037 movwf ACCaHI
01038 ;
02E3 E119 01039 call D_divS
02E4 6A1A 01040 movfp ACCbLO,WREG
02E5 012F 01041 movwf DiffLo
02E6 6A1B 01042 movfp ACCbHI,WREG
02E7 0130 01043 movwf DiffHi ; result = Y/h
01044 ;
02E8 0002 01045 return


me despido, y gracias de antemano Muchas risas

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: integrales, derivadas en la familia de los 16fxxx
« Respuesta #4 en: 11 de Octubre de 2005, 17:03:00 »
Hola z0d4,

Aquí están todas las rutinas de math que hay en microchip, suerte.

http://microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1490&filterID=387

App Notes
Appnotes    Description    Date    Launch
TB043    KEELOQ® CRC Verification Routines    11/8/04    
AN670    Floating Point to ASCII Conversion    9/11/01    
AN752    AN752 CRC Algorithm for MCRF45X Read/Write Device    3/15/01    
TB040    Fast Integer Square Root    10/16/00    
AN730    CRC Generating and Checking    5/22/00    
TB028    Technique to Calculate Day of Week    8/23/99    
TB026    Calculating Program Memory Checksums Using a PIC16F87X    11/6/98    
AN616    Digital Signal Processing with the PIC16C74    8/26/97    
AN526    PIC16C5x/PIC16Cxx Utility Math Routines    8/26/97    
AN542    Implementation of Fast Fourier Transforms    8/26/97    
AN660    Floating Point Routines    8/26/97    
AN540    Implementing IIR Digital Filters    8/26/97    
AN575    IEEE 754 Compliant Floating Point Routines    8/26/97    
AN643    Adaptive Differential Pulse Code Modulation using the PIC16/17    8/26/97    
AN544    Math Utility Routines    8/26/97    
AN617    Fixed Point Routines    8/26/97    

Desconectado z0d4

  • PIC10
  • *
  • Mensajes: 9
RE: integrales, derivadas en la familia de los 16fxxx
« Respuesta #5 en: 15 de Octubre de 2005, 11:16:00 »
Hola, perdon por la tardanza en responder migsantiago, pero esas aplication note de la microchip ya las habia revisado antes.. y de hecho la rutina que pegue para los pic de la familia 17 la saque de uno de esos.

De todas maneras muchas gracias Giño

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: integrales, derivadas en la familia de los 16fxxx
« Respuesta #6 en: 15 de Octubre de 2005, 11:23:00 »
Sí, ya había visto Muchas risas

Puse las demás por si otros las encontraban útiles también

Suerte!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: integrales, derivadas en la familia de los 16fxxx
« Respuesta #7 en: 22 de Octubre de 2005, 10:19:00 »
poi5on: Bueno, seguramente se esta refiriendo a un punto dado de una determinada funcion. Ya es sabido que la derivada de una constante(registro) es cero...Sonrisa GiganteSonrisa GiganteSonrisa Gigante.
Bueno, no lo veo para nada dificil de calcular, simplemente dime la funcion, y te dire la derivada(en asembler). Exitos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: integrales, derivadas en la familia de los 16fxxx
« Respuesta #8 en: 23 de Octubre de 2005, 02:54:00 »
Ya me he puesto ambisioso y estoy por comenzar a desarrollar un algoritmo que haga automaticamente la derivacion e integracion de la funcion que le ingrese, y devuelva tambien los valores(de la tangente en el caso de derivacion y del area en caso de integracion) en un punto dado especificado.
Perdonen mi locura, es que esto de la matematica me apasiona...Sonrisa GiganteSonrisa Gigante

Acepto sugerencias para realizar el programa, basicamente, voy a  trabajar con punto flotante, y con derivaciones(e integraciones)  de + - / * entidades trigonometricas, log, etc, aplicando donde sea necesario la regla de la cadena y demas...
Tambien habria que poder ingresarse parentesis, ya alguna que otra sugerencia suya. Exitos.
En cuanto avance o lo complete, lo pego.
Seria lindo tambien aplicar los principios de limite y continuidad, ya veremos que sale .Navidad
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado cesarrico

  • PIC10
  • *
  • Mensajes: 23
RE: integrales, derivadas en la familia de los 16fxxx
« Respuesta #9 en: 23 de Octubre de 2005, 13:27:00 »
muchas veces la mejor opcion es crear una tabla con los valores previamente calculados, te ahorra muchos dolores de cabeza Sonrisa Gigante

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: integrales, derivadas en la familia de los 16fxxx
« Respuesta #10 en: 24 de Octubre de 2005, 00:52:00 »
No sólo ahorra dolores de cabeza. También ahorra muchos ciclos de reloj.

Según la precisión que se necesite y la cantidad de memoria disponible del micro, es una opción muy a tener en cuenta.

Desconectado kuauhtemok

  • PIC16
  • ***
  • Mensajes: 116
RE: integrales, derivadas en la familia de los 16fxxx
« Respuesta #11 en: 24 de Octubre de 2005, 11:43:00 »

Coincido con ustedes....

ARRIBA LAS TABLAS !!!! RebotadoRebotado

Son un metodo muy practico... RollEyes
La felicidad no es mas q la ausencia momentanea del dolor