Autor Tema: Proteus y Asembler desde cero  (Leído 11692 veces)

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

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
RE: Proteus y Asembler desde cero
« Respuesta #15 en: 10 de Febrero de 2006, 22:42:00 »
5.asm .
Aquí cambio los nop por retardo y prendo y apago RB0. Como se habran dado cuenta elimine el cristal y los dos condensadores, pues me di cuenta que no eran necesarios, basta con definir el clock del pic. Tuve que cambiaro la velocidad del pic a 10 KHz pues con 100Hz se hacia muy lento.  Tambien borre el pulsador y su  resistencia pues no los usaba. Solo dejo la resistencia del reset que debe ser positiva para que el pic funcione normalmente, si se pone a masa resetea el pic.


“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
RE: Proteus y Asembler desde cero
« Respuesta #16 en: 10 de Febrero de 2006, 22:46:00 »
6.asm
Agrego un segundo retardo (retardo1) y tengo que volver a cambiar la velocidad del pic a 1 MHZ, en este caso no pongo una imagen porque es igual a la anterior.

7.asm
Aqui he eliminado las resistencias de los leds y he podido poner ocho leds, he cambiado el clock a 2 MHz y todo el circuito funciona. Primero se prenden todas los leds y luego se apagan, en ambos casos de arriba hacia abajo.




“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
RE: Proteus y Asembler desde cero
« Respuesta #17 en: 10 de Febrero de 2006, 22:54:00 »
8.asm
Ahora al codigo anterior le agregamos para que tambien lo haga de abajo hacia arriba. No pongo imágenes pues son iguales que las anteriores. Ya se va pareciendo en algo al efecto deseado (auto fantastico).

9.asm
Elimino los retardos y cambio la velocidad del CLOCK a 30 Hz, es para ver si funciona sin los retardos. Creo que no hace falta poner el imagen.

10.asm
Aquí prendemos, ponemos retardo y apagamos cada led primero de arriba hacia abajo y luego de abajo hacia arriba y repetimos el ciclo indefinidamente.



Ahora si ya funciona como debe, por si acaso el reloj lo he vuelto a poner a 2 MHZ.

Bueno señores es hora de dormir de nuevo NocheNoche haber si mañana seguimos.


P.D.: Siempre y cuando mi esposa me deje, sino ya saben porque no se pudo! Muchas risasMuchas risas


“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Proteus y Asembler desde cero
« Respuesta #18 en: 10 de Febrero de 2006, 22:55:00 »
Si quieres que se enciendan los diodos, como ya te comenté más arriba pon la masa a las resistencias de los diodos.

Si no quieres dibujar tantas cosas puedes eliminar el regulador, la batería y hasta la resistencia que resetea al PIC ... funciona igual.

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
RE: Proteus y Asembler desde cero
« Respuesta #19 en: 12 de Febrero de 2006, 00:30:00 »
Hola pocher aqui los cambios que hice, en el primer dibujo que es como lo venia haciendo he puesto al costado si es del tipo analogico o digital a cada componente, se me cuelgan D3 y D4, justo con las resistencias analogicas.



Aqui segui tu consejo, cambie conectando las resistencias a masa y ya no se me cuelga D3 pero D4 se sigue colgando, tengo la version 6.7 de Proteus con SP3. Adicionalmente he cargado las librerias que pusieron en el foro.



Haber si nos tiras un salvavidas Vacilando.

Aqui los link por si no cargan.
http://img45.imageshack.us/img45/3725/kit0rk.jpg
http://img152.imageshack.us/img152/6773/kita4gs.jpg
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Proteus y Asembler desde cero
« Respuesta #20 en: 12 de Febrero de 2006, 05:22:00 »
He estado provando el ejercicio 10 con tu .hex y poniendo resistencias a todos los diodos y va bien independientemente si eliges digital o analog tanto para diodos como para resistencias.

Te envio la simulación y el .hex: http://miarroba.com/foros/ver.php?foroid=348538&temaid=4195949

Por cierto en el .asm que enviaste falta la cabecera con el PIC, FUSES etc.

Un saludo

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
RE: Proteus y Asembler desde cero
« Respuesta #21 en: 12 de Febrero de 2006, 09:30:00 »
Pues tienes razon, cuando cargo el archivo el hex que has puesto en el almacen me funciona perfecto por lo cual veo que no es problema del proteus (como pensaba inicialmente) sino del codigo asm.

He cargado tu hex en el ic-prog y he revisado el asm que este genera y me sale el siguiente encabezado:



http://img133.imageshack.us/img133/262/icprog3qh.jpg

lo he agregado al ejemplo 10.asm que habia puesto y al inicio ne me reconocia ni INHX8M ni P16FXX.inc, luego de probar varias veces me reconocio INHX8M, he leido en el archivo de ayuda que dice lo siguiente (ojo traducido por babelfish)

El formato 8-bit partido del archivo produce dos archivos de salida: el hxl y el hxh. el formato es igual que el formato 8-bit normal, a menos que eso los octetos bajos de la palabra de datos se almacene en el archivo del hxl, y los altos octetos de la palabra de datos se almacenan en el archivo del hxh, y las direcciones son divididas por dos. Esto se utiliza para programar palabras 16-bit en pares de EPROMs 8-bit, un archivo para el octeto bajo, un archivo para el alto octeto.

ni idea para que se usa asi que probe a eliminarlo y si me funciono, si tuvieras la amabilidad de decirnos en correcto castellano, como dice el amigo redpic Muchas risas, para que diablos sirve Helado.

Con el que si no pude fue con p16fxx.inc asi que lo remplace por p16f84a y todo perfecto.

El programa me queda como sigue:

            LIST      P=16F84, F=INHX8M
            include "P16F84a.inc"
            ORG     0x0000

RP0   equ   5
RB0   equ   0

CONTADOR   RES   1
CONTADOR1   RES   1

   ORG   0


El resto es igual al que 10.asm que esta en el almacen. Ahora si corre perfectamente. Reitero las gracias por la ayuda RebotadoRebotado. (Al poner este encabezado ya no se hace necesario definir STATUS, TRISA,TRISB, PORTA, y PORTB; pues estos ya los define este encabezado, especifico para el 16f84a)

El problema entre analogico y digital lo debe solucionar este encabezado pues definira  las salidas correctamente, es asi? RollEyes

No defini el include pues es ejemplo del tutorial no lo hacia y pensaba hacerlo mas adelante, Pues queria probar que tan facil era cambiar por ejemplo a un 12C508A o a un 12F629, me funciono el 12C508A (pero tuve que leerme la hoja de datos y definir varias cosas para que funcione) aun tengo problemas con el 12F6629, pero eso lo veremos mas adelante.
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Proteus y Asembler desde cero
« Respuesta #22 en: 12 de Febrero de 2006, 12:02:00 »
No recuerdo la F=INHX8M para que era, yo nunca lo puse cuando programaba en ensamblador.

De todas formas si te interesa, en el subforo de asm (el primero de todos) te contestaran enseguida.

También faltaría en el caso de querer programarlo realmente la palabra de configuración con el tipo de oscilador y demás FUSES.

Un saludo

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
RE: Proteus y Asembler desde cero
« Respuesta #23 en: 13 de Febrero de 2006, 22:36:00 »
Luego del ultimo post me puse a revisar detalladamente el ejemplo y creo que hay varias correcciones que hacer:

   LIST   P=16F84
   include   "P16F84a.inc"


   ORG   0
   BSF   STATUS,RP0
   MOVLW   B"11110000"
   MOVWF   TRISA
   MOVLW   B"00000000"
   MOVWF   TRISB
   BCF   STATUS,RP0

CONTADOR   EQU   0xC
CONTADOR1   EQU   0xD


la primera era listar el pic que ya lo habia hecho en el post anterior, la segunda es definir las variable CONTADOR y CONTAODR1 en una ubicacion fija de la memoria de datos, en el registro de proposito general, cuando usaba

CONTADOR             RES          1
CONTADOR1           RES          2

y dejaba al programa ubicarlos al parecer creaba conflictos.


Luego cuando pongo el siguiente codigo el programa corre sin ningun problema, incluso cambiando la velocidad del reloj a 10 MHz. Esta en el almacen como Ejemplo 11.

            BSF              PORTB,0
            CALL            RETARDO
            BCF              PORTB,0
            CALL            RETARDO

            BSF              PORTB,1
            CALL            RETARDO
            BCF              PORTB,1
            CALL   RETARDO...........

Cuando hago el siguiente cambio me genera problemas:


            BSF              PORTB,0
            CALL            RETARDO
            BCF              PORTB,0
            CALL            NOP

            BSF              PORTB,1
            CALL            RETARDO
            BCF              PORTB,1
            CALL   NOP...........

En velocidades de 1 MHz no da problemas, pero cuando es arriba de 2 MHz los leds D3 y D4 se quedan colgados, ejemplo 12.



http://img106.imageshack.us/img106/2333/386yh.jpg

Ya he probado todo lo que se me ha ocurrido y siempre me sucede lo mismo, esto es un BUG o no se debe usar el NOP en estos casos?

Espero no estar abusando de tu ayuda POCHER.

Aqui el link con los ejemplos 11 y 12.

http://miarroba.com/foros/ver.php?foroid=348538&temaid=4203552
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Proteus y Asembler desde cero
« Respuesta #24 en: 14 de Febrero de 2006, 10:03:00 »
Si te fijas bien, tanto la simulación del 11.asm (sin NOPs) como la simulación del 12.asm no van bien. Es porque la temporización con los 2 contadores es muy corta y nos les dá tiempo a encenderse a los LEDs.

Para hacer temporizaciones te recomiendo que lo hagas con el TMR0 (16F84) y si son muy largas pués añádele al TMR0 los contadores que hagan falta.

Respecto a la inclusión de los NOPs en el programa que has puesto, no le veo sentido, es una pérdida de tiempo, valga la dedundancia (NOP=no operación).

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
RE: Proteus y Asembler desde cero
« Respuesta #25 en: 20 de Febrero de 2006, 23:11:00 »
Pues tienes razon pocher, tanto el 11 como el 12 presentan el mismo problema loco.

He probado de todo, usar el TMR0, tiempos mas largos, etc y nada. Por lo cual he llegado a la conclusion que son las resistencias analogicas pues es en estas dos que ocurre el problema, como dicen que lo bueno es enemigo de lo perfecto he optado por poner las resistencias como digitales, los leds digitales y asunto arreglado Enfurruñado.

He encontrado unos ejercicios muy buenos que incluyen entradas, interrupciones, EEPROM, TMR0 y display LCD estan bastante claros y muy didacticos, si bien el hex se genera tal cual, aparecen unos mensajes y warnings que hay que depurar, lo cual fue bastante didactico para aprender, estan en el almacen junto con el primer ejercicio.

http://miarroba.com/foros/ver.php?foroid=348538&temaid=4232414

La verdad no quiero abusar del espacio del foro ni del almacen que son limitados, si ocupan mucho espacio los puedo eliminar y reubicarlos en otro lugar.

Si no se entienden los comentarios que he puesto en el ejemplo 1 pueden postear sus dudas, correcciones y demas.

Saludos.
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo


 

anything