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 ---
Forum général sur le langage C !

Modérateur : Jérémy

EEPROM
satinas
Expert
Expert
Messages : 1535
Enregistré en : novembre 2015

#21 Message par satinas » sam. 6 juin 2026 20:56

Une variable globale et un paramètre de fonction sont 2 choses différentes. Le paramètre est une variable éphémère créée sur la pile lors de l'appel de fonction, que la fonction utilise, et cette variable disparaît à la fin d'exécution de la fonction. Quel rapport avec une variable globale ?
Le C a accepté car il a bien créée cette variable en plus de la variable globale, mais le programme est confus, et c'est un appel de bugs.

Si tu veux que je debugge, fais moi un zip de tous les sources et met le en message perso. Pas un zip du projet car ce serait trop gros.

EEPROM
Stefox
Débutant
Débutant
Messages : 83
Enregistré en : juillet 2025

#22 Message par Stefox » sam. 6 juin 2026 21:01

Ok ok, j'ai donc modifié la fonction, je l'ai appelé comme ceci du coup : void SaveSetPointHeater(uint8_t newSetPoint_Temp) :-D

EEPROM
satinas
Expert
Expert
Messages : 1535
Enregistré en : novembre 2015

#23 Message par satinas » sam. 6 juin 2026 21:16

Tu t'embêtes pour rien, le nom de la fonction n'est pas assez clair ?
void SaveSetPointHeater(uint8_t val)
J'ai pour habitude de mettre les paramètres (variables locales) en minuscules.

EEPROM
Stefox
Débutant
Débutant
Messages : 83
Enregistré en : juillet 2025

#24 Message par Stefox » sam. 6 juin 2026 21:18

C'est vrai que ça fait beaucoup plus court avec juste <val> en soit..

Normlement, je t'ai envoyé les fichiers :wink:

EEPROM
satinas
Expert
Expert
Messages : 1535
Enregistré en : novembre 2015

#25 Message par satinas » sam. 6 juin 2026 21:51

Bien reçu, ça compile, faut voir ce que cela donne, pas sûr d'avoir des 18F46K22.
Pour le délai voir ici

EEPROM
satinas
Expert
Expert
Messages : 1535
Enregistré en : novembre 2015

#26 Message par satinas » dim. 7 juin 2026 07:42

Il reste encore des adresses incorrectes 0x58, pourquoi créer des defines et ne pas les utiliser.
Commence par faire en sorte qu'ils n'y ait plus de warnings à la compilation (cast). Cela t'enlèvera au moins un bug. Les warnings "This function is never called" peuvent rester, bien que si non appelées ces fonctions devraient être en commentaire.

EEPROM
Stefox
Débutant
Débutant
Messages : 83
Enregistré en : juillet 2025

#27 Message par Stefox » dim. 7 juin 2026 09:56

J'ai corrigé les 2 "0x58" que j'avais pas vu et j'ai mis le define a la place, comme tu m'as dit.

Les 5 warnings sont également corrigés :)

Et les fonctions existantes mais non utilisées sont en /* */

Je te renvoie tout ça :-D

EEPROM
satinas
Expert
Expert
Messages : 1535
Enregistré en : novembre 2015

#28 Message par satinas » dim. 7 juin 2026 10:13

Je le teste au simulateur.
Nan, renvoie rien, j'en ai assez comme cela :-)

EEPROM
satinas
Expert
Expert
Messages : 1535
Enregistré en : novembre 2015

#29 Message par satinas » dim. 7 juin 2026 11:29

J'ai du mal à simuler sans RTC.

Je ne vois pas pourquoi tu essaies de stocker à la fois sur les 2 zones eeprom de 0x4000.
Le premier bloc fait 64k, c'est pas assez ?

EEPROM_ClearBank_0() efface toujours la zone réservée. Pourquoi tu ne mets pas la zone réservée en 0x8000 par exemple

Regarde ce que cela donne en inversant les defines :

Code : Tout sélectionner

#define SETPOINT_HEAT               0x3FFC
#define CURRENT_ADDR_MSB            0x3FFD
#define CURRENT_ADDR_LSB            0x3FFE
#define SETPOINT_BRIGHTNESS_SEGMENT 0x3FFF


Pourquoi tu ne veux pas faire la fonction debug sur Uart ?

EEPROM
Stefox
Débutant
Débutant
Messages : 83
Enregistré en : juillet 2025

#30 Message par Stefox » dim. 7 juin 2026 11:40

J'écris sur les 2 banques pour usé le moins possible l'eeprom, chaque écriture use un peu plus la cellule de ce que j'ai lu, donc je profite d'un maximum de la plage des banques. J'ai quand même bridé jusque 0x3fff car c'est assez long la recherche sinon et j'ai pas envie d'attendre 30 secondes voir + pour qu'il aille me rechercher une valeur.

Je ne vois pas en quoi EEPROM_ClearBank_0() supprime tout, je fais : for (uint16_t addr = 0; addr < EEPROM_RESERVED_START; addr += PAGE_SIZE)

EEPROM_RESERVED_START vaut 0x3FFB et ma première valeur réservé est a 0x3FFC et je save ma valeur réservé dans une variable puis l'a réecrit dans l'eeprom après le clear bank

Je n'utilise pas l'UART car ça ne fonctionne tout simplement pas sur ma carte, j'ai préféré donc l'usage de mon LCD

J'ai inversé les adresses comme tu m'as demandé et le problème reste le même, SP Temp n'est pas save après coupure, il se reset a 138 (Correspond a l'ancienne valeur du SP Brighntess qui vaut 0x8A (valeur vient du Settings.C ligne 901))


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 13 invités