Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Gérard
Combien de if avant plantage?
- Claudius
Passioné- Messages : 260
- Âge : 69
- Enregistré en : septembre 2015
- Localisation : ELANCOURT (78 - YVELINES)
- Contact :
Bonsoir,
Si un nombre "importants" et encastrés de if / else fait exploser la pile, changez tout de suite d'interpréteur et/ou de compilateur car vraiment pas normal pour moi ... Allez voir le code assembleur généré peut s'assurer du contraire ;-))
Si un nombre "importants" et encastrés de if / else fait exploser la pile, changez tout de suite d'interpréteur et/ou de compilateur car vraiment pas normal pour moi ... Allez voir le code assembleur généré peut s'assurer du contraire ;-))
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
Combien de if avant plantage?
- Gérard
Expert- Messages : 1644
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
maï a écrit :Tres heureux,de t'avoir apporté quelques lumières sur la pile, puisque la question était :Combien de if avant plantage , mais c'est vrai tu as fait beaucoup de breloques .Je trouves sympa breloques,cela fait montre à gousset .
C'est pas grave Gérard, comme tu fais c'est très bien c'est toi qui a un problème pas moi.
PS:Par contre je vois très bien comment, tu fais le passage E/H.Et pour mon lien, fait un temps arrêt sur 1996 puisque mon fil #8 de toute évidence ne ta pas convaincuJe ne sais pas sur quoi est réglé ta breloque
Ce sera cool de ne pas déformer mon prénom.
Je ne vois pas comment je réglerais des breloques, je n'en ai pas ...
Combien de if avant plantage?
- Gérard
Expert- Messages : 1644
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
Claudius a écrit :Bonsoir,
Si un nombre "importants" et encastrés de if / else fait exploser la pile, changez tout de suite d'interpréteur et/ou de compilateur car vraiment pas normal pour moi ... Allez voir le code assembleur généré peut s'assurer du contraire ;-))
Bonjour,
Les 16F ont 8 niveaux de pile et certains sont réservés au compilateur. Ceci dit, j'ai regardé le fichier .lst, les if ne provoque pas d'incrément de la pile. Seul les appels I2C que je fais dans ce S/P le font.
Combien de if avant plantage?
Combien de if avant plantage?
Gérard a écrit :maï, tu boudes?
NON pas tres dispo, je monte une cabane au fond de mon jardin, je ne fais que passer
Pour revenir a ton fil, c'est donc pas les IF donc pour moi affaire réglé .
Après sur ta méthode, tu sais très bien ce que j’en pense.Donc perso je laisse tomber,allez courage je suis sur que tu vas trouver
A+
Combien de if avant plantage?
- Gérard
Expert- Messages : 1644
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
Bonjour,
J'ai modifié les tests et ça fonctionne.
Eté --> hiver :
Hiver --> été :
Les tests après le "if" ont supprimé le problème.
Quelques explications :
les valeurs sont codées en BCD par la RTC donc mois = 16 (BCD) = 10 (décimal), DATE_RTC > 36 (BCD) correspond à 24.
JOUR_RTC = 7 pour dimanche.
Maintenant l'horloge à 4 afficheurs 7 segments bleus de 1.8 inch fonctionne parfaitement.
J'ai modifié les tests et ça fonctionne.
Eté --> hiver :
Code : Tout sélectionner
IF (MOIS_RTC = 16) and (BIT_HIVER = 0) and (JOUR_RTC = 7) and (DATE_RTC > 36) and (H_RTC = 3) then
H_RTC = 2
BIT_HIVER = 1
'màj RTC
I2C1_START()
I2C1_WR(RTC_WR) 'adresse RTC
I2C1_WR(2) 'adresse heures
I2C1_WR(H_RTC) 'mise à l'heure d'hiver
I2C1_STOP()
'màj bit_hiver
EEPROM_WRITE(0, BIT_HIVER) 'EEPROM du PIC
DELAY_MS(20)
END IF
Hiver --> été :
Code : Tout sélectionner
IF (MOIS_RTC = 3) and (JOUR_RTC = 7) and (DATE_RTC > 36) and (H_RTC = 2) then
H_RTC = 3
BIT_HIVER = 0
'màj RTC
I2C1_START()
I2C1_WR(RTC_WR) 'adresse RTC
I2C1_WR(2) 'adresse heures
I2C1_WR(H_RTC) 'mise à l'heure d'été
I2C1_STOP()
'màj bit_hiver
EEPROM_WRITE(0, BIT_HIVER) 'EEPROM du PIC
DELAY_MS(20)
END IF
Les tests après le "if" ont supprimé le problème.
Quelques explications :
les valeurs sont codées en BCD par la RTC donc mois = 16 (BCD) = 10 (décimal), DATE_RTC > 36 (BCD) correspond à 24.
JOUR_RTC = 7 pour dimanche.
Maintenant l'horloge à 4 afficheurs 7 segments bleus de 1.8 inch fonctionne parfaitement.
Combien de if avant plantage?
Bonsoir Gérard,
j'ai lu plus haut que certains conseillent de changer de compilateur si cette situation survient.
En réalité la gestion de la pile n'est pas à la charge du compilateur mais bel et bien du programmeur.
Il n'est pas du tout normal d'utiliser une ribambelle de if imbriqués dans un code.
Sans vouloir vexer personne, la programmation c'est pas pisser du code sans regarder les voyants, un peu comme pour la conduite on ne regarde pas son volant mais ce qui se passe autour.
Comme pour l'électronique hardware, tout se calcule et se définit au préalable.
Par exemple en C on dispose de l'instruction switch, trop rarement utilisée par les hobbystes, mais bien plus élégante dans la plupart des cas.
J'ignore si il y a un équivalent en basic.
Il y a bien d'autres astuces également pour éviter les codes spaghettis.
Je regarderai de plus près ton code et te donnerai mon avis quand j'aurai un peu plus de temps.
@+
j'ai lu plus haut que certains conseillent de changer de compilateur si cette situation survient.
En réalité la gestion de la pile n'est pas à la charge du compilateur mais bel et bien du programmeur.
Il n'est pas du tout normal d'utiliser une ribambelle de if imbriqués dans un code.
Sans vouloir vexer personne, la programmation c'est pas pisser du code sans regarder les voyants, un peu comme pour la conduite on ne regarde pas son volant mais ce qui se passe autour.
Comme pour l'électronique hardware, tout se calcule et se définit au préalable.
Par exemple en C on dispose de l'instruction switch, trop rarement utilisée par les hobbystes, mais bien plus élégante dans la plupart des cas.
J'ignore si il y a un équivalent en basic.
Il y a bien d'autres astuces également pour éviter les codes spaghettis.
Je regarderai de plus près ton code et te donnerai mon avis quand j'aurai un peu plus de temps.
@+
Combien de if avant plantage?
Combien de if avant plantage?
- Gérard
Expert- Messages : 1644
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
HULK28 a écrit :Bon ben je vois que tu t'en es sorti, bizarrement je n'avais pas ton dernier message avant d'écrire le mien, alors qu'il date du 29 dec...
Ici tu trouveras le code complet en #22
Non , ne sors pas, tes conseils seront toujours les bienvenus. Je m'en suis sorti avec les "and" dans la ligne "if".
"Switch" existe en BasicMikro.
Combien de if avant plantage?
Pas bien saisis,que vient faire la gestion de la pile Donc les GOTOS ou et BRA(18F) influent sur la pile, à BON..... car si je ne trompe pas, un test est du style:
Maintenant que certains compil ont des restrictions, niveau opérandes, peut-être,est la c'est bien LE COMPIL.Mais la, on est loin du jeux instructions,car à ce niveau, je te remplis la flash .OK c'est pas beau.
Code : Tout sélectionner
BTFSS Temp,1 ;
GOTO Digit30 ;IDEM
Maintenant que certains compil ont des restrictions, niveau opérandes, peut-être,est la c'est bien LE COMPIL.Mais la, on est loin du jeux instructions,car à ce niveau, je te remplis la flash .OK c'est pas beau.
Retourner vers « Langage BASIC & PASCAL »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 28 invités