Hacer una división con ASM del PIC 16F84A

Chico3001 dijo:
Meta dijo:
Chico3001 dijo:
Desde cuando los programo? tengo 2 años usandolos...

Se serio. Si fueran tan buenos y fácil como dices, los AVR de Atmel arrasaría a los PIC de Microchip en un plis plas, incluido documentación por todas partes.

Tus palabras dicen una cosa, los hecho dicen otra. ¿Qué creer, las mil cosas que nos dicen o una cosa que se muestra?

Saludos.

Haber... yo nunca he dicho que los AVR vendan mas que los Microchip...

Ni yo ni nadie hemos dicho eso tampoco.

pero una cosa es cierta.. los Microchip se venden mas por el excelente trabajo que hace Microchip en las escuelas, va a todas las escuelas y regala kits de demostracion, entrena profesores, baja sus precios para estudiantes, etc etc etc..., que es lo que sucede? que cuando el alumno sale de la escuela lo que quiere usar es Microchip por que es lo que conocio toda su carrera de estudiante, pero NO POR QUE SEA LO MEJOR.....

Tampoco por que sea lo mejor...


definitivamente Microchip tiene problemas y graves en sus micros... su emulacion es muy deficiente, la paginacion te afecta mucho en los programas largos, los micros consumen demasiada energia y dividen internamente los relojes, son lentos para arrancar y salir del sleep, etc etc...

Si tuviera problemas graves no estaría donde estaría, diseñaría otra arquitectura como los dsPIC que no son nada parecida a las normales y encima es potente o al menos eso dicen mucho por ahí.

El cambio de mercados en los micros se esta dando y de manera muy fuerte con Atmel y Texas, solo que no es un cambio que se pueda lograr de la noche a la mañana, este cambio va a tardar unos 10 años y tal vez nosotros solo veamos el final. Pero por el momento si es definitivo que Microchip es el #1 en micros de 8 bits.. y eso aun esta debatido por que si incluyes en las estadisticas los mercados de micros automotrices de 8 bits los claros ganadores son Renesas y Freescale

He notado que los AVR están cada vez más conocido, pero no tanto como los Motorola que eso si los oigo más al menos en las Universidades donde vivo. Cuando Microchip vea que Atmel suba demasiado a su posición o antes de eso, cambiaría muchas cosas, no son idiotas, las empresas tanto una como otras son muy "proactivas", pero hay un pero, como nadie sabe la vuelta que da la vida, quizás algún día Atmel se quede como queda Microchip hoy en día que puede ocurrir.

¿Te animas hacer una división en ASM con AVR?
 
En realidad el algoritmo de la división que subí, estaba pensado en punto fijo.
Pero para pasarlo a flotante yo pensaría en agregar un registro que maneje la posición del
punto.

Ya de por sí las operaciones de multiplicación, aún en P. Fijo, para que tenga cierto sentido
deben usar dos registros. En P. Flotante los tres dígitos decimales que permiten los 8 bits,
en mi humilde opinión no alcanzan ni para empezar. :cry:

Por lo tanto, hablando medio en el aire y sin buscar nada en la Wikipdia, como suelo hacer
normalmente, yo lo pensaría como una operación producto/división con la mantisa, siempre menor que 1 (16 bits) usando mi algoritmo anterior y otra operación suma/resta con un
registro para el exponente (8 bits) que me diría dónde va la coma.
Es medio complicado, pero creo que es como trabajan las bibliotecas "compradas".

("compradas" ... ? ! ) :LOL:
 
Alejandro Sherar dijo:
En realidad el algoritmo de la división que subí, estaba pensado en punto fijo.
Pero para pasarlo a flotante yo pensaría en agregar un registro que maneje la posición del
punto.

Ya de por sí las operaciones de multiplicación, aún en P. Fijo, para que tenga cierto sentido
deben usar dos registros. En P. Flotante los tres dígitos decimales que permiten los 8 bits,
en mi humilde opinión no alcanzan ni para empezar. :cry:

¿Y un PIC32 de 32 bits alcanzan algo?

Por lo tanto, hablando medio en el aire y sin buscar nada en la Wikipdia, como suelo hacer
normalmente, yo lo pensaría como una operación producto/división con la mantisa, siempre menor que 1 (16 bits) usando mi algoritmo anterior y otra operación suma/resta con un
registro para el exponente (8 bits) que me diría dónde va la coma.
Es medio complicado, pero creo que es como trabajan las bibliotecas "compradas".

Complicado, pero no imposible.
 
Meta dijo:
¿Y un PIC32 de 32 bits alcanzan algo?
Por supuéstrico !

Ya había pensado pasarme a 32 bits pero no por lo de la división. La velocidad del reloj (80MHz) me parece más interesante todavía. Para la etapa de captura y almacenamiento de datos analógicos.

Lo que me frena un poco es que teniendo el trabajo avanzado en un 85% de repente surge una "característica del micro" que me paraliza todo el proyecto.
A veces es por no tener claro uno el tema (eso se arregla estudiando), pero otras veces no se sabe ni dónde está el problema. Con las herramientas automatizadas, uno NO VE lo que hace realmente. En parte por eso prefiero Assembler a C (la otra razón es que ya tengo todo en assembler, Grrrrr!).

Ojo que no lo desmerezco: C simplifica el trabajo para programas largos o complejos. Pero me aleja del manejo interno, y no puedo seguir el proceso paso a paso para ver dónde está el error. Es el problema de que haya tantos pasos intermedios. C también genera su propio assembler, pero ...
Uno dice que "sabe" C pero en realidad "cree" en C.

Yo tengo una frase para distender en estas ocasiones: "Sólo sé ce, no sé más más".

----
Complicado, pero no imposible.
No, no le tengo miedo a lo difícil. Si supieras las rengas con las que he bailado.
Y tampoco le temo a lo "imposible". No porque "me las tire de guacho pistola", sino porque la mayoría de las veces lo que se dice "imposible" es apenas un poquito más difícil de lo que se anima la mayoría. Primero te dicen loco, y que no vas a poder.
Esa etapa es hermosa, porque vos sabés el futuro y "ellos" tienen miedo a que otro triunfe donde no se animaron.
Eso permite aclarar los tantos:
Luego de tu éxito, los nobles te respetan y los miserables te odian.
Lo mejor de todo es que fracasando pasa lo mismo. Je, Je!

Y me voy a seguir "peleando" con la página del pic.
También ayudaría si pudiera ampliar un poco el stack.
Ahora voy a leerme la AN527 de Microchip.

Un saludo !

----
 
Mas bien me imagino que no todos tienen necesidad de hacer operaciones matematicas con micros.. estimaria que el 60 al 80% de los usos con los micros es llevar el control de tiempos y secuencias y el restante es aplicar operaciones matematicas

Ademas son rutinas de dominio publico... las notas de aplicacion de ese tipo las bajas de los sitios de los fabricantes, copias el codigo y lo usas.. (Aplicando unas pruebas antes para revisar que todo ande bien) asi que no mucha gente se preocupa por debatirlas

En lo personal me tope con esa nota hasta que tuve necesidad de usarla.... en mi vida de estudiante nunca me toco hacer divisiones de 32 bits con signo... y convertir los resultados en BCD para poder mostrarlos en displays y mucho menos me imagine que algun dia iria a aplicar mx+b para hacer correcciones en sensores...
 
Chico3001 dijo:
Ademas son rutinas de dominio publico... las notas de aplicacion de ese tipo las bajas de los sitios de los fabricantes, copias el codigo y lo usas.. (Aplicando unas pruebas antes para revisar que todo ande bien) asi que no mucha gente se preocupa por debatirlas

¿En qué parte los encuentras de los fabricantes precisamente ese el de divisiones y en asm?

Gracias.
 
Casi todos tienen una nota de aplicacion llamada rutinas matematicas... donde exponen sumas, restas, multiplicaciones, divisiones, conversion BCD a HEX y viceversa.... comienza a buscar en notas de aplicacion o en foros dedicados de programacion desafortunadamente las del fabricante casi siempre vienen en ingles...

En Microchip entra a App Notes y Source Code, despues click en Algorithm y despues click en Math en la ventanita que aparece debajo, te va a aparecer una lista con todas las notas de aplicacion matematicas para el pic, incluso traen el codigo en assembler o C para que lo descomprimas y lo uses

En atmel es mas complejo.. entras a Microcontrollers > AVR 8 bit RISC > Application Notes > Application Example and Algotirhms

Casi todos son de la misma manera... o busca Math Routines en las busquedas locales de cada fabricante.. o Rutinas Matematicas pic en google.. .
 
Para atmel te recomiendo entres con ensamblador, por que comprendes porque el C, da sorpresas, como dice Chico3001, uno cree en C.

Y me ha pasado lo mismo que Chico3001, luego por algo el proyecto se para cuando uno trabaja con C. Y la cantidad de memoria que debora y traga.

Sobre lo de punto flotante me acuerdo y agradezco al ingeniero que me dio clases. Nos pedía que todo lo hicieramos apegados a los estandares dados por la IEEE hay vienen como deben de hacerse las cosas jajajaja. Lastima que hay que ser miembros.

Y con pic, hay que ser ordenados para programas grandes. Y usar directivas. Por lo de sus paginas, no se porque microchip se decanto por esto.

Sobre lo de atmel, es un muy buen micro, pero todo sirve, por ejemplo extraño las interrupciones del puerto b, para manejar posibles eventos externos. Y mas fregon el freescale para manejar el micro como un procesador de señales algo así no me acuerdo del termino ahorita, ya que tiene 7 interrupciones externas.

Así que digo es bueno conocer de todo porque así sabes que micro mejor utilizar, todos tienes sus pros y sus contras.

Y el atmel ofrece cosas interesantillas.

Te recomendaría que te compraras un programador de atmel, ya que incluye toda la documentación sin necesidad de andar navegando por la red. Yo que estoy en el rancho y no tengo internet ahí me resulta genial. Y aunque es medio apabullante ver cerca de un ciento de instrucciones todas son muy digeribles y muy útiles y la pila "ulala" la manipulas a tu antojo no solo para guardar direcciones de las llamadas. No no no, prueba el atmel. Y te diría que probaras otros micros tambien, todos tienen lo suyo. Y sus aplicaciones.

Por ejemplo en mi lavadora estaba un microcontrolador pic16cxx.
En el clima un micro samsung no me acuerdo del número.
En mi tarjeta de sonido un micro atmel.
sobre todo en equipos de audio e encontrado atmel. aclaro equipos viejitos como del 2001 para atrás.
En equipo de aeronaves americanas de combate hay micros atmel, bueno eso dicen.

A lo que quiero llegar es que lo importante es tu aplicación, ya que ella te dice que necesita y si tienes un repertorio de conocimiento amplio de los micros podras elegir el mejor para tu aplicación no solo por la programación de esta sino por los recursos especificos de cada uno.

Si voy a guardar mi datos importantes, lo guardo en openbsd.
Si quiero programar para multiplataforma utilizo linux.
Si quiero jugar, utilizo mi gamecube, xbox o la compu con windows.
Si quiero tener una agenda utilizo la palm.

Y si te obligan a hacer la tesis en windows ni modo lo haces donde te digan, pero tienes con que responder, no hay trabas solo es cuestion de gustos en algunos casos y en otras lo que mejor conviene.
 
En lo personal uso Freescale (antes Motorola) para cuando necesito usar 16 o 32 bits.. son micros muy buenos para aplicaciones muy grande sobretodo la nueva familia con el nucleo V1 (Flexis), los nucleos V2 y V3 ya son micros ARM bastante grandes pero aun asi faciles de manejar

La familia HC908 es algo compleja de entender al inicio, sobretodo a la hora de hacer la programacion, y la simulacion, pero una vez que le agarras el modo es bastante amigable, sobretodo con programas escritos en C, por que el Codewarrior ya trae muchas rutinas preestablecidas de uso comun (conocidas como Beans) que puedes arastrar y pegar a tu programa y olvidarte de como funciona el resto, asi que "en teoria" puedes hacer un programa con minimos conocimientos tanto del procesador como del lenguaje C
 
Hola:

Revisando libros medio viejos de Microchip (*) encontre la AN611.
Tiene una aplicación completa para hacer un medidor de R y C desde la PC.
El codigo asm tiene implementadas las rutinas básicas para 24 bts (+,-,*,/, complemento a 2)
y adivinen qué ? las ubica con "org 0x0200", que para ese micro es la página 1 (Pic 16C622,
con páginas de 512x14b).
El servicio de interrupciones y el programa principal los ubica en el banco 0.

Estoy recién empezando a verlo, pero el manejo de páginas puede servir de guía con los
bancos de 2k.
Como "regalito" trae el código de un programa en visual basic para recibir los datos.
Para los que nos gusta copiar (adaptarle el micro) y salir andando.

Que cuál es la ventaja de tener el libro ?
Que se puede caer el servidor de internet, que yo sigo trabajando tranquilo ! :cool:

Saludos !

(*) Embedded Control Handbook - Vol. 1 - Microchip - Abril 1997.
 
Atrás
Arriba