[PSP] Temporizando 1 segundo

Hola,

Desde que lei el código del Power Management 0.1 me ha picado el gusanillo de la programación.

Por ahora, (debido a que he estado de vacaciones) no tengo un entorno de programación montado, lo que si he hecho es leerme gran parte de la documentación de la PSPSDK en busca de lo que necesito.

Os pido que me deis ideas o me resolvais mis dudas, no quiero que programeis por mi ni nada parecido (no me jodais la diversión jjejejej)

Despues de la intro voy al tema:

1) Necesito hacer una temporización exacta (en la medida de lo posible), e invulnerable al usuario.

2) También me gustaría que no consumiera recursos de la PSP, para ello lo que quiero evitar es trabajar con continuos chequeos de valores de regitros o continuas llamadas a funciones para chequear valores.

El primero de mis requisitos me llava a descartar prácticamente todas las funciones temporales del SDK, ya que se basan en la hora del sistema, ¿y si el usuario la cambia? Esto se podría bloquear, pero quiero que sea transparente para el usuario.

Para no repetir mis incongruencias (jejejje) citaré los post del otro mensaje:

GaritoMan escribió:Para hacer el timer de apagado, necesito una interrupción temporal, ya que paso de estar chequeando el timer continuamente, es una carga para la CPU absurda totalmente.

A ver que camino os parece mejor:

*Usar sceKernelAlarm--> de X microsegundos y a partir del su interrupción contar segundos o minutos. (creo que este es el mejor camino)

*Generar un vTimer que también va en microseg pero... de los que desconozco si generan alguna interrupción al desbordar.

*Tirar del interrupt_manager y sus PSP_SYSTIMER(X) de los que sólo he encontrado que si los chequeas, siempre están a 0 smile_:-(




De mi mismo escribió:Si, existen las funciones miticas de C, el timestamp, el reloj epoch, que te marca los segundos desde el 1 de enero de 1970. También tienes otra que te dice los segundos desde las 12 de la noche.

Estas funciones me servirian, pero quiero hacer algo más depurado, y que no dependa de que el usuario cambie la fecha o la hora del sistema, algo poco habitual, pero que petaría la función. Además de que consumiría recursos sólo verificando dichos valores.

Parece ser que puedo usar una interrupción que se genera cada 1/60 segundos la PSP_VBLANK_INT.
La putada es que en la documentación que he leido (por ahora) no me dice a que función salta, sino que tengo que usar "QueryIntrHandlerInfo" para saber si está habilitada, o sea que me ahorro la parte en la que el user podría crujir el programa, pero sigo teniendo que usar las iteraciones para ver si ha saltado a esa interrupción.

Tengo que seguir aprendiendo, ya que no se si el sdk está preparado para que salte a interrupciones (o eventos) o simplemente hay que chequear valores, flags...


Entre mis divagaciones he llagado a una duda transcendental:

¿Cómo trabaja la SDK con las interrupciones? ¿hay una ruptura del programa cuando salta alguna de las interrupciones?

Demasiadas dudas, que tal vez me podais resolver o que tal vez sirvan a algien si yo las resuelvo.

Mil Gracias por Adelantado ;)
Prueba esto, es un ejemplo del PSPSDK yo he implementado mi sistema basado en este codigo para poder mostrar durante un segundo un mensaje en el VSH.

El tick handler del código está ya preparado para funcionar a una resolucion de aproximadamente un tick cada segundo
Un millón de gracias, es lo que andaba buscando.

Aquí está el hilo original de adrahil en ps2dev.

Seguiré haciendo pruebas y si quieres empiezo con el "sleep mode", de todas formas, si prefieres hacerlo tu solo (cosa que entiendo) tiraré con otro mini proyecto que tengo en mente:

Un prx que apague la PSP desde el controlador ;)


Lo dicho, Gracias ;)
Muy agradecido si quieres hacer el sleep mod, yo desde luego de integrarlo en mi codigo y convertirlo en un proyecto de equipo
Hola,

Lamento no haberte respondido antes, he estado offline de nuevo (demasiada vida social....)

En entorno de compilación ya lo tengo montado y ahora estoy haciendo "pequeñas pruebas" para ver como funciona la filosofia de la PSP.

Lo del "sleep mode" yo lo intento hacer (ya te digo que mi tiempo es muy reducido), pero si te apetece hacerlo a ti, no tengo ningún problema.

Por cierto, gracias por la última versión del Power Management , sigo aprendiendo de ti ;)
4 respuestas