Skriva till eeprom i PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Skriva till eeprom i PIC

Inlägg av sodjan »

Ah, OK. Sen så är det ju rent tekniskt inget problem att skriva
och läsa från EEPROM utan att köra med färdiga rutiner.
Så många saker är det inte som man behöver göra och
databladen brukar ha relativt tydliga exempel.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Skriva till eeprom i PIC

Inlägg av Icecap »

Och då det tydligen är svårt att skriva egna program kommer hjälpen här:

Kod: Markera allt

unsigned char EEPROM_Read(unsigned char Address)
  {
  EEADR = Address;
  EECON1bits.RD = 1;
  return(EEDATA);
  }

void EEPROM_Write(unsigned char Address, unsigned char Data)
  {
  EEADR       = Address;
  EEDATA      = Data;
  EECON1bits.WREN = 1;
  INTCONbits.GIE  = 0;
  EECON2      = 0x55;
  EECON2      = 0xAA;
  EECON1.WR   = 1;
  INTCONbits.GIE  = 1;
  }
Jämför med databladets instruktioner och det blir fattbart.

Tidåtgång: 3 minuter.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Skriva till eeprom i PIC

Inlägg av newbadboy »

Bra det ska jag göra oxå.

Nu handlade det bara om mikroc hade stöd eller inte. Förstod du inte det?
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Skriva till eeprom i PIC

Inlägg av newbadboy »

Jag är jättetacksam för hjälpen. Men varför så otrevlig ton.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Skriva till eeprom i PIC

Inlägg av Swech »

Håller med, en tråd som skulle kunna varit trevlig att läsa men som av okänd anledning är full av tråkiga kommentarer.
Det har sagts förut, det finns inget krav på att svara på TS frågor.
Om man upplever det som tråkigt / besvärligt / onödigt lätt /.... att svara på frågan så strunta i det isåfall

Swech
xxargs
Inlägg: 10189
Blev medlem: 23 september 2006, 14:28:27
Ort: Södertälje

Re: Skriva till eeprom i PIC

Inlägg av xxargs »

Kan microC göra kod för 12f familjen över huvud taget (dvs mnemonic och assembler av rätt sort utifrån kompilatorn) - annars är utvecklingsmiljön helt fel för uppgiften och det strandar redan där.

Finns inte stödet som färdig libb men stödet för 12F-familjen finns i kompilatorn, länkare etc. så blir det kanske det blir att göra en egen funktion för EEPROM-programmering för 12F-familjen.

klarar kompilatorn inline-asseblerkod för 12F-familjen så kan man jobba på några av de redan givna förslagen, läsa i exempelkoden i manualerna etc. och prova sig fram.

Sådan problemlösning är utmärkt övning i vad det går att göra med den aktuella utvecklingsmiljön när det inte finns färdiga libbar för en funktion, och det är något som kommer att behövas göra igen, och igen - hela tiden, för allt finns ju inte som färdigt som libbar.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Skriva till eeprom i PIC

Inlägg av newbadboy »

Med risk för att ha missförstått din fråga.
Generellt har kompilatorn stöd för 12F serien. När man skapar ett nytt projekt finns en dropdown lista där man väljer vilken krets man skall ha. Här finns i princip alla 12f att välja mellan som finns.

Det är då snarare så att de av ngn anledning bestämt sig för att inte göra detta lib för 12an bara.

Men exemplet ICEcap gav kan jag nog tillämpa och försöka förstå hur det funkar.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Skriva till eeprom i PIC

Inlägg av Icecap »

"Nu handlade det bara om MikroC hade stöd eller inte."

MikroC har stöd för det! Kanske inte i form av färdiga macron men som mitt exempel visar är det bara en liten snudd C-kod som löder problemet och det har MikroC stöd för!

Själv är jag van att skapa alla stödfunktioner själv, så även EEPROM-funktioner, att förlita sig på att andra har gjort rätt finns inte riktigt i min tankegång.

Vanligen skapar jag en "Spara minnesblock i EEPROM" och "Läsa minnesblock från EEPROM". Sedan har jag alla inställningar i en struct som jag brukar namnge Config.

Exempel med tanke på rutinerna ovan:

Kod: Markera allt

void Load_Config(void)
  {
  unsigned char Ctr;
  for(Ctr = 0; Ctr < sizeof(Config); Ctr++)
    {
    *((unsigned char*)&Config + Ctr) = EEPROM_Read(CONFIG_START + Ctr);
    }
  }


void Save_Config(void)
  {
  unsigned char Ctr;
  for(Ctr = 0; Ctr < sizeof(Config); Ctr++)
    {
    EEPROM_Write(CONFIG_START + Ctr, *((unsigned char*)&Config + Ctr));
    }
  }
Vid uppstart laddar jag sedan in från EEPROM till Config, ändrar jag något senare (inställning eller liknande) är det bara att spara Config i EEPROM, då är saken biff.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Skriva till eeprom i PIC

Inlägg av sodjan »

> att förlita sig på att andra har gjort rätt finns inte riktigt i min tankegång.

Det finns ju "andra" och så finns det "andra". Att lita på en leverantör av
utvecklingsverktyg har jag inget problem med. Att lita på att vem-som-helst
kanske har gjort rätt är en helt annan sak.

Självklart använder man de verktyg som leverantören har levererat i sin
"verktygslåda", så länge som de gör jobbet och inte gör det uppenbart fel.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Skriva till eeprom i PIC

Inlägg av Icecap »

sodjan: helt sant.

Mikroelektronika har ju genom tiden visat sig att ha vissa problem med vissa delar, det är ett ganska lättarbetat verktyg men det finns en viss "Biltema"-känsla över det: Tämligen OK - men inte helt 100.

Å andra sidan har jag gjort många "färdiga" rutiner och ändå betat mig genom en och annan revision av dom så jag är inte mycket bättre än andra, jag kan dock inte klaga på att andra gör fel (fast jag gör det ändå :vissla:) när jag gör det mesta själv.

Men visst litar man på en hel del funktioner: uträkningar, utskrift (printf()), variabeldeklarationer osv. så nog är det en avvägning.

Men blir man beroende av om det finns funktioner/macron som utför t.ex. skrivning/läsning av EEPROM när nu proceduren är så väl dokumenterat i databladet anser jag att man borde grotta sig ner lite i att förstå µC i gement.

Jag är å andra sidan old-school och började med ASM och jobbade mig uppåt och när man har suttit och knackat asm i metermått för att åstadkomma en relativ enkel funktion blir man duktig på att återvinna.

Då jag hade min CP/M-dator störde det mig att fillistningen inte kunde sättas till alfabetisk, därför lärde jag mig en hel del om FAT och gjorde ett asm-program som "lyftade" FAT-data från disketten, sorterade dom alfabetisk och återskrev dom. Var en del kod att skriva men fungerade utmärkt.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Skriva till eeprom i PIC

Inlägg av newbadboy »

mao hoppades jag att mikroC hade färdiga eeprom funktioner men jag kommer nu att göra egna och kommer att utgå från att förstå icecaps ex ihop med datablad.

blir lite julpyssel med detta :)
gunnerfeldt
Inlägg: 87
Blev medlem: 29 november 2010, 00:32:55

Re: Skriva till eeprom i PIC

Inlägg av gunnerfeldt »

Instämmer att det kräver försiktighet när man använder sig av färdiga libs.
T.ex. Så använder microchip while loopar här och var i sina libs och det vill man ju gärna veta. Så man gör bäst i att läsa igenom funktionerna och förstå dem.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Skriva till eeprom i PIC

Inlägg av newbadboy »

Och mitt tjat fortsätter :)

Fick tag på lite grejer att testa på nu. Då jag fått två olika svar från Mikroe supporten kände jag mig tvungen att prova deras färdiga funktioner själv. Plan B är ju Icecaps förslag

Gjorde ett testprogram enl nedan för att toggla utgångarna och det verkar fungera vad jag kan se. Min fråga är, kan det vara så att jag lurar mig själv på ngt sätt eller funkar det?

Jag kan;
-toggla utgångarna,
-sätta till ett genom att bortkommentera EEPROM_Write(0x80,0);
-sätta till noll genom att borkommentera EEPROM_Write(0x80,1);

Kod: Markera allt

unsigned short test;


void main(){

     ADCON0.F0=0x00;
     ANSEL=0x00;
     CMCON=0x07;
     TRISIO=0x00000000;

     
     while(1){
     
     EEPROM_Write(0x80,1);
     
     delay_ms(500);
     
     test=EEPROM_Read(0x80);
     
     if(test==1){
      GPIO.F0=1;
      GPIO.F1=1;
      GPIO.F2=1;
      GPIO.F3=1;
      GPIO.F4=1;
      GPIO.F5=1;
                      }
     EEPROM_Write(0x80,0);

     delay_ms(500);

     test=EEPROM_Read(0x80);

     if(test==0){
      GPIO.F0=0;
      GPIO.F1=0;
      GPIO.F2=0;
      GPIO.F3=0;
      GPIO.F4=0;
      GPIO.F5=0;
    
                 }
     
     

}


     }
Senast redigerad av newbadboy 1 december 2015, 14:58:31, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Skriva till eeprom i PIC

Inlägg av sodjan »

Är det är på samma 8-pinnars modell?
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Skriva till eeprom i PIC

Inlägg av newbadboy »

japp testade den skarpt på 12F675
Skriv svar