Re: bizzarerie Eeprom =?ISO-8859-1?Q?=B5c?=

Peut il s'agir d'un parasite ? J'aimerais vraiment savoir pourquoi mon

> eeprom s'est brusquement remis =E0 FF.

pour =E9crire une valeur, il faut effacer la pr=E9c=E9dente. L'=E9lectronique du PIC ne va pas regarder quels bits sont d=E9j=E0 =E0 0 : il va tout "effacer" (remettre =E0 1) puis mettre =E0 0 les bits que tu as indiqu=E9s.

il est probable que tu aies =E9teint en plein milieu d'un cycle d'effacement.

c'est pour =E7a que la d=E9tection FIABLE qu'une valeur a bien =E9t=E9 =E9crite est assez complexe. Il y a des algorithmes assez pointus pour s'assurer qu'aucun cas particulier ne vienne donner une valeur fausse. Habituellement il faut 3 ou 4 valeurs diff=E9rentes =E9crites successivement pour distinguer tous les cas possibles.

Merci > Emile

yg

--=20

formatting link
/
formatting link

Reply to
whygee
Loading thread data ...

Oui, je pense aussi que le fait de mettre en/hors tension le pic n'est pas très bon, il faut respecter certains timings. L'écriture en eeprom prend qq dizaines de ms, et si tu coupes l'alim en plein milieu, des résultats inattendus sont à prévoir.

Pourquoi mettre hors tension le pic ?

JJ

Reply to
jj

J'ai remis PWRT sur ON et les problemes ont disparus , le soucis c'est que j'ai besoin d'un d=E9marrage tr=E8s rapide et donc je voulais =E9conomiser les 72 ms que prend la fonction PWRT. C'est une application ou mon pic ne poss=E8de pas d'alimention en direct , celle ci est envoy=E9e par un syst=E8me externe. C'est pour cela que lors de la mise sous tension le programme doit sexecuter le plus rapidement possible.

Y a til une autre solution ? Lors de la mise sous tension rapide je n'ecris pas dans l'eeprom je ne fais que lire dedans.

Emile

Reply to
Emile

J'ai remis PWRT sur ON et les problemes ont disparus , le soucis c'est que j'ai besoin d'un démarrage très rapide et donc je voulais économiser les 72 ms que prend la fonction PWRT. C'est une application ou mon pic ne possède pas d'alimention en direct , celle ci est envoyée par un système externe. C'est pour cela que lors de la mise sous tension le programme doit sexecuter le plus rapidement possible.

Y a til une autre solution ? Lors de la mise sous tension rapide je n'ecris pas dans l'eeprom je ne fais que lire dedans. ============= De préférence ( et recommandé) il faut toujours prévoir une pause (même brève) , en début de main avant le lancement de la boucle de travail , ( attente de chargement des condensateurs par exemple et d'une tension nominale stable ) Il suffit d'essayer "avec" et sans cette pause pour s'en assurer Essayer également de temporiser les fonctions lancées par des boutons poussoirs (anti-rebond)

Reply to
maioré

on

e
,

Meme avec une temps ca d=E9conne...

Quand PWRT (power up timer ) est activ=E9 tout marche (mais je perds 72 ms) et quand je l'active ca beugue de suite , l'eeprom s'efface toute seule et met des valeurs incoh=E9rentes. Vraiment surprenant , j'ai mis un RC sur MCLR avec une 100nF et une

4,7 K ca ne change rien

Emile po content :(

Reply to
Emile

"Emile" a écrit Meme avec une temps ca déconne...

Quand PWRT (power up timer ) est activé tout marche (mais je perds 72 ms) et quand je l'active ca beugue de suite , l'eeprom s'efface toute seule et met des valeurs incohérentes. Vraiment surprenant , j'ai mis un RC sur MCLR avec une 100nF et une

4,7 K ca ne change rien ============= Pas trop surprenant puisque cela fonctionne lorsque la validation du reset est activée . Essaie de configurer MCLR en interne (NOMCLR), mais si les valeurs sont standards cela n'est pas la cause Voir aussi si elle est activée, la gestion de WDT Pour le reste, revoir ... et ... revoir ... la programmation , ainsi que les connexions qui peuvent etre aussi la cause d'un dysfonctionnement Bon courage .
Reply to
maioré

"Emile" a écrit Bonjour à tous.

une question que je me pose suite à des essais.

Par défaut les valeurs contenues dans l'eeprom sont égales à 255 , soit FF en héxa. ================== Oui , mais ces cellules mémoires ne sont pas volatiles , elles ne reprennent leur valeur de défaut (0xFF) que lors d'une re-programmation du chip ou par programme (Write_eeprom) . Si donc la valeur change lors d'un raz ou d'une coupure de l'alimentation cela indique obligatoirement que ce changement est du au programme , que la fonction d'ecriture à été appelée (En rappelant comme il l'a été dit que cette opération réclame "un certain temps") L'ideal est de vérifier la fin de l'ecriture (lecture flag EEIF) veiller aussi qu'il n'y ai pas d'interruption pendant l'ecriture . Le fait de "jouer" avec l'interrupteur d'alimentation peut interrompre un cycle d'écriture et provoquer ce fonctionnement erratique

Reply to
maioré

On Mar 13, 1:00 am, Emile

C'est normal que ca merde puisque quand tu coupes l'alim cela interrompt le cycle d'=E9criture de l'EEprom.

Pas si surprenant, cela ne fait jamais que 470 us.

Reply to
Jean-Christophe

Lorsque j'alimente d=E9salimente le pic avec ma pointe de touche ca d=E9conne.

par contre quand je relis l'alim de ce meme pic =E0 la sortie d'un autre pic que j'ai mis en fonction clignotage (clignotement d'une sortie toutes les 10 ms),ca marche nickel , donc je pense qu'il sagit d'un rebond gener=E9 par ma pointe de touche ... car le pic qui clignote envoie des front montants descendants propres pas comme ma pointe de touche ...

Il faudrait peut etre un trigger de schmidt pour nettoyer tout cela et avoir une alim plus stable ?

Emile

Reply to
Emile

On Mar 13, 7:47 pm, Emile

Il y a quelque temps, une nana avait demand=E9 ici sur fse des oscillogrammes d'un contact =E9tabli par interrupteur. C'est d=E9ja assez crade, mais ta pointe de touche est pire : ton uC doit rebooter 50 fois =E0 chaque contact ...

Dans le mille, Emile.

Ce serait charitable de nous exposer ce que tu cherches =E0 faire =E0 ce pauvre uC ... ?

Reply to
Jean-Christophe

Le 12/03/2011 17:07, maioré a écrit :

Bonjour,

dans le datasheet il est précisé:

13.6 PROTECTION AGAINST SPURIOUS WRITE There are conditions when the device may not want to write to the data EEPROM memory. To protect against spurious EEPROM writes, various mechanisms have been built in. On power-up, WREN is cleared. Also when enabled, the Power-up Timer (72 ms duration) prevents EEPROM write. The write initiate sequence, and the WREN bit together help prevent an accidental write during brown-out, power glitch, or software malfunction.

Ton problème n'est pas du au fait de lire l'eeprom, mais à des écritures parasites crées par le pic lui même.

Tu ne pourra pas passer outre ces 72ms.

JJ

Reply to
jj

on

pause (m=EAme

avail ,

on

utons

tures

Probl=E8me regl=E9 en changeant le regulo 7805 par un LM2940CT low drop out .

pu de soucis ... ! etrange non ?

Emile

Reply to
Emile

:

mon

st

om

t

(m me

ail ,

sion

ns

Quand j'aurai mon oscillo je te dirai mais je pense que si ... faut dire avec le LM j'ai 2 condo en IN et 2 en OUT , le 7805 je n'en avais pas mis...

Emile

Reply to
Emile

On Mar 16, 11:48=A0am, Emile

| On 16 mar, 08:09, jj | Tu n'aurais pas des oscillations sur le 7805?

Pas bon. En g=E9n=E9ral on l'encadre avec quelques centaines de nF =E0 la masse ( en plus des uF pour le filtrage ) justement pour lui garantir sa stabilit=E9.

Reply to
Jean-Christophe

ben cherches pas, c'est ça.

le 7805 est un très bon oscillateur, il peut accessoirement servir en régulateur!

JJ

Reply to
jj

e news:

ote:

oi mon

'est

prom

es

est

e (m me

avail ,

ension

tons

s

LOL on ne se moque pas ! :) donc pas trop De risque de laisser d=E9sactiv=E9 le pwrt ?

Emile

Reply to
Emile

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.