Autor Tema: ejecutar dos instrucciones al mismo tiempo  (Leído 16317 veces)

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

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
ejecutar dos instrucciones al mismo tiempo
« en: 27 de Julio de 2006, 12:39:11 »
bueno primero pedir perdon por estar siempre preguntando.estoy haciendo un programa para que un pequeño robot me entienda por la voz unas instrucciones:adelante,atras, izquierda y derecha la verdad me parecia facil pero a medida que hago cosas se me va complicando y necesito que mientras tengo el motor andando BSF PARTB 0 tambien me atienda una BTFSS para chequear el micro,gracias por anticipado.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #1 en: 27 de Julio de 2006, 13:12:40 »
Hola!

Mira...dos instrucciones a la vez con un solo nucleo de proceso imposible.. :(

Pero mediante interrupciones podes lograr algo que se parezca un poco.  :mrgreen:

Saludos.
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #2 en: 27 de Julio de 2006, 16:39:54 »
bueno primero pedir perdon por estar siempre preguntando.estoy haciendo un programa para que un pequeño robot me entienda por la voz unas instrucciones:adelante,atras, izquierda y derecha la verdad me parecia facil pero a medida que hago cosas se me va complicando y necesito que mientras tengo el motor andando BSF PARTB 0 tambien me atienda una BTFSS para chequear el micro,gracias por anticipado.

Hacer un bsf y un btfss sobre el mismo puerto, uno inmediatamente después del otro no es buena idea.  Sobre todo en los 16F y 12F que no tienen los latchs y más pensando en un funcionamiento a alta frecuencia.

Como bien te dijo aitopes no se puede hacer 2 instrucciones en el mismo exacto momento.  Tal vez estas buscando la solución al problema por donde no debes.

¿Qué es lo que pretendes hacer?
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #3 en: 28 de Julio de 2006, 05:55:57 »
cuando digo chequear el <micro> me refiero a un microfono pequeño que lleva y que estaria conectado en PORTA,0

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #4 en: 28 de Julio de 2006, 09:47:57 »
cuando digo chequear el <micro> me refiero a un microfono pequeño que lleva y que estaria conectado en PORTA,0

Es que no has aclarado bien tu punto.

Tu quieres por un lado leer un pin y por el otro manejar un motor?  Esto es perfectamente posible, debieras hacer 2 rutinas donde ambas se llamen continuamente.  Se llamará más seguido a la que tenga que atenderse más rapido ya que en un motor no tiene sentido que le cambies los pulsos cada ciclo de instrucción.

Tu quieres hacer 2 cosas a la vez, lo cual en esto del firmware no significa que sean 'en simultáneo' sino que en realidad las haces tan rápido que parece que son en simultáneo .  Lo mismo ocurre con las pcs monomicro: 'parece' que ejecuta muchos programas al mismo tiempo pero en realidad atiende a uno por vez tan rápidamente que parece que lo hace en simultáneo.

Es esto lo que quieres hacer??
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #5 en: 28 de Julio de 2006, 11:43:54 »
primero gracias por contestar tan rapido.quiero hacer un programa que entienda palabras dichas por mi mediante un micrfono, en principio parecia relativamente facil pero en cuanto empece a escribir codigo la cosa se va complicando,ademas es el promer programa que hago. cuando el motor este activado o los motores (lleva dos) si yo le mando cambiar de direccion tamien tiene que hacerlo creo que debera ser mediante una interrupcion.esta interrupcion la tendria siempre activada?.encuanto le llegara sonido por el microfono pararia lo que esta haciendo y atenderia esa señal que le entra por RA0 que es donde esta conectado el micro?.y en 16f84a puedo meter mas interrupciones porque tengo dos bumpers que si choca contra algo tambien tiene que parar y ademas un detector de ultrasonidos.pero en principio me preocupa el programa de la voz.gracias por atenderme

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #6 en: 28 de Julio de 2006, 12:22:07 »
primero gracias por contestar tan rapido.quiero hacer un programa que entienda palabras dichas por mi mediante un micrfono, en principio parecia relativamente facil pero en cuanto empece a escribir codigo la cosa se va complicando,ademas es el promer programa que hago. cuando el motor este activado o los motores (lleva dos) si yo le mando cambiar de direccion tamien tiene que hacerlo creo que debera ser mediante una interrupcion.esta interrupcion la tendria siempre activada?.encuanto le llegara sonido por el microfono pararia lo que esta haciendo y atenderia esa señal que le entra por RA0 que es donde esta conectado el micro?.y en 16f84a puedo meter mas interrupciones porque tengo dos bumpers que si choca contra algo tambien tiene que parar y ademas un detector de ultrasonidos.pero en principio me preocupa el programa de la voz.gracias por atenderme

Ahora comprendo, dejame darte mis apreciaciones al respecto

1) Me parece muy ambicioso para ser un primer proyecto

2) Yo que tu estudiaría bien como funciona una interrupción.  Una cosa es tener activada una interrupción y otra es el flag de la misma.  No se a que te refieres con dejar siempre la interrupción activada ni porque dices que lo debes hacer por interrupción.  Si tu manejas un motor de continua con un sentido para un lado o para otro, no veo la necesidad de usar interrupciones para esto ya que el cambio de dirección se producirá en momentos muy separados

3) La parte de la deteccion de los bumpers y todo eso, tampoco hace falta que sea por interrupción.  Estamos hablando de que el micro responde en microsegundos y los motores en milisegundos.  No notarás diferencia. 


Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #7 en: 28 de Julio de 2006, 12:31:13 »
Opino como Maunix, el reconocimiento de voz es una pasada para ser tu primer intento. Y aunque fueras un picmaniaco experimentado, me parece complicado acometerlo con un 16F84.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #8 en: 28 de Julio de 2006, 14:35:59 »
Bueno, yo no postee para no desanimarlo, pero la verdad que hacer reconocimiento de voz con un PIC es algo que me resulta a mi parecer, muy dificil y complejo.

Especialmente cuando uno ve que programas de reconocimiento de voz que vienen para las PC necesitan aun que uno les hable durante horas para configurarlo y que el programa reconozca los patrones de la voz de la persona que lo utilizara y sabiendo que requieren de muchos MB de programacion logica y para almacenamiento posterior ya que estos programas aprenden cuanto uno mas los usa.
La verdad que detectar los patrones, asilar ruidos del medio ambiente, y encima en tiempo real...y con tan poca memoria RAM y ROM y poca capacidad de procesamiento de señales analogicas, me parece sinceramente, un proyecto demasiado ambicioso para mi.
Pero no nos hagas caso, y tu dale para adelante. Que asi surgen los grandes inventos y revoluciones.
Saludos y especialmente, ánimo!! :mrgreen:

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #9 en: 28 de Julio de 2006, 15:07:41 »
Acabo de comprar un telefono movil marca Motorola, modelo MPX220, y descubro maravillado que el muy gracioso me reconoce la voz para activar aplicaciones o discar numeros SIN NECESIDAD DE QUE LO ENTRENE....
Por supuesto, el procesador del coso ese es mucho mas potente que un PIC, pero me parecio un gran adelanto el poder salterme el entrenamiento. Segun el manual, se puede entrenar para mejorar aun mas el reconocimiento.....espectacular!  8)

Saludos.
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #10 en: 28 de Julio de 2006, 15:30:38 »
Sí, nada más lejos de mi intención que desanimar al nuevo compañero. Pero precísamente me parece contraproducente que intente saltar un muro tan alto en su primer intento. Creo que la clave de que se anime es ir superando pequeñas barreras cada vez mayores.

Mi Nokia N70 también reconoce la voz sin entrenamiento; es acojonante.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #11 en: 28 de Julio de 2006, 17:16:41 »
vereis yo no pretendo hacer programas tan ambiciosos como los de los moviles, el mio pretende ser una pequeña trampa para que parezca que los reconoce que me supongo que los de los moviles tambien iran un poco por ahi.
os explico.yo calculo que una silaba tarda 300ms en decirse,de esto no estoy seguro pero da igual de momento.hago un delay con ese tiempo y voy chequeando cuanto tiempo el microfono recibe señal
             300ms==girar izquierda==left
             600ms==atras pasa dos veces por delay
             900ms==adelante tres delay
             1200ms==derecha tres tambien pero habria que decirlo un poco despacio
no se si esto resultara pero voy a ver si lo consgo,incluso se podrian hacer un par de ellas mas

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #12 en: 28 de Julio de 2006, 19:01:32 »
Bien, pero entonces vas a necesitar filtrar la señal de entrada a la banda de frecuencia de la voz humana, e incluso filtrandola, probablemente el medio ambiente haga que se ejecuten comandos al azar de manera bastante seguida. No se que opina el resto.
Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #13 en: 29 de Julio de 2006, 02:06:48 »
Pues sí, imagino que por muchos filtros que le pongas, lo mismo se enciende cuando pase un coche, o cuando suene el teléfono.
De todas formas, por probar no se pierde nada.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: ejecutar dos instrucciones al mismo tiempo
« Respuesta #14 en: 29 de Julio de 2006, 05:35:51 »
bueno veo que os interesais por el tema yo creo que por logica la cosa deberia funcionar mas o menos otra cosa es el microfono, en el robot para el que hacia el programa el microfono es tan malo que ni de coña, de hecho ahi lo trae para hacerlo parar o andar mediante una señal sonora(palmada, silvido etc) y hace algun tiempo haciendo pruebas con el si la tele estaba un poco alta le hacia mas caso a la tele que a mi incluso la recomendacion de los que lo hicieron era ponerle unas tiras de fixo encima. alguien me decia por ahi que me mire lo de las interrupciones y tiene razon es lo que menos controlo.bueno estoy recien salido de una operacion y esperando otra asi que hay veces que tengo pocas ganas de ponerme con el tema pero algo ire haciendo.el microfono habra que buscar algo que discrimine unas ciertas frecuencias.