Ett EEPROM värde "sitter fast"
Ett EEPROM värde "sitter fast"
"EE Data Memory is not blank starting at adress 0x0004"
Har pickit2 2.60 men idag såg jag att min 16f690 krets har fastnat med värde $05 på adress 04.
Har självklart raderat kretsen men värdet ligger kvar där ändå. Någon som vet vad som har hänt?
Har pickit2 2.60 men idag såg jag att min 16f690 krets har fastnat med värde $05 på adress 04.
Har självklart raderat kretsen men värdet ligger kvar där ändå. Någon som vet vad som har hänt?
Re: Ett EEPROM värde "sitter fast"
Kolla så att EEPROM verkligen är med i den radering som körs.
Jag vet inte säkert, men jag antar att man kan radera Flash
och EEPROM separat...
Jag vet inte säkert, men jag antar att man kan radera Flash
och EEPROM separat...
Re: Ett EEPROM värde "sitter fast"
Alla andra EEPROM adresser på Pic'en fungererar att skriva till sedan radera.
Sodjan: Vad jag vet så finns det ingen funktion i det programet som kan radera separat flash och EEPROM.
Har däremot lekt väldigt mycket med det interna EEPROM på just den kretsen.
Från Microchip datablad:
"- 1,000,000 write EEPROM endurance"
Kan det vara så att jag har lekt för mycket?
Sodjan: Vad jag vet så finns det ingen funktion i det programet som kan radera separat flash och EEPROM.
Har däremot lekt väldigt mycket med det interna EEPROM på just den kretsen.
Från Microchip datablad:
"- 1,000,000 write EEPROM endurance"
Kan det vara så att jag har lekt för mycket?
Re: Ett EEPROM värde "sitter fast"
Det är 100.000 R/W garanterat och 1M typiskt på de vanliga 5V PIC. Detta gäller vid 25 grader, är kretsen varmare blir det färre. Det gäller även att inte överskrida någon annan spec, som t.ex. Vdd. Skulle tro att det har en kraftig negativ inverkan.
1M är mycket, men med ett felfungerande program kan detta antal uppnås förfärande fort...
Lägg in en timer eller annan form av spärr mot täta skrivningar när ett program testas. Denna kod kan och bör återanvändas till olika projekt så den är maximalt fri från buggar. Det kan rädda eeprom ifall där uppstår en oväntad loop....
Det är också bra att när t.ex. när lagrade värden justeras med att stega dessa på ett par knappar ha en fördröjning så att eeprom inte skrivs omedelbart för varje steg. Speciellt viktigt med de nya PIC som är en eller två tiopotenser sämre när det gäller flash endurance.
1M är mycket, men med ett felfungerande program kan detta antal uppnås förfärande fort...
Lägg in en timer eller annan form av spärr mot täta skrivningar när ett program testas. Denna kod kan och bör återanvändas till olika projekt så den är maximalt fri från buggar. Det kan rädda eeprom ifall där uppstår en oväntad loop....
Det är också bra att när t.ex. när lagrade värden justeras med att stega dessa på ett par knappar ha en fördröjning så att eeprom inte skrivs omedelbart för varje steg. Speciellt viktigt med de nya PIC som är en eller två tiopotenser sämre när det gäller flash endurance.
Re: Ett EEPROM värde "sitter fast"
> Kan det vara så att jag har lekt för mycket?
Hur fasen ska någon annan än du kunna veta hur mycket du har "lekt" !!??
Hur fasen ska någon annan än du kunna veta hur mycket du har "lekt" !!??
Re: Ett EEPROM värde "sitter fast"
Okej om jag forumlerar mig så här då:sodjan skrev:> Kan det vara så att jag har lekt för mycket?
Hur fasen ska någon annan än du kunna veta hur mycket du har "lekt" !!??
Om man endast programmerar en loop att den skriver till samma adress med ett värde + 1. Alltså helt utan några pauser eller liknande.
I runda slängar hur länge skulle det ta innan PIC'en hade skrivit till EEPROM'et 100k gånger?
Re: Ett EEPROM värde "sitter fast"
Vi vet ju inte vad din loop har gjort, men vi kan väl anta att den endast skrivit och väntat på flaggan som säger att det är klart. Databladet säger nog hur lång skrivtiden till EEPROM är. Multiplicera det med 100k så har du svaret.
Re: Ett EEPROM värde "sitter fast"
> I runda slängar hur länge skulle det ta innan PIC'en hade skrivit till EEPROM'et 100k gånger?
Det är ju matte från mellanstadiet ungefär...
Antal sekunder = 100.000 delat med antalet skrivningar/s.
Det finns absolut ingenting i denna tråd som säger hur ofta
du skriver, så hur 17 ska någon annan än du kunna veta det ?
Det är ju matte från mellanstadiet ungefär...
Antal sekunder = 100.000 delat med antalet skrivningar/s.
Det finns absolut ingenting i denna tråd som säger hur ofta
du skriver, så hur 17 ska någon annan än du kunna veta det ?
Re: Ett EEPROM värde "sitter fast"
Jo jag skrev det?sodjan skrev: Det finns absolut ingenting i denna tråd som säger hur ofta
du skriver, så hur 17 ska någon annan än du kunna veta det ?
Som bearing antog att den ENDAST skulle skriva till EEPROM'et i en loop!
Jag kollade i databladet och fick ut mitt svar: 10 minuter!
Så jag får skylla mig själv, men vi alla har väll ändå varit nybörjare någon gång.
Re: Ett EEPROM värde "sitter fast"
5 ms per skrivning => 200 skrivningar/s.
100.000/200 = 500 s eller lite drygt 8 min. Så 10 minuter är nog en bra gissning.
Det är nog inte så det är tänkt att man ska använda EEPROM'et...
Mycket hade underlättats om du i första inlägget hade skrivit att du
har skrivit mer till EEPROM än vad databladet specade. Då hade ju
svaret varit ganska uppenbart och det hade inte blivit så mycket
gissningar.
100.000/200 = 500 s eller lite drygt 8 min. Så 10 minuter är nog en bra gissning.
Det är nog inte så det är tänkt att man ska använda EEPROM'et...

Mycket hade underlättats om du i första inlägget hade skrivit att du
har skrivit mer till EEPROM än vad databladet specade. Då hade ju
svaret varit ganska uppenbart och det hade inte blivit så mycket
gissningar.

Re: Ett EEPROM värde "sitter fast"
Nej visst ska man inte använda EEPROM'et på så vis. Men jag är relativt ny inom PIC så testar det mycket och lär mig genom "trail and error"
Men nu är ju problemt löst!
Men nu är ju problemt löst!
Re: Ett EEPROM värde "sitter fast"
Inte för att det löser ditt problem, nu när du antagligen hittat vad felet är, men vill ändå kommentera följande.
Du har två delar i programmets huvudfönster, "Program Memory" samt "EEPROM Data" som du kan välja/välja bort hur du vill för programmeringen. Slår inte detta val igenom även vid radering? Jag har inte möjlighet att prova själv just nu, men jag har antagit att det fungerar på detta vis.Adde skrev:Sodjan: Vad jag vet så finns det ingen funktion i det programet som kan radera separat flash och EEPROM.
Re: Ett EEPROM värde "sitter fast"
Själva processorn (16F690) har två separate "Bulk Erase" kommandon.
Det ena för program memory och det andra för data memory (d.v.s EEPROM).
Notera dock att om lässkyddet för EEPROM är *på* så raderas även
EEPROM när man gör en "Bulk Erase Program Memory". D.v.s så att
man inte kan läsa EEPROM genom att byta ut koden i processorn
till sin egen.
Sen är det en annan fråga vilka kommandon t.ex en PICkit2 gör
vid sin normala erase, men det borde ju följa vad man vill programmera.
Det ena för program memory och det andra för data memory (d.v.s EEPROM).
Notera dock att om lässkyddet för EEPROM är *på* så raderas även
EEPROM när man gör en "Bulk Erase Program Memory". D.v.s så att
man inte kan läsa EEPROM genom att byta ut koden i processorn
till sin egen.
Sen är det en annan fråga vilka kommandon t.ex en PICkit2 gör
vid sin normala erase, men det borde ju följa vad man vill programmera.
Re: Ett EEPROM värde "sitter fast"
Jag har båda ikryssade. Och visst är det som du säger, jag skulle kunna bocka av "Program Memory" och endast radera EEPROM, men det skulle inte vara någon skillnad emot att ha båda ikryssade.korp skrev:Inte för att det löser ditt problem, nu när du antagligen hittat vad felet är, men vill ändå kommentera följande.
Du har två delar i programmets huvudfönster, "Program Memory" samt "EEPROM Data" som du kan välja/välja bort hur du vill för programmeringen. Slår inte detta val igenom även vid radering? Jag har inte möjlighet att prova själv just nu, men jag har antagit att det fungerar på detta vis.
Som jag skrev tidigare i tråden så fungerar det utmärkt att radera andra EEPROM adresser, det är bara EEPROM adress 4 som är "fryst".