Autor Tema: MicroChip CURSILLO (Empezar desde cero)  (Leído 29846 veces)

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

Desconectado andyros

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 70
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #60 en: 12 de Junio de 2004, 05:06:00 »
Hola , que tal , bueno parece que ya tenemos el veranito aqui , ¡¡¡¡¡¡¡¡¡¡ y se acerca ese mes de vacaciones  !!!!!!!!!!

 Chile_irc,  ya ha colgado la memoria de datos,  podeis ver que direccion tiene cada registro , ok , ( que por cierto me tiene que decir como lo ha hecho ), los EQU como tu bien has dicho significa equivale, vamos a poner un ejemplo a ver si asi se entiende mejor
Codigo:
;VAMOS A PONER UN 1 EN EL BIT 5 DEL REGISTRO ESTADO SIN UTILIZAR LOS EQU.
;EL BSF PONE A 1 EL BIT DEL REGISTRO QUE PONGAMOS A CONTINUACION,
;EL REGISTRO QUE HEMOS PUESTO ESTA EN LA DIRECCION 3,
;Y EL BIT QUE HAY QUE MODIFICAR SE COLOCA DETRAS DE LA COMA.
;EN ESTE CASO EL BIT QUE NOS INTERESA ES EL Nº5.
;*******************************************************************************************


         

             bsf          0x03,5
             

;*******************************************************************************************
;PUES AHORA LO VAMOS A HACER CON LOS EQU.
;FIJAROS QUE SI ESTADO EQUIVALE A 3 Y RP0 A 5 ,¡¡¡¡ ES LO MISMO  !!!!!
;¿POR QUE SE HACE ESTO ? IMAGINATE EN UN PROGRAMA MUY LARGO, QUE LOS HAY, TODO LLENO DE NUMERITOS ,
;TE VOLVERIAS LOCO, CON LOS EQU IDENTIFICAS MAS RAPIDO DE QUE REGISTROS O BITS SE TRATAN.

;*******************************************************************************************




ESTADO      EQU      0X03         ;ESTADO,  ESTA EN LA DIRECCION 3.
RP0         EQU      0X05         ;Y AL BITE 5 LE VAMOS A LLAMAR RP0.




            bsf      ESTADO,RP0

Entonces continuamos , el programa esta testeando continuamente la puertaa RA0, y cuando pulsas se enciende el led y cuando dejas de pulsar se apaga , DE MOMENTO NO VOY A PONER UNA PERDIDA DE TIEMPO PARA EVITAR LOS REBOTES, PARA NO LIARNOS , YA LO COMENTAREMOS , solo deciros que cuando se pulsa  no  hay solo un contacto entre las laminillas del pulsador hay muchos y eso puede dar errores de lectura ,  para evitarlo en el primer contacto el pic va a una rutina para perder tiempo mas o menos 20 ms ,  con eso se suele evitar los rebotes.

Aqui os dejo el programa terminado echarlo un vistazo y vemos las dudas , en cuanto no hayan dudas pasamos a ensamblarlo y a grabar el pic y probar nuestro primer circuito.

Codigo:
           LIST     P=16F84A     ;EL PIC QUE VAMOS A UTILIZAR.



;***************************************************************

;ETIQUETAS DEL PROGRAMA.
             
ARCHIVO_1   EQU      0X0C         ;1ªDIRECCION LIBRE PARA NUESTRO USO.
ESTADO      EQU      0X03         ;ESTADO,  ESTA EN LA DIRECCION 3
RP0         EQU      0X05         ;RP0 EQUIVALE A 5.
PUERTAA     EQU      0X05         ;PUERTAA SE ENCUENTRA EN LA DIRECCION 5.
PUERTAB     EQU      0X06         ;PUERTAB SE ENCUENTRA EN LA DIRECCION 6.

;***************************************************************


;AQUI EMPIEZA EL PROGRAMA.

            ORG      0            ;ORIGEN DEL PROGRAMA, AQUI EMPIEZA.
               
            goto     INICIO       ;VA A INICIO PARA SOBREPASAR EL VECTOR DE INTERRUPCION.
                                 
           
             
            ORG      5            


INICIO      bsf      ESTADO,RP0   ;ME SITUO EN EL BANCO 1
            movlw    b"11111"     ;PUERTAA COMO ENTRADA.
            movwf    PUERTAA
            clrf     PUERTAB      ;PUERTAB COMO SALIDA.
            bcf      ESTADO,RP0   ;NOS SITUAMOS EN EL BANCO 0.

            clrf     PUERTAB      ;BORRO LA PUERTAB PARA EMPEZAR


ARRIBA      btfsc    PUERTAA,0    ;TESTEA EL PIN 17 DEL PIC,RA0.SALTA SI VALE A PASAR 0
            goto     ARRIBA       ;VA UNA DIRECCON MAS ARRIBA.

ENCIENDE    bsf      PUERTAB,0    ;ENCIENDE EL LED.
            btfss    PUERTAA,0    ;TESTEO PARA VER SI HA DEJADO DE PULSAR
            goto     ENCIENDE     ;SI ESTA PULSADO VA A ENCIENDE.

            bcf      PUERTAB,0    ;SE DEJO DE PULSAR, APAGO EL LED.
            goto     ARRIBA       ;Y SE DEJO DE PULSAR VA ARRIBA.

            END    




UN SALUDO

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #61 en: 13 de Junio de 2004, 10:48:00 »
Vieno el programa acabado, lo entiendo todo excepto esto:

clrf     PUERTAB      ;BORRO LA PUERTAB PARA EMPEZAR

¿Porqué tienes que borrar la puertaB?

Desconectado andyros

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 70
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #62 en: 13 de Junio de 2004, 11:24:00 »
Piriots, al empezar las salidas estan a nivel alto, si no las borro estarian encendidas todas las salidas de la puerta B.




Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #63 en: 13 de Junio de 2004, 11:34:00 »
Entendido!!!!!!!!!!! ahora ya entiendo todo el programa. Gracias x reslover las dudas.

SAlu2

Desconectado TXUSTOPO

  • PIC10
  • *
  • Mensajes: 25
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #64 en: 13 de Junio de 2004, 19:13:00 »
Andyris estoy más perdido...........
Se lo que e haceis pero no se para que sirve cada instrucción que ponéis.
Deberiais de empezar por cositas más sencillitas, como mover número de un sitio a otro, sumando, restando, etc, esplicando de forma simple cada instrucción.......como bsf, clrf TRISB. Y ase que hay que estudiar y leer, pero.......es que no me entero. Deberíamos seguir todos un mismo orden. Espero no retrasaros ni nada pero es que.... no le veo lo que quiero verle (hablando metaforicamente). Creo que antes de poner los registros, instruccciones y demás, deberías de explicar que es, para que sirve o para que se utiliza cada registro y luego ya poner ejemplos.
Es mi opinión .
Gracias

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #65 en: 14 de Junio de 2004, 01:27:00 »
Esto puedo intentar explicarlo bajo mi punto de vista y viéndolo desde lejos y a groso modo .

Los pic incorporan un microprocesador entre otras cosas que se le llama Unidad Centrar de Proceso CPU y no es nada mas que un monton de puertas entrelazadas para poder realizar operaciones matematicas y otras cosas (muy pocas cosas) sumar y restar , and , or , etc . (yo no me preocuparia de momento de como funciona internamente , aunque es interesante ).

¿ pero como es posible que estos bichos hagan estas cosas tan increibles si estan tan limitados en operaciones y no disponen de inteligencia ? .
Aqui es cuando entra el ser humano para ir combinando todas estas pequeñas posivilidades e ir formando una aplicacion .


La CPU por si sola no nos sirve para nada , así que necesita de mas hardware para poder hacer algo practico y util para nosotros.
Todo este hardware es paralelo a la CPU y son necesarias unas lineas para poder acceder a  la direccion donde se encuentre dicho hardware (se llaman lineas de direcciones ) , por ejemplo el PortA  se encuentra en la direccion 5 , asi que se lo indicaremos para poder acceder a el .
Con direccionarlo no nos sirve para mucho , así que lo ideal es poder leer y escrivir sobre el , para esto la CPU incorpora el (bus de dados 8 en este caso ) y finalmente el bus de (control) , que son otras lineas necesarias ( por ejemplo una de ellas seria si se lee o escribe sobre el dispositivo , CS  para seleccionar un dispositivo ).


La CPU necesita de un medio de almacenamiento para ir leyendo las ordenes que nosotros queremos que realice y obrar en consecuencia , a esto se le llama juego de instrucciones y este medio puede ser RAM , ROM , EEPROM , FLASH etc . lo mas lojico es que sea de alguno de los tipos que no se borran al cortar la alimentacion , jejej. se llama memoria de programa .
Es aqui donde pondremos nuestro codigo y la CPU ira leyendo y ejecutando fielmente cada una de ellas al ridmo de un reloj .


Una memoria del tipo RAM para guardar valores temporales que se borraran al quitar la alimentacion .

Necesita de un hardware para entradas y salidas (creo que no hace falta comentar lo que es ) .
En el caso de los pics pueden incluir Timmers, usart etc. solo hay que direccionarlos y actuar sobre sus registros para configurarlos , leerlos etc .

Podeis ver la si  arquiectura con mas detalle  en los Datas.

En el caso de los 16Fxxx La CPU se situará en la dirección 0000 de la memoria de programa al resetearse y empezara a ejecutar lo que encuentre alli . Lo normal es saltar a una direccion superior ya que en al generarse una interrupcion la CPU emezara a ejecutar lo que encuentre en la posicion 4 y hay que dejarla libre .

por ejemplo , solo para que veais como nos podemos mober por la flash .
Codigo:

 org 0x0003
 nop
 org 0x03FF
 nop
 end


si esto tal cual está se compila con Mpasm y abrimos Winpic800-IcProg seleccionando un 16f84 veremos un 0x0000 en la direccion 0x3 y en la direccion 0x3FF , que es el valor equivalente al nop (no operacion)

Espero haya aclarado alguna cosita aunque sea u poco .






Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #66 en: 14 de Junio de 2004, 06:24:00 »
TXUSTOPO bajo mi punto de vista yo iría estudiando los registros a medida que van siendo introducidos en programas sencillos, tal y como lo está haciendo andyros, al cual hay que agradecerle su dedicación desinteresada. Explicar todos los registros a la vez con su correspondiente "mar" de bits lía y desmoraliza.

Lo interesante es que entendais los programas y sobre todo que os divirtais comprobando que funcionan, para lo cual os tendreis que agenciar un simulador o un entrenador.

Un pequeño comentario al programa de andyros: el pulsador externo está conectado de tal forma que al pulsar sobre él se envía un 0 al PIC, y cuando se suelta (estado de reposo) se manda un 1.

Decir también que tal como está, no funcionaría si se intentase montar físicamente, ya que como bien dijo andyros faltan los antirebotes ... pero esa es otra historia, poco a poco.

Un saludo y ánimo.


Desconectado Chile_irc

  • PIC12
  • **
  • Mensajes: 66
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #67 en: 14 de Junio de 2004, 08:29:00 »
Hola gente, veo que se esta poniendo interesante el asunto.
Bueno primero que nada andyros tengo un hosting por ahi asi ke pude publicar el link y las fotos en ese hostin y la puse con la herramienta que esta aca para fotos. osea la foto que tu ves es lo que puse en mi hosting, no es que la aya puesto en el foro es una foto direccionada a mi pagina. jeje (me quedo calrisimo lo de los equ jejej )
Bueno volviendo al punto anerior. rescato la ayuda de andyros y su tiempo por eso estoy de acuerdo que las intruciones se aprendan a medida que surjan ejemplos, si no es una enrredadera yo las tengo todas pero con ejemplos se me han aclarado muchas dudas. y por eso en la pagina 3 de esta misma discucion publique un link con las intruciones y la foto de la memoria con las intruciones con su direccion, echenle una leida porfavor. para no quedarnos pegado.. Bueno?

por lo demas recomiendo no c si este en lo correcto. que la gente que se incorpore en este apartado pueda leer un poquito sobre pic, creo que todos hemos leido algo antes de empesar por aca ya que facilita mucho las cosas para entender un poco mas lo que andyros esta explicando
y Sispic GRan aporte para los flojitos que no le gusta leer jejej

Bueno estoy sacando por deduccion que: una ves situado en el banco 1 no es nesesario direcionar a 0x85 o 0x86 si no a 0x05 y 0x06 para setear los puertos a o b como entrada o salida (TRISA , TRISB) ya que cuando estamos en el banco 1 le decimos a esos registros queden como entrada o salida y al pasar al banco 0 podemos sacar los niveles a 0 o 1 (nivel de voltaje aprox 0 o 5Volt) directamente a un led u otra cosilla, Estoy en lo correcto?


Un saludo y estoy ala espera de poder continuar y gracias a todos por su tiempo...

Saludos
Chile_irc..

Desconectado andyros

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 70
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #68 en: 14 de Junio de 2004, 15:35:00 »
Hola a todos , Chile_irc , asi es como se realiza la configuracion de las puertas, estando en el banco 1 , podemos utilizar direccion 5 y 6 .

Querria aclararos una cosa , yo muy gustosamente os puedo  ir enseñando lo poco que se , por que realmente llevo muy poco tiempo trasteando con los pics, pero al igual que a mi me ayudaron yo tambien quiero ayudar , la verdad es que hay que leerse las instrucciones e intentar ver que es lo que significa , y si aun asi quedan dudas intentaremos hacer un aclarado.....jeeejee.

Mañana os pondre como ensamblar y grabar el pic , os hara falta un programador como una  t-20 , un banco de pruebas (placa board ), o un entrenador ,  asi podremos probar el programa, bueno el famoso pic 16f84a no puede faltar es el invitado de honor        

UN SALUDO

Desconectado TXUSTOPO

  • PIC10
  • *
  • Mensajes: 25
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #69 en: 14 de Junio de 2004, 15:39:00 »
Gracias por tu explicación SISPIC. Me ha resuelto bastantes dudas.
Bueno pus a la vez que vayan poniendo ejemplos intentaré comprenderlos y preguntar las cosas que no entienda o sepa.
Andyros gracias por ofrecerte a ayudarnos.

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #70 en: 14 de Junio de 2004, 16:08:00 »
Un par de dudas, primero, podrias decir el material necesario para montar el circuito??

A ver si  me dejo algo

-pic 16F84A
-cristal de 4mhz
-pulsador normalmente abierto o cerrado??
- 2 condensadores ceramicos de 27pf
-led
-protoboard
- programador TE-20 si puede ser la segunda edicion mejor

La segunda duda es que por ahi arriba lei que el programa no funcionaria por no se que de los rebotes, si no hay esto en el programa funciona o no??

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #71 en: 14 de Junio de 2004, 23:06:00 »
Bien, yo os explico lo de los rebotes.

Cuando activas (pulsas) un pulsador, este no envía un único valor a la entrada del PIC, sino que internamente se producen múltiples "rebotes" en el contacto hasta que por fin se estabiliza. Estos rebotes imperceptibles para el ojo humano sí son "vistos" por el PIC, ya que este investiga cuanto valen las entradas a una velocidad de vértigo (aproximadamente fosc/4). Por lo tanto antes de tomar datos de una determinada entrada debemos dejar que el contacto se estabilice y deje de producir rebotes.

Tener en cuenta también que los rebotes pueden provenir tanto al pulsar como al soltar el pulsador y dependiendo de como tenga que funcionar el programa pueden ser "peligrosos", por dar lugar a mal funcionamiento,  tanto unos como otros.

En los dos casos se soluciona el problema introduciendo por sofware una pequeña temporización (20ms por ejemplo) que espera hasta que el contacto "se está quietecito".

Es el diseñador el que tiene que darse cuenta en qué casos hace falta introducir temporizaciones antirebotes.

Un saludo


Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #72 en: 16 de Junio de 2004, 11:23:00 »
JOder no e podido encontrar el programador, asta dentro de 15 dias no lo tendre

Desconectado litris

  • PIC16
  • ***
  • Mensajes: 226
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #73 en: 16 de Junio de 2004, 11:35:00 »
Esta muy bien esto del curso.


Saludos.

Desconectado andyros

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 70
RE: MicroChip CURSILLO (Empezar desde cero)
« Respuesta #74 en: 16 de Junio de 2004, 16:21:00 »
Hola ,  bueno estoy un poco liado asi que intentare sacar tiempo de donde pueda, primero que nada agradecer las explicaciones de Pocher y Sispic .
Piriots si has hecho  alguna placa ya, a lo mejor te interesa hacerte la te- 20 se, he encontrado un monton de paginas donde esta el fotolito , utiliza tu buscador favorito,  de todos modos te dejo aqui una direccion, por si te interesa http://www.zackyfiles.info/nagra1/grabadores/te20.htm , recuerda escoge la version SE
Bueno el circuito ya lo he probado y funciona , incluso sin rutina antirrebotes , yo cuando empeze en los circuitos muy simples  no ponia rutinas antirrebotes y no he tenido problemas , pero en los circuitos mas complejos es muy conveniente utilizarla.

Los componentes que de momento nos haran falta es el
Codigo:
PIC 16F84A
CRISTAL 4Mhz
2 CONDENSADORES 27PF
1 CONDENSADOR 100K
2 PULSADORES, NORMALMENTE ABIERTO
1 DIODO 1N4148
RESISTENCIAS DE 10K, 100 Ohm, 330 Ohm
DIODO LED

Bueno , esperaremos un poco a que tengais lo necesario, si teneis alguna duda .

UN SALUDO