Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Horloge
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message

Horloge

Posté le 01/05/2014 21:07

Bonjour,
Je sais pas si je suis au bon endroit mais je me demandai comment ce programme pouvait marcher...
Parce qu'il faut que l'add-in tourne toujours quand la calto est éteinte ou que la calto ai quelque chose en Hard qui lui permette de savoir le temps écoulé depuis la dernière extinction ...
Donc voila ça m’intéresse beaucoup et si quelqu'un pouvait m’éclairer sur le sujet


Pages : 1, 2, 3, 4, 5Suivante
LephenixnoirEn ligneAdministrateurPoints: 15757 Défis: 136 Message

Citer : Posté le 01/05/2014 21:07 | #


C'est les syscalls RTC.
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message

Citer : Posté le 01/05/2014 21:12 | #


Ça veut dire qu'en réglant avec RTC_SetDateTime une fois, après si tu appelles RTC_GetTime, il te ressort l'heure exact par rapport a l'heure donné au début ?
mais il faut mettre quoi dans la chaine data ?
LephenixnoirEn ligneAdministrateurPoints: 15757 Défis: 136 Message

Citer : Posté le 01/05/2014 21:13 | #


C'est un tableau de pointeurs sur les données (de mémoire).
C'est détaillé dans la doc.

Ajouté le 01/05/2014 à 21:13 :
Ici, la doc.
Dans le pdf.
TotoyoHors ligneMembre d'honneurPoints: 15943 Défis: 101 Message

Citer : Posté le 01/05/2014 21:50 | #


Je déplace dans "Autres questions" (ex-"Questions diverses", lui-même ex-"Problèmes avec un programme ou de programmation"). N'hésitez pas à laisser un commentaire sur les nouveaux noms des forums, je cherche à les rendre plus clairs et explicites.
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message

Citer : Posté le 01/05/2014 21:54 | #


Merci Totoyo
donc je fait face a un probleme, je sais pas bien utiliser les syscalls
J'ai tenté de faire tourner ca:
#include "fxlib.h"
#include <stdio.h>
#include <stdlib.h>

// PROTO FONCTIONS
int RTC_getTicks();
int SYS_call();
int RTC_getTime(unsigned int *hours, unsigned int *mins, unsigned int *secs, unsigned int *msecs);

// VARIABLES
static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070}; // déclaration des adresses
static int (*SysCall)(int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode; // et des registres (en global)


int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;
    unsigned int hours, mins, secs, msecs;
    char buffer[60];
    
    Bdisp_AllClr_DDVRAM();
    RTC_getTicks();
    RTC_getTime(&hours, &mins, &secs, &msecs);
    
    sprintf(buffer, "%d-%d-%d", hours, mins, secs);
    PrintMini(1,1,buffer,0);

    while(1){
        GetKey(&key);
    }

    return 1;
}

int RTC_getTicks()
{
     return (*SysCall)(0, 0, 0, 0, 0x3B); // on déclare la fonction voulue selon son numéro (ici 0x3B)
}

int RTC_getTime(unsigned int *hours, unsigned int *mins, unsigned int *secs, unsigned int *msecs)
{
     return (*SysCall)(0, 0, 0, 0, 0x03A);
}


int SYS_call(void)
{
     return (*SysCall)(0, 0, 0, 0, 0x42);
}


#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum){return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
#pragma section

Et ca m'a retourné un SE
LephenixnoirEn ligneAdministrateurPoints: 15757 Défis: 136 Message

Citer : Posté le 01/05/2014 21:57 | #


Ça doit être sur le syscall RTC_getTime. Mets-le en commentaire pour voir ?
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message

Citer : Posté le 01/05/2014 22:02 | # | Fichier joint


bon c'est un peu barbare mais la doc est protégée
LephenixnoirEn ligneAdministrateurPoints: 15757 Défis: 136 Message

Citer : Posté le 01/05/2014 22:05 | #


Non, c'est juste que ce sont des images.
Ah oui, int RTC_getTime !
Tu est sûr que tu as lu la documentation ?
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message

Citer : Posté le 01/05/2014 22:12 | #


Je comprend pas
LephenixnoirEn ligneAdministrateurPoints: 15757 Défis: 136 Message

Citer : Posté le 01/05/2014 22:15 | #


Ben, c'est void RTC_getTime(...); !
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message

Citer : Posté le 01/05/2014 22:20 | #


Si je mets void: (E) Void function returns value
LephenixnoirEn ligneAdministrateurPoints: 15757 Défis: 136 Message

Citer : Posté le 01/05/2014 22:21 | #


Oui, parce que dans le code de ta fonction tu as mis return.
Enlève-le.
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message

Citer : Posté le 01/05/2014 22:34 | #


Toujours le SE
LephenixnoirEn ligneAdministrateurPoints: 15757 Défis: 136 Message

Citer : Posté le 01/05/2014 22:39 | #


Quel est le nouveau code ?
Et à quoi correspond SYS_Call ?
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message

Citer : Posté le 01/05/2014 22:58 | #


Le nouveau code est
#include "fxlib.h"
#include <stdio.h>
#include <stdlib.h>

// PROTO FONCTIONS
int RTC_getTicks();
int SYS_call();
void RTC_getTime(unsigned int *hours, unsigned int *mins, unsigned int *secs, unsigned int *msecs);

// VARIABLES
static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070}; // déclaration des adresses
static int (*SysCall)(int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode; // et des registres (en global)


int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;
    unsigned int hours, mins, secs, msecs;
    char buffer[60];
    
    Bdisp_AllClr_DDVRAM();
    RTC_getTicks();
    RTC_getTime(&hours, &mins, &secs, &msecs);
    
    sprintf(buffer, "%d-%d-%d", hours, mins, secs);
    PrintMini(1,1,buffer,0);

    while(1){
        GetKey(&key);
    }

    return 1;
}

int RTC_getTicks()
{
     return (*SysCall)(0, 0, 0, 0, 0x3B); // on déclare la fonction voulue selon son numéro (ici 0x3B)
}

void RTC_getTime(unsigned int *hours, unsigned int *mins, unsigned int *secs, unsigned int *msecs)
{
     (*SysCall)(0, 0, 0, 0, 0x03A);
}


int SYS_call(void)
{
     return (*SysCall)(0, 0, 0, 0, 0x42);
}


#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum){return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
#pragma section


Après j'ai copié l'exemple de de dans le tuto " maitriser le temps donc je sais pas a quoi ça correspond
LephenixnoirEn ligneAdministrateurPoints: 15757 Défis: 136 Message

Citer : Posté le 01/05/2014 23:04 | #


C'est bien l'appel de RTC_getTime() qui génère cette erreur.
Je vais essayer de regarder ce qu'on a dans la doc.

Ajouté le 01/05/2014 à 23:15 :
Bizarre, je n'arrive pas non plus à utiliser le syscall setDateTime().
LancelotHors ligneMembrePoints: 1274 Défis: 160 Message

Citer : Posté le 02/05/2014 10:55 | #


t'as oublié (je crois) syscall.h
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
LephenixnoirEn ligneAdministrateurPoints: 15757 Défis: 136 Message

Citer : Posté le 02/05/2014 11:04 | #


Il n'y en a pas besoin, puisqu'il a déclaré ses protoypes.
Justement, syscall.h contient les define et le (*SysCall) qui sont définis en haut.
Pour preuve, le syscall RTC_getTicks() fonctionne bien.
GollumHors ligneMembrePoints: 1261 Défis: 2 Message

Citer : Posté le 03/05/2014 10:58 | #


mais le problème, c'est que le syscall n'est plus valide en SH4, si ?
https://telegram.me/BrokenClock
Je suis de l'autre coté de la manche maintenant. Yay.
LephenixnoirEn ligneAdministrateurPoints: 15757 Défis: 136 Message

Citer : Posté le 03/05/2014 11:03 | #


Ça se pourrait... mais c'est invraisemblable, ça reste un syscall primaire du sytème RTC.
C'est juste une idée de ta part, ou y a-t-il une source particulière (si oui, laquelle) ?
Pages : 1, 2, 3, 4, 5Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 84 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd