Autor Tema: Ayuda con esperas necesaria para completar 1 segundo después de realizar rutinas  (Leído 2121 veces)

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

Desconectado giff

  • PIC10
  • *
  • Mensajes: 31
    • Ignogantes
Hasta hace poco estaba ilusionado con realizar mi proyecto de tesis con CCS RTOS ya que no funciona en 48 Mhz por lo que luego baje a 20 Mhz pero ahi no podré no usar USB Full Speed (12 Mbps). Tengo las rutinas listas ya, o la mayoría y me gustaría probar con interrupción de TMR0 a 16 bit ocurriendo la interrupción cada 1 seg. En ese segundo haría:

Leer un canal ADC con referencia dada por el pin Vref+.
Usar un comparador análogo.
Enviar datos por USB.
y usar el temporizador.

También guardaré los datos en EEPROM interna (cada 1 o quizás cada 5 minuto).

El problema que tengo es que no me imagino como hacer que, completadas todas esas rutinas el PIC18f2550 no haga nada y espere a la interrupción que diga: ya PIC, "levantate y camina". No se como abarcar eso y es ahí donde pido una mano amiga que me diga por donde puedo empezar.

PD: CCS 4.104.
Mi blog sobre apuntes de electrónica: www.ignogantes.net

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Ayuda con esperas necesaria para completar 1 segundo después de realizar rutinas
« Respuesta #1 en: 17 de Febrero de 2010, 20:56:56 »
Hola giff, lo que puedes hacer es con el TIMER0 a 16 bits configurarlo para que desborde cada segundo (en el datasheet de tu pic encontraras como), y cada que ocurre la interrupcion activar un flag, ejemplos de como usar interrupciones y con el timer0 hay por montones en el foro, es solo que te pongas a buscar un poquito.

Y tu codigo iria asi

if(flag_segundo)
   {
   flag_segundo = 0;
    ///aqui ejecutas todo el codigo que desees cada segundo.   
    }


saludos.
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado septiembre_negro

  • PIC18
  • ****
  • Mensajes: 310
Re: Ayuda con esperas necesaria para completar 1 segundo después de realizar rutinas
« Respuesta #2 en: 17 de Febrero de 2010, 21:05:57 »
Citar
El problema que tengo es que no me imagino como hacer que, completadas todas esas rutinas el PIC18f2550 no haga nada y espere a la interrupción que diga: ya PIC, "levantate y camina". No se como abarcar eso y es ahí donde pido una mano amiga que me diga por donde puedo empezar.

Mmm  pues  para esto hay  varios caminos puedes poner a dormir el micro sleep creo que se llama y despertarlo por alguna de las interrupciones  con que cuenta.
Otra seria que caiga en un bucle infinito y que salga de el por algún evento externo.


Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ayuda con esperas necesaria para completar 1 segundo después de realizar rutinas
« Respuesta #3 en: 17 de Febrero de 2010, 21:24:48 »
Citar
El problema que tengo es que no me imagino como hacer que, completadas todas esas rutinas el PIC18f2550 no haga nada y espere a la interrupción que diga: ya PIC, "levantate y camina". No se como abarcar eso y es ahí donde pido una mano amiga que me diga por donde puedo empezar.

Mmm  pues  para esto hay  varios caminos puedes poner a dormir el micro sleep creo que se llama y despertarlo por alguna de las interrupciones  con que cuenta.

Ponerlo a dormir no es una solución, por lo que tengo entendido de un Sleep se sale con un reset, WachDog, Interrupción externa, Cambio de estado de RB4-RB7 y alguna interrupción de un periférico como UART.  :?
No contesto mensajes privados, las consultas en el foro

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Ayuda con esperas necesaria para completar 1 segundo después de realizar rutinas
« Respuesta #4 en: 17 de Febrero de 2010, 21:43:01 »
Hola
Tu mismo das en palabras la respuesta a tu problema. Usa una variable para que el procesador sepa si debe o no hacer si trabajo, me explico, si esa variable es 0, no ha nada y se queda esperando hasta que sea 1, y lo interesante esta en que cada segundo pasa a w
1.

Despues que detectas esa variable en 1, haces lo que debes y al finalizar la pasas a 0.

Desconectado giff

  • PIC10
  • *
  • Mensajes: 31
    • Ignogantes
Re: Ayuda con esperas necesaria para completar 1 segundo después de realizar rutinas
« Respuesta #5 en: 17 de Febrero de 2010, 23:51:27 »
Hola giff, lo que puedes hacer es con el TIMER0 a 16 bits configurarlo para que desborde cada segundo (en el datasheet de tu pic encontraras como), y cada que ocurre la interrupcion activar un flag, ejemplos de como usar interrupciones y con el timer0 hay por montones en el foro, es solo que te pongas a buscar un poquito.

saludos.

Eso mismo!, antes de escribir me lei la seccion de timers presente en el datasheet. deseo usar el Timer 0 en 16 bits, no es problema generar la interrupcion por desborde en 1 seg (ahi calculo el valor que debo cargar). Puedo generar ~1.3 segs a 48 Mhz con preescaler 256 con fondo de escala de 65536 cuentas asi que estamos sobrados de cariño.


Código: [Seleccionar]
Otra seria que caiga en un bucle infinito y que salga de el por algún evento externo.
Me parece buena idea, ya que una vez finalizada las tareas el pic no hara nada productivo (quizás seria bueno dejar que lea si del pc necesita obtener algun dato)

Muchas gracias gente por su ayuda
Mi blog sobre apuntes de electrónica: www.ignogantes.net