variabel utan ström

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

"Hur vet du att båda värderna blir lika ?"
Jag gjorde en liten kodsnutt som tog den ena variabeln minus 40, också tände den en LED om STATUS,Z (zero) sattes. Och då visade det att varenda gång blir båda variablerna samma som det värde som jag först skriver till EEpromet. Så jag vet inte om det är när den skriver eller när den läser som det blir fel..

"Du får jämföra koderna, speciellt där du skriver till EEDATA."
Jag har jämfört de välldigt noga. Och ett par ggr så har jag suddat ut den som inte fungerar och kopierat den fungerande och bara bytt variablerna sen. Jag har även testat att byta platts på variablerna, men det gör ingen skillnad. Det är alltid den längst ner som blir samma som den ovanför..

Från databladet fär att läsa EEprom'et:

Kod: Markera allt

bsf STATUS,RP0 ;Bank 1
movlw CONFIG_ADDR ;
movwf EEADR ;Address to read
bsf EECON1,RD ;EE Read
movf EEDATA,W ;Move data to W
och för att skriva:

Kod: Markera allt

bsf STATUS,RP0 ;Bank 1
bsf EECON1,WREN ;Enable write
bcf INTCON,GIE ;Disable INTs
movlw 55h ;Unlock write
movwf EECON2 ;
movlw AAh ;
movwf EECON2 ;
bsf EECON1,WR ;Start the write
bsf INTCON,GIE ;Enable INTS
Mvh
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7487
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

Hur står det till med avkopplingskondingar o.dyl? Misstänker att det kräver lite grand extra att skriva till EEPROM.

Kolla också i processorns errata, det lär finnas någon PIC som måste ställas i sleep-läge medan den skriver. Minns inte just nu vilken det är. Kanske även bara var vissa revisioner av den aktuella modellen.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

"Kolla också i processorns errata"
Hmm.. Då har man lärt sig något nytt idag också :). Har alldrig hört errata innan.. Men jag sökte lite på google, och där stog det att det skulle finnas på microchips hemsida, men jag sökte på det där och hittade bara för PIC30-klassen... Var hittar man de andra?

Återkommer med mer imorrn, lite stressad nu.

Mvh
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Var hittar man de andra?

Helt nekelt på respektive processors egen produktsida.
På sidan för 12F629 är det väldigt tydligt länkat till
http://ww1.microchip.com/downloads/en/D ... 80125G.pdf

Det finns en punkt om EEPROM, men det verkar inte ha något
med dina problem att göra. Något är sannolikt vaj med koden...
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Sodjan: Tack, Har läst igenom den nu och det bör ju inte vara några problem här. Kunde plattsen var mer självklar?... :wall:

Nu har jag testat att sätta ut massvis av kondensatorer stora och små, före och efter 7805'an men det fungerar inte bättre..

Jag såg att jag hade inte skrivit något till registerna som rör interuppten, så jag skrev 0 till allt där (dissablade alla interuppt), men det fungerar inte bättre för det..

Jag tog bort all kod som inte användes och alla variabler m.m. då det inte heller fungerade klistrade jag in exempelkoden från databladet och satte bara in mina värden där, det fungerar inte heller..

På ett ställe i databladet såg jag att det stog EEDAT istället för EEDATA, så jag testade det också, men det gjorde ingen nytta.. Kollade senare i INC filen, och där va dem adreserade till samma adress. (Korrect adress enligt databladet).

Mina idéer börjar ta slut nu.. Någon annan som kan komma på något? Är det några speciella config inställningar eller liknande man måste göra för att EEpromet ska fungera?

Mvh
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> för att EEpromet ska fungera?

Men det *fungerar* ju, gör det inte ?
Skrev du inte att du fick in det *ena* värdet ?

Sen är det en annan fråga varför du inte får in båda, men
det måste vara något med koden...

Jag skulle testa att strukturera om det lite. Nu så testar du WR först i rutinern
och clearar WREN direkt. Jag skulle lägga testen på WR i slutet
och inte cleara WREN förrens allt är klart. OCh hålla GIE cleared under tiden.
Jag vet inte om man *måste* göra det, men det känns lite säkrare.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Det fungerar!


"Men det *fungerar* ju, gör det inte ?
Skrev du inte att du fick in det *ena* värdet ? "
Det har du ju rätt i.

Jag la in en till sån loop som väntar på att WR ska bli låg efter att jag hade skrivit som du sa och clear'ade inte WREN bit'en fören efter att skrivningen är klar, och då fungerar det! Men jag tycker det är lite konstigt för att det står tydligt i databladet att den inte ska påverka skrivningen..

Från databladet för PIC12F629 i kappitlett om att skriva till EEprom:
After a write sequence has been initiated, clearing the
WREN bit will not affect this write cycle.

Tack för hjälpen alla!

Mvh. Daniel Andersson
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Nu fortsatte jag att programmera min PIC12F629 och är uppe i strax under 500 rader kod. Sen när jag la in en till liten kodsnutt som ska spara ett värde i EEpromet så började det komma konstiga fel.. Efter lite tester kom jag framm till att den startade om sig när jag tryckte på en av knapparna. Om jag plockade bort den kodsnutten där uppe så fungerade det igen. Sen testade jag att lägga in någon annan kod istället för den kodsnutten, nämligen ca. 15 nop'ar. Och då uppkom samma problem.. Jag testade då att lägga nop'arna på andra ställen i koden och det blev samma resultat då också.. Jag har ingen WDT igång, så det bör det ju inte bero på.. Så det jag funderar på nu är om minnet i PIC'en skulle kunna vara slut.. Skulle den kunna bete sig såhär då (att den startar om när jag gör en viss sak)? Jag har inte fått några varningar av varken MPLABB eller Wisp'en..

Kan man se i MPLAB hur stor platts koden tar?

(lite off-topic..)
Mvh.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> och är uppe i strax under 500 rader kod.

Du menar *käll* kod ?
Inte så intressant, det kan ju vara 450 rader med kommenterar... :-)

Hur ser MAP filen ut ? Hur mycket flash är upptaget ?

Denna processor har mindre än 2 K-word minne så du ska inte få
problem med "pages" i Flash. Har du några instruktioner som direkt
skriver till PC (PCL) ?
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

"Du menar *käll* kod ?"
Oj, Nu känner man sig dum :oops:. 49 rader med källkod i HEX filen.

"Hur ser MAP filen ut ? Hur mycket flash är upptaget ?"
Jag har letat lite på internett efter hur man ska kunna se hur mycket flash minne m.m. som är upptaget men inte hittat nåt :(.. MAP fil? Ännu en sak jag alldrig hört talas om :). Sökte på google efter den också men hittade inget där heller.

"Denna processor har mindre än 2 K-word minne"
Jepp. 1024kb

"...skriver till PC (PCL) ?"
Jepp. Jag har en look-up tabell. Kan den skada på nått vis?

Mvh
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

MAP-filen ska du inte leta efter på internet, du ska leta i din dator i samma bibliotek som du har din källkod... Sök efter "*.MAP"

Om din look-up tabell går förbi en xx00 adress gräns kan det bli "mycket intressant".
probe
Inlägg: 282
Blev medlem: 2 februari 2008, 21:04:26
Ort: Stockholm

Inlägg av probe »

Inte fel att lägga LUT efter ett ORG-direktiv så man VET att det fungerar...

EEprom i 12F629, 12F675 och 12HV615 har jag använt massor av gånger, och aldrig haft problem med det.... Och jag gör bara som det står i databladet....
probe
Inlägg: 282
Blev medlem: 2 februari 2008, 21:04:26
Ort: Stockholm

Inlägg av probe »

Vad mater du med för spänning? Har något vagt minne av att EEPROM skrivning inte fungerar vid väldigt låga matningspänningar...
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

"du ska leta i din dator i samma bibliotek som du har din källkod..."
Hmm.. Kollade i mappen där jag har min källkod, där fanns ingen map-fil. Sen kollade jag i några andra projekt mappar, där fanns en map-fil i varje.. Så jag testade bygga om projektet, fanns fortfarande inte alls lika många filer som det borde vara, och ingen map-fil. Så jag clear'ade projektmappen och byggde det igen, fanns fortfarande ingen map-fil.. Är detta ett dåligt tecken? :wacko:

"Om din look-up tabell går förbi en xx00 adress gräns kan det bli "mycket intressant"."
Hur vet man om den gör det :?:

" och aldrig haft problem med det.... "
Hmm.. Konstigt.

Mvh.
probe
Inlägg: 282
Blev medlem: 2 februari 2008, 21:04:26
Ort: Stockholm

Inlägg av probe »

För att veta om ens LUT passerar en XX00-gräns så kollar man i HEX-filen ELLER så använder man ORG för att få koden så att man VET att LUTén inte ligger i en XX00-gräns...
Skriv svar