EEPROM & Wisp628A & MPLAB (HITEC C compilier)

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:

EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av squiz3r »

Tjena. Jag håller på att göra ett program till en PIC12F629, och då ska jag spara lite data (2 byte) i EEPROMet på den, som jag sen läser av nästa gång den startar. Så långt var de inga problem, allt står ju i databladet.

Men jag kom fram till att efter programmering är all data i EEPROMet 0xFF, och jag vill ha byte 0 till 0x7D och byte 1 till 0x00 så jag tryckte på "visa" i MPLAB (jag har HITEC c compilier i MPLAB) och sedan på "EEPROM", då kom där upp en array på 16*8 byte (128 byte) där det står 0xFF i alla. Så jag tryckte på de två till vänster på översta raden, dessa måste ju vara byte 0 och 1? också angav jag mina önskade värden.

Sen när jag kompilerar det så står det att jag har använt 0% (0 byte) utav EEPROMet, borde det stå det? Och när jag kör igång PICen så ligger det fortfarande 0xFF på de adresserna...

Är det någon som har någon idé om vad jag gör fel? Jag använder en wisp628A för att programmera PICen, det är inte där felet ligger tro?

Säg till om det är nån mer info ni vill ha!

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

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av sodjan »

Jag tror inte att du bara kan göra så där.
Du vill alltså att två värden för EEPROM ska finnas med redan i HEX filen ?
Så att de flashas in redan vid programmeringen av PIC'en ? Detta är absolut
inget problem med Wisp'arna, bara rellevant data för EEPROM ligger i HEX
filen på korrekta adresser. Gör det det ?

Hur du gör i HitecC har jag inte en susning om...

För vanlig MPASM så kan du kolla "de" direktivet i MPASM
manualen så ser du hur du görs där.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av bos »

Som sodjan skriver kan du inte göra så. För att göra det du vill med HiTech C gör du såhär:

Kod: Markera allt

__EEPROM_DATA(0x7D, 0x00);
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av sodjan »

Kanske att det finns något sätt att ange adresserna till EEPROM också.
En rellaterad fråga...
Jag har inte lyckats hitta en manual till Hitec C hos Microchip som bara
går att ladda ner. Någon som har en länk ?
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av bos »

sodjan skrev:Kanske att det finns något sätt att ange adresserna till EEPROM också.
Inte med makrot. Makrot tar (maximalt) 8 bytes som parameter och skriver från byte 0. Vill man sätta byte 11 "compile-time" så använder man makrot två gånger. Annars får man använda funktionen eeprom_write(adress, värde), men då blir det run-time.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av sodjan »

Hm...
Det *borde* finnas en metod att specificera EEPROM data även
vid compile-time till valfri address. Eller också så får man
fylla på med detta macro till man når den önskade adresse.

Aja, hur som helst, vi får se om squiz3r får ihop det...
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av v-g »

Hårt för dem på höga nivån där allt ska vara så enkelt ;)
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av bos »

Det går säkert, men jag vet inte hur. Hitech rekommenderar iallafall inte att man använder deras eeprom-kod om man absolut måste ha koll på eeprom-adresser. De har rätt trevliga abstraktionslager för att hantera eeprom, så specifika adresser behövs knappast.

Det nästan mest tjusiga av allt är att man kan deklarera variabler som eeprom-variabler:

Kod: Markera allt

eeprom unsigned char foo = 42;
Variabeln foo (som ligger på en eeprom-adress) får värdet 42 när man programmerar kretsen. Om det sen i koden finns "foo = 92;" så uppdateras eepromet med det värdet. Startar man om kretsen så har det fortfarande värdet 92. Bekvämt som attan. Rekommenderas förstås inte till loop-variabler, för prestandan blir skräp.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av bos »

v-g skrev:Hårt för dem på höga nivån där allt ska vara så enkelt ;)
Grejen är att det finns ingen vits med att ha absoluta adresser. Låt kompilatorn sköta det, precis som MPASMs linker gör när man programmerar relativ kod i assembler.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av sodjan »

Ja men då så. Då ska man så klart köra med dom.
Det gäller bara (som vanligt) att förstå vad kompilatorn har för sig,
så att säga, så att man förstår vad som händer då man gör "foo = 92;".

Men står inte allt detta i Hitec C manualen !?

> Grejen är att det finns ingen vits med att ha absoluta adresser.

Helt rätt. Så länge som man inte kommer i närheten av refresh-gränserna
för EEPROM'et så spelar det ingen större roll. Annars kanske man vill ha
bättre kontroll över det hela.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av squiz3r »

Nu fick jag ihop det. Men kompilatorn accepterade inte det som du skrev, utan den tvingade mig att ange alla 8 byte... Konstigt, men om jag läser i manualen så uppfattar jag det också som att man måste ange 8 bytes, inte upp till 8 :?:.

För att ladda ner manualen måste man registrera sig på HI-TECs hemsida, helkonstigt.. Men manualen ligger på datorn när man har installerat kompilatorn.

Det finns en massa färdiga funktioner i HITEC C för att skriva till eeprom i run-time, men det har jag inte vågat prova, de är väll inte så effektiva kan jag tro, så jag skrev helt enkelt enligt PICens datablad :).
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av sodjan »

> ...men det har jag inte vågat prova, de är väll inte så effektiva kan jag tro,

Det skulle förvåna mycket om inte de färdiga funktionerna gör i princip
samma sak som beskrivs i databladet. Vad skulle de annars göra ? Och vad
menar du med "effektiva", du måste ju i alla fall vänta på en "write", den
går inte snabbare än vad den gör...
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av bos »

squiz3r skrev:Det finns en massa färdiga funktioner i HITEC C för att skriva till eeprom i run-time, men det har jag inte vågat prova, de är väll inte så effektiva kan jag tro, så jag skrev helt enkelt enligt PICens datablad :).
Effektiva och effektiva. De är inte mer ineffektiva än då du skriver koden själv i assembler enligt databladet. Det ineffektiva uppstår om du använder eeprom-datatyper för loop-variabler, eller variabler som kräver access snabbt och ofta. Då blir det *mycket* redundans.

För variabler som man vill spara undan och läsa då och då (dvs inte så ofta, kanske bara vid start) så är eeprom-datatypen ypperlig.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Re: EEPROM & Wisp628A & MPLAB (HITEC C compilier)

Inlägg av squiz3r »

Ok. Min erfarenhet av såna färdiga funktioner är inte bra, tex för att styra HD44780 LCD'er, då är det allt annt än kodeffektivt att använde de funktionerna :).
Skriv svar