Autor Tema: Exactitud de Rutina  (Leído 2803 veces)

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

AABHGA

  • Visitante
Exactitud de Rutina
« en: 26 de Septiembre de 2006, 11:53:12 »
Hola a todos, tengo una pequeña pregunta, usando un OSC de 4Mhz y aplicando la siguiente rutina en 2 PICS diferentes, por ej un 16F877A y un 16F628 que son de diferente velocidad:

Código: [Seleccionar]
DEFINE OSC 4
CICLO:
IF PORTA.0 = 1 THEN S1 = S1 + 1
IF PORTA.1 = 1 THEN S2 = S2 + 1
PAUSE 1
GOTO CICLO

y haciendo que la duración de 1 en el PORTA.0 sea igual en ambos casos (osea con diferentes pics) ¿obtendré exactamente los mismos valores? si no obtengo los mismos, ¿cuanta puede llegar a ser la variacion?

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Exactitud de Rutina
« Respuesta #1 en: 26 de Septiembre de 2006, 13:35:30 »
Hola.

Mira, no entiendo muy bien tu pregunta  :? pero, lo que entiendo (o quiero entender  :D) es que preguntas que si con µicros diferentes pero misma frecuencia de cristal será diferente el tiempo de ejecución.

No será diferente, ya que lo que hace que cada instrucción se ejecute en determinado tiempo es la fórmula de 4/fosc.

Si tu µicro (12F629, 16F628, 16F877A, 18F452, etc.) tiene un cristal de 4 megas, trabajará a 1 µicrosegundo, si es de 8 trabajará a 0.5 µicrosegundos, y asi sucesivamente.

Espero te sirva.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

AABHGA

  • Visitante
Re: Exactitud de Rutina
« Respuesta #2 en: 26 de Septiembre de 2006, 13:59:02 »
no, me entendiste por donde no era, me refería en la velocidad de hacer las operaciones, es decir mira el código y omite el comando PAUSE, a eso es lo que me refiero, si obtengo los mismos resultados o van a haber variaciones por la velocidad del micro.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Exactitud de Rutina
« Respuesta #3 en: 26 de Septiembre de 2006, 14:10:02 »
Pues creo que a eso se refiere Mario a la velocidad en que se ejecutan las instrucciones, no el Pause y yo la verdad sigo sin entender. Si lo que quieres saber es la velocidad de ejecucion de cada instruccion mario ya te dio la respuesta si no quieres eso pues trata de explicarte algo mejor.

Claro esta que cualquier instruccion en basic se compone de varias intrucciones en asm asi que podria variar
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Exactitud de Rutina
« Respuesta #4 en: 26 de Septiembre de 2006, 15:46:10 »
mmmmmmmmmmmmmmmmmmmm.............................  :?

No debería.

El µicro es capaz de detectar si en una terminal está presente un estado.

Si tienes a la mano un generador de funciones o un timer o tu mismo produce una salida con el µicro para que te sirva de entrada y verás que no debe haber problemas con lo que respecta a la adquisición de información.

Sin embargo (y es harina de otro costal), si durante el tiempo de la pausa surge algún cambio, este no será detectado por las terminales.

Claro que también, si usas un de 4 megas, si la señal es menor a 1 microsegundo o mayor a 1 Mega Hertz no se podrá hacer. Esto es en teoría, si te vas a los manuales tengo entendido que establece en lo correspondiente a características eléctricas, la respuesta de los puertos con respecto a la adquisición y transferencia de información.

Pero no, no debería variar.  8)
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

AABHGA

  • Visitante
Re: Exactitud de Rutina
« Respuesta #5 en: 26 de Septiembre de 2006, 18:08:39 »
Umm, entonces no importa si la velocidad del micro es de 4Mhz o 20Mhz, pensé que podría variar basandome en el hecho de hacer una rutina así en 2 pc diferentes, de diferentes velocidades x ej hacerla en un pentium II 300 y en un Athlon XP 2200 los resultados si son diferentes, ya que realiza las operaciones el 2do mas rápido que el primero.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Exactitud de Rutina
« Respuesta #6 en: 26 de Septiembre de 2006, 19:35:16 »
Usando esos 2 micros, la velocidad del programa si usas un oscilador de 4MHZ en ambos deberia ser practicamente igual.
Tengamos en cuenta tambien, que habria que ver el codigo ASM que genera el compilador para cada micro.
Suponiendo que el codigo ASM es identico para ambos micros:
Si estas conectando esto a una PC con un programa que envia los valores, y lo probas en dos PC distintas, te aseguro que ninguna PC es igual a otra, ya partiendo de cosas tan detallistas como la cantidad de particulas de polvo dentro del microprocesador a la hora de su fabricacion, como las cargas de tareas en ambas, etc.
Entonces, si tu sistema funciona de la siguiente manera:
PC envia DATO. Microcontrolador responde, PC envia otro dato, Microcontrolador responde...
seguro vas a notar variaciones en la velocidad de procesado, aunque realmente a la diferencia significativa la hace el cambio de PC, y no el uso de un 16F877A o un 16F628 funcionando ambos a 4Mhz.
Saludos.
"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.

AABHGA

  • Visitante
Re: Exactitud de Rutina
« Respuesta #7 en: 26 de Septiembre de 2006, 21:18:32 »
Ok bruno, thx por la explicación, aunque te extendiste mas de lo que me refería pero bue jajajaja. gracias de nuevo.

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Exactitud de Rutina
« Respuesta #8 en: 27 de Septiembre de 2006, 02:46:37 »
Para un 877A

DEFINE OSC 4
S1     var byte
S2     var byte
CICLO:
IF PORTA.0 = 1 THEN S1 = S1 + 1
IF PORTA.1 = 1 THEN S2 = S2 + 1
PAUSE 1
GOTO CICLO

57 palabras utilizadas.



Para un 628

DEFINE OSC 4
S1     var byte
S2     var byte
CICLO:
IF PORTA.0 = 1 THEN S1 = S1 + 1
IF PORTA.1 = 1 THEN S2 = S2 + 1
PAUSE 1
GOTO CICLO

51 palabras.


El ensamblador no es igual para ambos.

El 16F628 utiliza el Status y el 16F877A usa el PCLATH o algo asi.

Interesante, nunca había hecho el experimento.


De todas maneras, no creo que "tarde más" porque se encierra en un ciclo.


Lo anterior usando PBP 2.45A y MicroCode Studio Plus 2.2.1.1
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee


 

anything