Autor Tema: Multitarea con un 16F873, se puede?  (Leído 11691 veces)

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

Desconectado literatronic

  • PIC12
  • **
  • Mensajes: 98
Multitarea con un 16F873, se puede?
« en: 09 de Abril de 2007, 17:03:11 »
Hola a todos!

Estoy trabajando en un proyecto en donde con un 16F873 controlo un teclado matricial, muestro unos datos en un LCD y transmito serialmente a un PC.  Quiero que la transmisión sea constante pero que también pueda estar pendiente del teclado, ya que al presionar ciertas teclas cambian unas variables que transmito al PC.

He leído sobre multitarea, pero creo que en los PIC no se puede implementar, no se que hacer para solucionar este inconveniente, si alguien me puede ayudar lo agradecería.

Muchas gracias.
« Última modificación: 09 de Abril de 2007, 17:10:23 por literatronic »

Desconectado sandra

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 374
Re: Multitarea con un 16F873, se puede?
« Respuesta #1 en: 09 de Abril de 2007, 23:30:13 »
Todo esto que mencionas no tiene mucho complicación par un pic efectivamente no realiza multitarea como tal pero manejando a adecuadamente las interrupciones  del pic
No tendrás mayor problema.
Tienes  que leer muy bien la data del pic a utilizar para que entiendas que recursos de interrupción tiene e implementarlas de manera que realice lo que pretendes
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Multitarea con un 16F873, se puede?
« Respuesta #2 en: 10 de Abril de 2007, 11:06:40 »
El término multitarea puede ser un poco controversial, pero si que puedes hacer multiprogramación, para ello puedes utilizar un RTOS que te permitirá hacer todo eso, llégate por el siguiente post http://www.todopic.com.ar/foros/index.php?topic=15876.0

Aclararás algunas de tus dudas al respecto

Un saludo Reinier

Desconectado literatronic

  • PIC12
  • **
  • Mensajes: 98
Re: Multitarea con un 16F873, se puede?
« Respuesta #3 en: 10 de Abril de 2007, 14:55:26 »
reiniertl ya mire el post y muy interesante lo de los RTOS, no los conocía, pero es para dedicarle tiempo y lo que necesito hacer ahora no justifica la utilización de algo tan avanzado, muchas gracias.

sandra voy a leer bien sobre las interrupciones para ver si las utilizo, muchas gracias.

Desconectado literatronic

  • PIC12
  • **
  • Mensajes: 98
Re: Multitarea con un 16F873, se puede?
« Respuesta #4 en: 10 de Abril de 2007, 18:00:35 »
He leído varios post sobre interrupciones y ya entiendo, más o menos, como manejarlas.  Alguien sabe si el 16F873 tiene interrupción por serial?

He pensado en poner la interrupción cuando se presione alguna tecla, en el puerto B esta el teclado matricial, pero no estoy seguro de si funciona como quiero.  Voy a probar y si alguna cosa pego mi programa para que por favor me ayuden a encontrar una solución.

Muchas gracias.

Desconectado sandra

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 374
Re: Multitarea con un 16F873, se puede?
« Respuesta #5 en: 10 de Abril de 2007, 18:51:05 »
Anda tio lee la data del pic 16f873 te aseguro que no muerde y de pasada te evitaras muchos malos ratos.
Todos los pic que cuentan con puerto serial  cuentan con interrupción .
Si te atreves a preguntar si el pic 16f873 cuenta o no con puerto serie te prometo que se borra todo este tema :x
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado literatronic

  • PIC12
  • **
  • Mensajes: 98
Re: Multitarea con un 16F873, se puede?
« Respuesta #6 en: 11 de Abril de 2007, 11:37:54 »
Listo sandra! ya leí la hoja de datos de mi 16F873  :mrgreen:

Estoy utilizando la comunicación USART por medio de los pines RC6/TX/CK para transmisión (salida) y RC7/RX/CK para recepción (entrada).  Ya ví que esta comunicación si tiene interrupción por medio de los registros asociados a ella como son PIE1(4,5) y PIR1(4,5), lo que no estoy seguro es de cómo funciona, es decir, si yo estoy en la rutina de lectura del teclado, cuándo se produce una interrupción? cuando recibo algo supongo, pero cómo se que recibí algo si estoy "encerrado" en el loop de la rutina del teclado esperando que sea presionada una tecla.

Apenas le estoy cogiendo el tiro a esto de las interrupciones, por favor tenéme paciencia, gracias  :-)

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Multitarea con un 16F873, se puede?
« Respuesta #7 en: 11 de Abril de 2007, 13:53:48 »
Si las interrupciones están debidamente configuradas y además habilitadas no importa donde en que parte del código se esté ejecutando tu programa, si se produce una interruipción: SE INTERRUMPE LA EJECUCIÓN PARA ATENDER LA INTERRUPCIÓN.

Esto quiere decir que antes de utilizar este poderoso mecanismo debes empaparte bien en su funcionamiento, porque tu sistema puede hacer cosas raras ya que este es un mecanismo asincrónico que puede alterar el funcionamiento del sistema o modificar datos que no pueden ser modificados en determinados momentos.

un saludo Reinier

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Multitarea con un 16F873, se puede?
« Respuesta #8 en: 11 de Abril de 2007, 15:37:23 »
Hola.

Como bien lo sugieren deberías leer un poco sobre las interrupciones y sus manejos:
http://www.todopic.com.ar/foros/index.php?topic=4264.0
http://www.todopic.com.ar/foros/index.php?topic=3613.msg106019#msg106019
http://www.todopic.com.ar/foros/index.php?topic=3925.msg28601#msg28601

Como estás colocando el mensaje en el foro de Basic, se ha realizado una búsqueda con las palabras "configuración interrupciones" en el buscador del foro, en el subforo de BASIC.

Te aconsejo leeas los temas, viene uno con lo que tu necesitas (creo); todo lo anterior en BASIC.

Sería recomendable que te "metieras" con el buscador, por lo general ya alguien lo hizo o inició y la información se encuentra dentro del foro.

Espero te ayude en algo.
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

Desconectado literatronic

  • PIC12
  • **
  • Mensajes: 98
Re: Multitarea con un 16F873, se puede?
« Respuesta #9 en: 11 de Abril de 2007, 17:18:37 »
Muchas gracias por su ayuda, de verdad que ya he leído mucho sobre interrupciones, tanto que estoy enredando todo.  Como ya dije quiero utilizar la interrupción de la USART, entonces:

INTCON = %01000000 'Habilito interrupciones de periféricos
PIE1 = %00100000    'Habilito interrupción por USART

Cuando hay una interrupción, porque recibe información por el pin RC7/RX/CK, sale de la rutina del teclado y se va a atender la rutina de comunicación esto con:

ON INTERRUPT GOTO comunicacion

'El resto del programa ...

comunicacion:
DISABLE
LOW TRANS
    SERIN2 RX,84,[UNIDAD1]
    SERIN2 RX,84,[UNIDAD2]
    SERIN2 RX,84,[UNIDAD3]
    SERIN2 RX,84,[UNIDAD4]
    SERIN2 RX,84,[UNIDAD5]
    SERIN2 RX,84,[UNIDAD6]
IF UNIDAD1 = UBI2 THEN       
HIGH TX                 'Para que salga bien la primer línea de la tx.
HIGH TRANS
    SEROUT2 TX,84,[UBI2,UNIDAD2,CONT,UNI1,UNI2,UNI3,_
    DAPARO,CODI6,CODI7,CODI5]
LOW TRANS
RESUME
ELSE
GOTO comunicacion
ENDIF

No se si estoy mezclando todo, por favor me podrían hacer el favor de decirme si voy bien o en que me estoy equivocando  :-)




Desconectado sandra

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 374
Re: Multitarea con un 16F873, se puede?
« Respuesta #10 en: 12 de Abril de 2007, 19:39:14 »
Haber  ya  le diste lectura al data del pic ahora te recomiendo que te leas el manual del pbp copo pista te puedo decir que así gamas te va a funcionar ya que no estas utilizando la comunicación serie por hardware y así  nunca vas a trabajar con la interrupción.

Te as metido en un lió algo complejo te pregunto sabes cual es la diferencia entre una interrupción en ASM y una en pbp noooo pues ale a quemarse las pestañas.

Nota... Para que alguien te pueda ayudar debes mostrar el código completo  con el fragmento que expones es imposible saber que esta haciendo tu programa

El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado literatronic

  • PIC12
  • **
  • Mensajes: 98
Re: Multitarea con un 16F873, se puede?
« Respuesta #11 en: 13 de Abril de 2007, 09:40:39 »
Muchas gracias sandra por tus jaladas de orejas  :mrgreen:

Ya me dí cuenta que los comandos para la comunicación USART son el HSEROUT y el HSERIN.  Ahora estoy leyendo bien todo el manual de PBP, el DS del 16F873 y lo que encuentre sobre interrupciones.

Voy a hacer unos cambios en el hardware y en el programa para intentar unas cositas, si funcionan pego el programa completo, muchas gracias.

Desconectado literatronic

  • PIC12
  • **
  • Mensajes: 98
Re: Multitarea con un 16F873, se puede?
« Respuesta #12 en: 13 de Abril de 2007, 14:42:41 »
Ya hice unos cambios pero no me funciona el teclado matricial  :?

Tenía el teclado en el puerto B y decidí cambiarlo para el puerto C, para poder utilizar las interrupciones del B, y ya no me funciona (no me lee las teclas que presiono).

Alguien me podría decir por qué?

Muchas gracias.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Multitarea con un 16F873, se puede?
« Respuesta #13 en: 13 de Abril de 2007, 14:55:25 »
en el caso anterior usabas pullups en portb??? si es asi ahora pones las resistencias fisicas de pullup o bien tienes elportc como entrada??
"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
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