Skriva till eeprom i PIC
Re: Skriva till eeprom i PIC
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.
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.
Re: Skriva till eeprom i PIC
Och då det tydligen är svårt att skriva egna program kommer hjälpen här:
Jämför med databladets instruktioner och det blir fattbart.
Tidåtgång: 3 minuter.
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;
}
Tidåtgång: 3 minuter.
Re: Skriva till eeprom i PIC
Bra det ska jag göra oxå.
Nu handlade det bara om mikroc hade stöd eller inte. Förstod du inte det?
Nu handlade det bara om mikroc hade stöd eller inte. Förstod du inte det?
- 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
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
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
Re: Skriva till eeprom i PIC
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.
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.
Re: Skriva till eeprom i PIC
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.
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.
Re: Skriva till eeprom i PIC
"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:
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.
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));
}
}
Re: Skriva till eeprom i PIC
> 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.
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.
Re: Skriva till eeprom i PIC
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å
) 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.
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å

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.
Re: Skriva till eeprom i PIC
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
blir lite julpyssel med detta

-
- Inlägg: 87
- Blev medlem: 29 november 2010, 00:32:55
Re: Skriva till eeprom i PIC
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.
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.
Re: Skriva till eeprom i PIC
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);

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.