Autor Tema: INTERRUPCIONES REALES EN PLUS  (Leído 9865 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #15 en: 10 de Octubre de 2004, 22:42:00 »
Pana khasistos, te filtre un poco el programa de Les, asi puedes entenderlo claramente,

     DEVICE=16F628
     CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
     DECLARE LCD_DTPIN PORTA.0
     DECLARE LCD_ENPIN PORTB.3
     DECLARE LCD_RSPIN PORTA.4
     ALL_DIGITAL=TRUE  
     PORTB_PULLUPS=ON                              
      DIM FUDGE_FACTOR   AS 2
      Dim TMR1 As TMR1L.WORD                                    
      Dim TMR0_POSTCOUNT1 As WORD                                
      Dim CONTEO   As WORD                                
      Dim BANDERA      As Bit                                  
      Dim RESULTADO  As WORD                                
      DIM TMR0_RELOAD_VAL AS ((255 + FUDGE_FACTOR ) -(250 ))"XTAL* 62.5
   
      ON_INTERRUPT INTERRUPCION                                
      GoTo INICIO                                    
 
INTERRUPCION:
    TMR0 = TMR0 + TMR0_RELOAD_VAL                          
    DEC TMR0_POSTCOUNT1
    If TMR0_POSTCOUNT1 = 0 Then
        TMR0_POSTCOUNT1 = 500                  "
             T1CON.0 = 0                              
             CONTEO = TMR1                              
             Clear TMR1                                      
             T1CON.0 = 1
             BANDERA = 1                                  
             INC PORTA.0
    End If
    INTCON.2  = 0                                                
    CONTEXT RESTORE                                            

INICIO:
    TMR0_POSTCOUNT1 = 500                      
    OPTION_REG.0  = 0                            
    OPTION_REG.1 = 0
    OPTION_REG.2 = 0
    OPTION_REG.5 = 0                                                    
    OPTION_REG.3 = 0                                                    
    INTCON.2  = 0                                                  
    T1CON = %00000110
    T1CON.0 = 1                                          
    TMR0 = TMR0_RELOAD_VAL                                      
    INTCON.5  = 1                                                
    BANDERA = 0                                          
    OUTPUT PORTA
    INTCON.7  = 1                                        

Loop:
    If BANDERA = 1 Then
        RESULTADO = CONTEO * 4                      
        PRINT AT 1,1,"FREC = ",DEC6 RESULTADO ,"Hz"          
        BANDERA = 0                                      
        SET PORTA.0
    End If
    GOTO LOOP
    Stop

Salu2 pana

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #16 en: 11 de Octubre de 2004, 03:59:00 »
Bueno, entre pana y pana he aprendido un montón.

Buen hilo este señores (¿o quizas debería decir panas?)

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #17 en: 11 de Octubre de 2004, 09:58:00 »
Hola:

Pana:siempre unos kilometros delante........era lo que estaba haciendo pero siempre llego tarde....Hay dos cosas que me quitan el sueño

El fudge factor ,es un valor de precarga numerica al TRM para adecuar el tiempo de acuerdo al Xtal que usemos pero    
DIM TMR0_RELOAD_VAL AS ((255 + FUDGE_FACTOR ) -(250 ))"XTAL* 62.5 ............XTAL*62.5 en caso de 20  =1250??me fui a los caños......aclarame un poco esto del fudge factor por favor ....

Aqui estan sacando la interrupcion por PORTA.0 para que? solo porque sabian que la estoy usando para complicarme cuando tenga los AD funcionando ........gracias Lester

NOCTURNO:
Lo de señores suena pesado muy formal creo que a esta altura del partido somos mas que nada AMIGOS  y que por razones idiomaticas el AMIGO lager nos llama PANAS ::
Eso si te aconsejo que nunca postees la expresion QUERIDO AMIGO a quien use la expresion PANA ,si no preguntale al AMIGO lager como se interpreta por alla  JA JA  JA



Le mado un abrazo a ambos
K

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #18 en: 11 de Octubre de 2004, 12:08:00 »
Pana Khasistos, el set porta. debe ser de antemano un error de ellos o lo usaban en su proyecto para otra cosa borralo por favor, el factor fuga mas o menos sabes que es una variable para ajustar de acuerdo a tu reloj el grado de error, acuerdate que cuando escribes en el tmr0 o tmr1 en este caso lo haces se pierden 2 ciclos de reloj antes de que vuelva a operar(ya que cada incremento se lleva 1 ciclo de reloj),
Veo mas detalles en el ejemplo de lester:
segun el programa original el prreescaler esta para 1:1 no puede ser si PSA esta a cero esto nos da un preescaler 1:2 segun el ds, si tu  pones a 1 el PSA te va a dar exactamente la mitad de la frecuencia.
Dejame seguirlo revizando,
Pana Nocturno66 Gracias por el apoyo, solo tratamos de recavar informacion util, asi que si hay errores, se iran corrigiendo al avanzar el aprendizaje


analizando el proceso:
inicia el tmr0=7(255-7=248 no cuenta realmente hasta 255)
cuando el tmr0 llega a 255 se interrumpe:
tmr0=TMR0+7 (lo que tenga el tmr0 puedes ser 4, 5,6 ,7 etc nuevamente mas 7)
la variable postcont de tmr0 es decrementada en 1(499)
y reviza si llego a cero, como no llego limpia la bandera de int ,restaura fsry status y vuelve,pero retorna a int por que esta tmr0=255 y asi succesivamente hasta que decremente la variable postcont del tmr0 a 0
interrupcion es a 1:2 y NO como dice Les a 1:1, Que pasa cuando entra a la interrupcion? solo vuelve a cargar la variable de conteo hasta 500 apaga el tmr1 lo guarda en la variable con la que se imprime lo enciende y activa la bandera para impresion.
Aunque el verdadero orden deberia ser este para optimizar tiempo:
T1CON.0 = 0    
TMR0_POSTCOUNT1 = 500                          
CONTEO = TMR1                              
Clear TMR1                                              
BANDERA = 1  
T1CON.0 = 1  
No es mucho la diferencia podria ser 1 cuando mucho 2 pulsos que se escapen

2° analisis:
Como pueden ver tiene como que una formula y etc,etc,etc. todo el proceso lo podemos reducir en SETEAR un temporizador omo se  debe, ya que las indicaciones del programa original, casi no tienen nada que ver con lo que hace(me refiero alos puntos importantes, todos sabemos para que son los registros y por que se ponen en cero o en 1)
Un ejemplo antes de continuar:
Si queremos que una interrupcion TMR0 de 8 bits(255 max) se ejecute en determinado tiempo, seguimos los pasos clasicos
cada cuanto tiempo? ... digamos por ejemplo 50 ms
con esta info. sabemos que 50 ms son 50000us, y eso pa que?
bueno el micro trabaja en us no en m y algun dia en nsegundos :P.
bueno pensemos por ahora(solo por ahora) que queremos usar un pic con reloj externo a 4Mhz(despues de toda la explicacion lo podran hacer a cualquier reloj)
ok!! esto quiere decir que cada instruccion nos tomara 1us (4Mhz/4= ciclo de reloj o instruccion) entendido esto, solo nos queda una cosa por hacer, ya que vamos a usar el TMR0 como TEMPORIZADOR, entonces debemos ajustar los preescalers del TMR0 , que es un preescaler(podriamos decir sencilamente un divisor de frecuencia de cada ciclo de reloj)
ahora si de lleno: Si queremos que nuestro TMR0 pare cada 50 ms(aprox) = 50000Us y ponemos o mejor dicho configuramos el preescaler a 1:256, esto quiere decir que 50000/256 = aprox 195.3125 <---- este es seguible en el TMR0 pero no es el que queremos, nosotros necesitamos el valor contraparte, es decir, como usamos TMR0 entonces solo  lee hasta 255, luego entonces la contraparte es:
255-195.3125 =59.6875 <--- un valor tambien seguible via tMr0, lo podemos redondear a 60
Este valor es con el que debe de empezar nuestro TMR0 con prescaler 1:256 para que pare APROX a 50 ms , (espero que hayan entendido ahora el como y por que se configura el preescaler)
Entendido Este ejemplo creo que lo que explicare acontinuacion  ya no es necesario, pero lo hare:

Como ven en el programa, el TMR0 empieza en 7 <-- y esto quien les dijo o ke??? ahora ya lo saben.
Si el programa va a parar 4 veces por segundo(cada 250ms osease cada 250000Us) entonces como ajustar el pree y el valor de inicio de mi TMR0???
250000/2=125000 <-------- ta! esto esta muy grande para seguirlo en mi pequeño Tmr0 de solo 8 bits(255) pero si hacemos un pequeño artificio no sera tanto:
lo podemos dividir por un numero que nos de unvalor razonable en el TMR0 no? CLARO!! , en el caso del programa si dividimos 125000/500=250 <----- perfecto es exacto y seguible por el tmr0, ahh deberas que necesito su contra parte: 255-250=5
Ahora sabemos que debe empezar en 5, pero hay un detalle que no habiamos percibido, cada ves que ESCRIBIMOS en el TMR(o cualquier TMR por favor lean el DS) este proceso inhibe dos ciclos de instruccion , excatamente 2 valores que no se contaran(esto puede crearnos un error grande) entonces tenemos que agregarlo de cajon en la escritura del TMR --->Tmr0=5+2=7
Ahora si tenemos el valor justo que arregla(en un 50%) el rror que se vaya generando como el problema de contar , ahora si nuestro TMR0 esperara 250ms e imprimira el valor guardado en conteo.
como ven la interrupcion sucedera 500 veces antes de que imprima un valor
Espero les sirva de algo la info, aunque me siguen viniendo muchas dudas aun.

Salu2 panas!

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #19 en: 11 de Octubre de 2004, 16:16:00 »
Estan usando el Interno no?, esta en cero. deja y cheko..
aqui ta:

INICIO:
TMR0_POSTCOUNT1 = 500
OPTION_REG.0 = 0
OPTION_REG.1 = 0
OPTION_REG.2 = 0
OPTION_REG.5 = 0 <--------- Reloj interno, si estuviera seteado seria como contador o reloj externo
OPTION_REG.3 = 0

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #20 en: 11 de Octubre de 2004, 16:36:00 »
Hola:

Aqui esta mas o menos digerido para entendero mejor
sigo insistiendo poque no poner 7 directamente ,aunque la duda es si en la formula del fudge no te comiste un parentesis he interviene la expresion XTAL *62.5 cheka eso por favor

Saludos
K

DEVICE=16F628
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
DECLARE LCD_DTPIN PORTA.0
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTA.4
ALL_DIGITAL=TRUE
PORTB_PULLUPS=ON
DIM FUDGE_FACTOR AS 2
Dim TMR1 As TMR1L.WORD
Dim TMR0_POSTCOUNT1 As WORD
Dim CONTEO As WORD
Dim BANDERA As Bit
Dim RESULTADO As WORD
DIM TMR0_RELOAD_VAL AS ((255 + FUDGE_FACTOR ) -(250 ))"XTAL* 62.5

ON_INTERRUPT INTERRUPCION
GoTo INICIO

INTERRUPCION:
TMR0 = TMR0 + TMR0_RELOAD_VAL                   "cargo 7 para compensar el tiempo
DEC TMR0_POSTCOUNT1                             "decremento 500 hacia 0
If TMR0_POSTCOUNT1 = 0 Then                     "Si es 0 vale 500
TMR0_POSTCOUNT1 = 500                           "vuelvo a ponerla en 500
T1CON.0 = 0                                     "paro timer  tmr1
CONTEO = TMR1                                   "obtengo el valor de TMR1
Clear TMR1                                      "pongo TMR1 a 0
T1CON.0 = 1                                     "habilito TMR1
BANDERA = 1                                     "bandera que indica q se cumplio la int.para loop
INC PORTA.0
End If
INTCON.2 = 0                                     "apago la interrupcion del TRM0
CONTEXT RESTORE                                  "restauro las variables

INICIO:
TMR0_POSTCOUNT1 = 500                            "cargo postcout con 500 ya lo hice en la interrup..
OPTION_REG.0 = 0                                 "prescaler 1:2 asignado al TMR0
OPTION_REG.1 = 0                                
OPTION_REG.2 = 0
OPTION_REG.5 = 0                                  "entrada del conteo por osc interno
OPTION_REG.3 = 0                                  "prescaler asigando a TRM0
INTCON.2 = 0                                      "apago la interrupcion del TRM0
T1CON = %00000110                                 "paro TRM1,entro pulsos en rb6,sin sincronia
T1CON.0 = 1                                       "enciendo TMR1
TMR0 = TMR0_RELOAD_VAL                            "TMR0 con el numero de correcion 7
INTCON.5 = 1                                      "habilito la interrupcion del TMR0
BANDERA = 0                                       "indicador de la interrupcion a 0
OUTPUT PORTA
INTCON.7 = 1                                      "habilito las interrupciones grales

Loop:
If BANDERA = 1 Then                               "me indica que se produjo la interrupcion
RESULTADO = CONTEO * 4                            "por 4 pues tome muestras de 250ms *4=1seg
PRINT AT 1,1,"FREC = ",DEC6 RESULTADO ,"Hz"
BANDERA = 0
SET PORTA.0
End If
GOTO LOOP
Stop

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #21 en: 11 de Octubre de 2004, 18:17:00 »
En realidad yo uso este pana es identico al que hiciste pero con el 7, para que tanta variable!!, jajaja y funciona igualito:
     DEVICE=16F628
     CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
     DECLARE LCD_DTPIN PORTA.0
     DECLARE LCD_ENPIN PORTB.3
     DECLARE LCD_RSPIN PORTA.4
     ALL_DIGITAL=TRUE  
     PORTB_PULLUPS=ON                              
      Dim TMR1 As TMR1L.WORD                                    
      Dim TMR0_POSTCOUNT1 As WORD                                
      Dim CONTEO   As WORD                                
      Dim BANDERA      As Bit                                  
      Dim RESULTADO  As WORD                              
      ON_INTERRUPT INTERRUPCION                                
      GoTo INICIO                                    
 
INTERRUPCION:
    TMR0 = TMR0 + 7                    
    DEC TMR0_POSTCOUNT1
    If TMR0_POSTCOUNT1 = 0 Then        
             T1CON.0 = 0    
             TMR0_POSTCOUNT1 = 500                          
             CONTEO = TMR1                              
             Clear TMR1                                      
             BANDERA = 1  
              T1CON.0 = 1                                
    End If
    INTCON.2  = 0                                                
    CONTEXT RESTORE                                            

INICIO:
    TMR0_POSTCOUNT1 = 500                      
    OPTION_REG.0  = 0                          
    OPTION_REG.1 = 0
    OPTION_REG.2 = 0
    OPTION_REG.5 = 0                                                    
    OPTION_REG.3 = 0                                                    
    INTCON.2  = 0                                                  
    T1CON = %00000110
    T1CON.0 = 1                                          
    TMR0 =7                                  
    INTCON.5  = 1                                                
    BANDERA = 0                                          
    INTCON.7  = 1                                        

Loop:
    If BANDERA = 1 Then
        RESULTADO = CONTEO * 4                      
        PRINT AT 1,1,"FREC = ",DEC6 RESULTADO ,"Hz"          
        BANDERA = 0                                      
    End If
    GOTO LOOP
    Stop

PD:Quiero suponer que dejaron todo con variables para que se entendiera mejor,pero se me hace mas facil VER los REGISTROS directamente en lugar de tanto flase,alias,formulas,etc..
De acuero con la formula:
TMR0_RELOAD_VAL = ((255 + 2 ) -(xtal * 62.5 )) , donde es facil la explicacion,
(VALOR MAXIMO DE TMR + DELAY)-(XTAL* NUMERO MULT POR XTAL DE LIMITE DE TMR ENCONTRADO)
Pero incisto que se me hace mas facil encontrar el valor siguiendo el proceso que siempre se ha seguido para determinar las temporizaciones(proceso que yo no invente por supuesto, y que siempre se a usado).
Tambien es logico por que usaron el preescaler a 1:2 ya que con los demas se tiene valores aproximados(decimales) y seria mayor el error.
Un salu2 pana

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #22 en: 11 de Octubre de 2004, 18:28:00 »
Hola:

Chekeaste eso de la formula ,pues si tengo xtal de 20 no me da... el numero de 4 int por seg ...ni por broma, si la tienes a mano esa que venia en un clock por favor posteala asi no andamos sacando calculos.

Saludos
K

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #23 en: 11 de Octubre de 2004, 18:33:00 »
La formula no la uso pana, calculo como explique anteriormente, si usas un xtal de 20mhz, tendras  .2 us por instruccion, hay que modificar temporizacion y demas!! ya que 1us(7)= 7 y (.2 )7= 1.4 <------ no se puede tomar partido solo enteros, asi que redondeamos y tendremos una APROXIMACION con error de .4!!!!. tienes que calcular un preescaler  que de mejores resultados y de entero la variable a corregir!
El que mas se acercaria modificando a xtal de 20 seria cambiando los 500 por 497 y el error de fuga por 1 (con un error de .098, el cual e va de 30 a 40 hz de Error, DEMASIADO error!)
La del Reloj funciona de otra forma, es otro codigo funciona con un limite a 76, es otra estructura eso si con menos error.
Salu2 pana

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #24 en: 11 de Octubre de 2004, 19:17:00 »
Hola

entendido dicho en otras palabras parto de una entrada de 5 mhz y debo salir con 4 hZ buscare los valores adecuados para lograr el fin aunque es mucha division pensare.........

Saludos
K

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #25 en: 11 de Octubre de 2004, 19:37:00 »
Ya te lo calcule pana, usa 491 como artificio y un tmr de 2, acontinuacion te lo explico:

1,000,000/4=250,000/2=125,000/491=255-254.58xxx=0.4174xxx POR 0.2 =0.08xxx + 2 <-- de las instrucciones detenidas, = 2.08xxx, quitamos el decimal y = 2
con tu error de 0.08xxx es CASI igual al anterior pero ya se desplazo un poquito mas, un desplazamiento de 8 hz aprox.
Un abrazo

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #26 en: 11 de Octubre de 2004, 21:24:00 »
Hola,

a ver si me sigues ,el TMR0 recibe 4/fosc = 1mhz con xtal de 4 OK?
con prescaler de 1:2 500Khz periodo 0.000002 seg x 256 saca interrupcion cada 0.000512 seg
repetimos ese desborde 500 veces =0.256 seg     3.9 HZ


Ahora con 20 mhz de Xtal

Tmr0 recibe 4/fosc= 5MHz
prescaler a 2 =2.5mhz periodo 0.0000004 seg
interrupcion cada 0.0001024 seg
si repetimos ese desbode 2441 veces tenemos 0.2499 seg
Como TMR0_POSTCOUNT1 es un word 16 bits creo que es posible y encima mas exacto que el anterior  0.256 contra 0.2499   4Hz

tu veras el fudge factor ,,y si esta teoria es correcta
Si me equivoque fiero prometo borrarlo.....

Abrazo
Khasistos

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #27 en: 11 de Octubre de 2004, 21:46:00 »
<-- asi quede, jajajajja .
Haber pana, 1 ciclo de instruccion= 4 ciclos de reloj y el reloj lo define el cristal ok? si el cristal oscilador es de 4Mhz entonces el ciclo dl reloj sera  1/4= 0.25 microsegundos por lo tanto el ciclo de cada INSTRUCCION sera de 4 por 0.25= 1us!!!!!!
C.I=(1/xtal) x 4
para 20 Mhz
C.I.=(1/20) x 4 = 0.2 us
 Aclarado esto, lo demas se calcula como es habitual:
necesito 4 interrupciones por SEGUNDO= cada 250ms esto se puede modificar.
Entonces realmente necesito una interrupcion cada 250,000  .
Esto entre el preescaler 1:2.
250,000/2=125,000 <-- esto esta muy por encima de lo que puede CONTAR mi TMR0, manejamos el artificio de dividirlo por (en este caso ya calculado) 491 = 254.58xxxxxx necesitamos la contraparte:
255- 254.58xxxxx=0.41xxxxx  es mi interrupcion, perom ojo este es para un C.i = 1 us no para 0.2 us por lo tanto :
TMR0= (0.41xxxx *  0.2) + el retardo por RE escribir en la interrupcion el Tmr(en este caso 2 ciclos por instrucion ojo este valor ya viene alterado por el tiempo que ocupa en cumplirlo)
TMR0=2.0853xxxx <--- CASI 2 el error es evidente pero a diferencia del que se supone que tampoco tiene error es minimo.
entonces TMR0=2 y el artificio con IF =491.

Es esto a lo que te referias pana?
Si no explicamelo ami por favor.
Un abrazo pana

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #28 en: 11 de Octubre de 2004, 22:10:00 »
Hola Pana

son formas diferentes de ver lo mismo..

Mira ya sabes lo que recibe el TMR0 en su entrada si es 4 mhz de XTAL recibe 1 mhz pues es 4/fosc eso no invente yo lo dice la DS
y con 20  de Xtal recibe 5mhz todo esto sin considerar los prescalers

Ahora conectamos el prescaler 1:2 es decir lo que va a llegar al TMR0 es la mitad de ambos con Xtal de 4 era 1mhz ahora 500Khz
en 20 seran 2.5 MHZ

El periodo de esa frecuencia 1/F  es de 0.000002 seg para 500khz es decir un ciclo de lo que entra al TMR0 dura 0.000002seg pero tengo que "Llenar" 256 casillas antes que desborde por ende 0.000002*256 0.000512seg y se desborda.
Como utilizamos la "Trampa" de hacerlo desbordar 500 veces sumamos esos 500 tiempos y nos da 0.256 seg   Pasamos el cuarto de seg 0.25  por eso digo que la frecuencia que "debe" salir de ese desbode es de 4 hz si fuese exacta pero no lo es   frec = 1/periodo      1/0.256       3.9hz

haciendo la misma deduccion para Xtal de 20 solo necesitamos que realize 2441 desbordes .Que deduzco que es posible dado que definimos a TMR0_POSTCOUNT1 como word.Y encima nos da justito 0.2499 seg.

Piensalo, no tengo la verdad ,puedo errarle pero creo que es asi , el fudge factor corre por cuenta tuya ahi te dejo las matematicas para calcular cuantos ciclos de instruccion se pierden.....

Abrazo
K

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: INTERRUPCIONES REALES EN PLUS
« Respuesta #29 en: 12 de Octubre de 2004, 02:35:00 »
Pana es lo mismo pero en tu proceso esta muy bien explicado  eso es PERFECTO , asi se puede apreciar claramente el por que del pequeño error, en estas funciones que pusiste como  determinas el inicio del TMr0? seria importante para tener los dos metodos. los pasos que di son los usados para cualquier calculo de temporizacion, no los adapte a lo que hacemos, la perdida de 2 ciclos tambien y se tiene que agregar ya que escribimos en el tmr0 al momento de la interrupcion si no ponemos este 2 que no es mas que el conteo de 2 ciclos, estariamos agrandando el error, por eso hago enfasis en el proceso que explique,. Tu proceso esta mas que EXCELENTE pana .

Un abrazo pana


 

anything