Autor Tema: Dolor de cabeza con PIC 12F683...  (Leído 28312 veces)

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

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #60 en: 22 de Febrero de 2011, 19:52:29 »
Se me habia pasado comentarles algo raro, y es que todos los ejemplos que me ahn dado cuando me dan un numero hexadecimal por ejemplo 55h si yo lo pogo asi en el codigo me lo marca error no me di mucho a la tarea de ver el porque pero pues tenia que declararlo como 0x55 o por ejemplo cuando me dieron el ejemplo de ir a la direccion EEPROM .1 que se supone con el punto indico que es en decimal igual tuve que hacerlo con 0x01 es algo muy raro tal ves sea algo que alla que moverle al MPLAB, se me hace que usando la sintaxis de h'55' no me daba error o b'1010101' tampoco daba error.

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #61 en: 23 de Febrero de 2011, 19:41:22 »
Podrian ayudarme con esta duda.

Cuando se ejecuta un interrupcion sabemos que ejecuta cierto codigo que allamos especificado pero que sucede si por ejemplo dentro de la interrupcion tenemos un ciclo que genera un retardo digamos de 20 segundos y antes de que termine el retardo hubo un cambio en el mismo pin que hizo ejecutar ese interrupcion, en teoria seria como si nuevamente se volviese a ejecutar la misma interrupcion que estaba en curso no se si me explique, que pasaria en estos casos?
Nada porque la interrupcion que se ejecuto primero necesita terminar los 20 segundos de retraso
Ó
Pararia de ejecutar el retardo y vuelve a ejecutar el inicio de la interrupcion.

Se que hay varios tipo de interrupciones y que no es posible ejecutar una interrupcion cuando ya se esta ejecutando una pero en este caso seria ejecutar exactamente la misma que estaba en curso.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #62 en: 23 de Febrero de 2011, 19:51:52 »
  Cuando uno programa una rutina de interrupción, una de las cosas que hay que hacer es deshabilitar las interrupciones haciendo 0 el bit GIE (GlobalInterrupEnable) del registro INTCON. Esto se hace para evitar que otra interrupción haga que el programa reingrese a la rutina de interrupción.
  Otra cosa a tener en cuenta es tratar de que la rutina de interrupción no insuma mucho tiempo, por ello es conveniente no llamar a funciones de retardo dentro de una interrupción.
  Otro punto muy importante es borrar el flag de la interrupción correspondiente, porque sino, al salir de la misma el flag seguiría activo y nuestro programa volvería a ingresar a la rutina de interrupción.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #63 en: 24 de Febrero de 2011, 00:48:22 »
Ok creo que con eso esta mas que claro muchas gracias.
Tengo algunas dudas en cuanto a la forma en que trabajan las entradas y salidas
bcf GPIO, 2   ;Esto lo deja como entrada o salida, o apaga o enciende el pin 2???????
y la otra es es con
bcf TRISIO, 2

En realidad no tengo muy claro cual es la diferencia entre las dos o como es que trabajan o cuando se deberia usar una o la otra se que para trabajar con TRISIO tengo que pasar al banco 1

Por ejemplo si quisiera activar que saliera energia por GP0 cual tendria que usar o si quiesiera que en lugar de energia fuese un valor logico como un 1, espero su ayuda como si fuera para alguien que no sabe nada de ese tema gracias.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #64 en: 24 de Febrero de 2011, 10:11:06 »
  En los datasheet está bien explicado el tema del tris y del gpio en tu caso. Esto dice en la página 31 del datasheet

"4.1GPIO and the TRISIO Registers
GPIO is a 6-bit wide, bidirectional port. The
corresponding data direction register is TRISIO.
Setting a TRISIO bit (= 1) will make the corresponding
GPIO pin an input (i.e., put the corresponding output
driver in a High-Impedance mode). Clearing a TRISIO
bit (= 0) will make the corresponding GPIO pin an
output (i.e., put the contents of the output latch on the
selected pin). An exception is GP3, which is input only
and its TRISIO bit will always read as ‘1’. Example 4-1
shows how to initialize GPIO."

  Está claro que para que un pin determinado (por ejemplo gp0) sea salida el tris correspondiente tiene que valer 0, para que sea entrada el tris correspondiente tiene que ser 1.

Código: ASM
  1. movlw b'00000010'
  2. movwf trisio

  eso configura todo el puerto como salida exceptuando gp1 que queda configurado como entrada.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #65 en: 24 de Febrero de 2011, 16:56:01 »
  En los datasheet está bien explicado el tema del tris y del gpio en tu caso. Esto dice en la página 31 del datasheet

"4.1GPIO and the TRISIO Registers
GPIO is a 6-bit wide, bidirectional port. The
corresponding data direction register is TRISIO.
Setting a TRISIO bit (= 1) will make the corresponding
GPIO pin an input (i.e., put the corresponding output
driver in a High-Impedance mode). Clearing a TRISIO
bit (= 0) will make the corresponding GPIO pin an
output (i.e., put the contents of the output latch on the
selected pin). An exception is GP3, which is input only
and its TRISIO bit will always read as ‘1’. Example 4-1
shows how to initialize GPIO."

  Está claro que para que un pin determinado (por ejemplo gp0) sea salida el tris correspondiente tiene que valer 0, para que sea entrada el tris correspondiente tiene que ser 1.

Código: ASM
  1. movlw b'00000010'
  2. movwf trisio

  eso configura todo el puerto como salida exceptuando gp1 que queda configurado como entrada.

Estos malditos data sheet deberian hacerlos en varios idiomas no se que pensaran los gringos cuantas preguntas me hubiera evitado si eso estuviera en español en fin me explicaste lo del TRISIO que mas que nada es para dejarlo como salida o entrada y el GPIO?


Y algo mas es que me estyoy volviendo loco con la comparacion de una variable lo que quiero hacer checar si la variable esta en 0x00 hacer una cosa y si es mayor que 0x00 hacer otra no habia tenido problema con esto pero ahota que quiero comparar cuando es 0 estoy batallando un poco, podria alguien ayudarme con eso

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #66 en: 24 de Febrero de 2011, 18:33:31 »
Estos malditos data sheet deberian hacerlos en varios idiomas no se que pensaran los gringos cuantas preguntas me hubiera evitado si eso estuviera en español en fin me explicaste lo del TRISIO que mas que nada es para dejarlo como salida o entrada y el GPIO?


Y algo mas es que me estyoy volviendo loco con la comparacion de una variable lo que quiero hacer checar si la variable esta en 0x00 hacer una cosa y si es mayor que 0x00 hacer otra no habia tenido problema con esto pero ahota que quiero comparar cuando es 0 estoy batallando un poco, podria alguien ayudarme con eso

  Pero podrías haber utilizado algún traductor online para entender lo del datasheet..... El GPIO es el puerto propiamente dicho, si yo escribo

Código: ASM
  1. bsf GPIO, 0

  El pin GP0 se hace 1, si es que estaba configurado como salida.

  La instrucción movf también afecta al registro STATUS. Tenés que chequear el bit ZERO de dicho registro, entonces podés escribir algo así...

Código: ASM
  1. movf variable,W
  2. btfss STATUS,ZERO ; si el bit ZERO está en 1 quiere decir que la variable vale 0

  Insisto en que trates de leer el datasheet, no es muy complicado teniendo un diccionario a mano y sino recurriendo a algún traductor online.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #67 en: 24 de Febrero de 2011, 20:33:02 »
Gracias men tan sencillo como hacer eso para comparar si la variable es 0 funciona perfecto.
Y volviendo con el tema del TRISIO y GPIO.
En teoria el TRISIO seria para poner como salida o entrada un PIN del PIC.
Y el GPIO seria para activar o desactivar la salida o entrada de un PIN segun sea como se alla configurado no?

En el codigo que estoy editando veo que siempre que va a cambiar de salida a entrada o vicebersa primeramente pasa al banco 1 cambia la I/O y pasa al banco 0.
Algo asi:

  bsf  STATUS, RP0
  bsf  TRISIO, 4
  bcf  STATUS, RP0

Es necesario hacer esto siempre que se quiera cambiar de salida a entrada o vicebersa?

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #68 en: 24 de Febrero de 2011, 20:37:49 »
Gracias men tan sencillo como hacer eso para comparar si la variable es 0 funciona perfecto.
Y volviendo con el tema del TRISIO y GPIO.
En teoria el TRISIO seria para poner como salida o entrada un PIN del PIC.
Y el GPIO seria para activar o desactivar la salida o entrada de un PIN segun sea como se alla configurado no?

En el codigo que estoy editando veo que siempre que va a cambiar de salida a entrada o vicebersa primeramente pasa al banco 1 cambia la I/O y pasa al banco 0.
Algo asi:

  bsf  STATUS, RP0
  bsf  TRISIO, 4
  bcf  STATUS, RP0

Es necesario hacer esto siempre que se quiera cambiar de salida a entrada o vicebersa?

  Sí, el TRISIO es para configurar que pines serán entradas y que pines serán salidas.
  Sí, el GPIO es el puerto propiamente dicho, por lo tanto al escribir un dato en él, los pines que estén como salida tomarán el valor que hayas escrito. Al leer el GPIO leerás el estado de los pines.

  Y sí, es necesario hacer esos pasos porque el registro TRISIO está en el banco 1 y justamente se cambia de banco variando el valor del bit RP0 del registro STATUS
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #69 en: 24 de Febrero de 2011, 21:00:33 »
Ok entonces no ando muy perdido jeje, lo del AD como es que trabaja si no es mucho molestarte AngelGris?
En esto se que los pines se definen como analogicos o digitales  por medio del registro ANSEL, que si esta en 0 cierto PIN sera digital y si esta en 1 sera analogo.
De antemano se que si esta en analogo y es salida sera energia lo que salga
Si esta analogo como entrada pues se podra evaluar cuando es que el pin esta recibiendo energia
Pero mi duda es cual es la diferencia en que sea digital y lo que salga o entre sera 1 o 0.

Espero puedas ayudarme un poco con esas duda del AD cuando es que utilizan uno u otro, gracia spor tu grandicima ayuda men.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #70 en: 25 de Febrero de 2011, 15:33:03 »
Ok entonces no ando muy perdido jeje, lo del AD como es que trabaja si no es mucho molestarte AngelGris?
En esto se que los pines se definen como analogicos o digitales  por medio del registro ANSEL, que si esta en 0 cierto PIN sera digital y si esta en 1 sera analogo.
De antemano se que si esta en analogo y es salida sera energia lo que salga
Si esta analogo como entrada pues se podra evaluar cuando es que el pin esta recibiendo energia
Pero mi duda es cual es la diferencia en que sea digital y lo que salga o entre sera 1 o 0.

Espero puedas ayudarme un poco con esas duda del AD cuando es que utilizan uno u otro, gracia spor tu grandicima ayuda men.


  En este link http://www.todopic.com.ar/foros/index.php?topic=33287.0 hay una fantástica explicación del funcionamiento del ADC, hecha por uno de los maestros del foro
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #71 en: 13 de Mayo de 2011, 22:46:10 »
Hola a todos nuevamente estoy de regreso programando un PIC 12F683 jejeje, queria preguntarle si fuera tan amable alguien, como puedo hacer una demora estando en una interrupcion de por lo menos medio segundo a 1 segundo, digamos que la interrupcion se va a ejecutar cuando cambie de estado cierto pin y necesito que se aga una demora en el tiempo aproximado que les comento para luego dar una salida por ese mismo pin que ejecuto la interrupcion.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #72 en: 13 de Mayo de 2011, 23:09:04 »
Para eso lo mejor es que hagas una interrupcion por desbordamiento de un TIMER.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #73 en: 16 de Mayo de 2011, 20:25:18 »
Hola men gracias por tu respuesta pero la verdad como todavia no se muy bien del todo creo que lo hare de la manera mas facil sin interrupcion osea solo con un siclo que se repita preguntando cuando se presiono el boton, eso creo que se me hace mas sencillo no se si seria mucha molestia que me ayudaran con eso, les explico mas omenos como es como quiero hacerlo.

Quiro que todo lo aga por el puerto GP1, digamos que el ciclo estaria haciendo su labor deciclo preguntando cuando es cuando esa entrada detecto un cambio (o que recibo una señal) para despues de eso hacer un pausa de algunos 800 milisegundos y despues dar una señal de salida por ese mismo puerto algo como un chispaso rapido, entonces supongo que hay que tener el puerto configurado como entrada y una vez que detecta el cambio hacer la pausa y pasarlo a salida y luego volver a dejarlo como entrada para que el ciclo siga haciendo su trabajo, :( espero me ayuden y me tengan pasiencia gracias.

Algun alma caritativa...  :oops:
« Última modificación: 17 de Mayo de 2011, 12:09:20 por sQs »

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Dolor de cabeza con PIC 12F683...
« Respuesta #74 en: 17 de Mayo de 2011, 15:32:16 »
Help me please....   :(