Vilka eeprom adresser är tillgängliga PIC 12f675

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Vilka eeprom adresser är tillgängliga PIC 12f675

Inlägg av newbadboy »

Behöver skriva och läsa två variabler som skall lagras i eeprom minnet på en 12F675.

Ena variabeln kör jag i minnes adress 80 eftersom jag hittat ett ex på detta och det funkar bra. Nu behöver jag spara en variabel till och vill förstå mer vilka adresser är tillgängliga. Tänkte köra med adress 81 men är det så enkelt?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vilka eeprom adresser är tillgängliga PIC 12f675

Inlägg av sodjan »

Är det adress 80 (hex eller decimalt?) i EEPROM?

Det är lite underligt. EEPROM har adresser från 00 till 7F.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Vilka eeprom adresser är tillgängliga PIC 12f675

Inlägg av newbadboy »

Här ett exempel jag tittat på. Ser onekligen ut som HEX

Längst ner används adressen 80 och där bara plussar de på

Kod: Markera allt

char ii;                                 // loop variable

void main(){
  ANSEL =  0;                            // Configure AN pins as digital I/O
  ANSELH = 0;
  C1ON_bit = 0;                          // Disable comparators
  C2ON_bit = 0;

  PORTB = 0;
  PORTC = 0;
  PORTD = 0;

  TRISB = 0;
  TRISC = 0;
  TRISD = 0;
   
  for(ii = 0; ii < 32; ii++)             // Fill data buffer
    EEPROM_Write(0x80+ii, ii);           // Write data to address 0x80+ii

  EEPROM_Write(0x02,0xAA);               // Write some data at address 2
  EEPROM_Write(0x50,0x55);               // Write some data at address 0150

  Delay_ms(1000);                        // Blink PORTB and PORTC LEDs
  PORTB = 0xFF;                          //   to indicate reading start
  PORTC = 0xFF;
  Delay_ms(1000);
  PORTB = 0x00;
  PORTC = 0x00;
  Delay_ms(1000);

  PORTB = EEPROM_Read(0x02);             // Read data from address 2 and display it on PORTB
  PORTC = EEPROM_Read(0x50);             // Read data from address 0x50 and display it on PORTC

  Delay_ms(1000);

  for(ii = 0; ii < 32; ii++) {           // Read 32 bytes block from address 0x80
    PORTD = EEPROM_Read(0x80+ii);        //   and display data on PORTD
    Delay_ms(250);
    }
}
Copyright (c) 2002-2016 mikroElektronika. All rights reserved. 
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Vilka eeprom adresser är tillgängliga PIC 12f675

Inlägg av Icecap »

Om det exempel verkligen är för PIC12F675 är det någon som har gjort bort sig ganska tungt.

Men som svar på din fråga:
EEPROM är i PIC12F675 på 128 bytes, från och med adress 0x00 till och med adress 0x7F.
Ska du spara flera bytes är det bara att spara dom i olika adresser, de kan fint ligga efter varandra och en variabel kan ligga över fler bytes, t.ex. om det är en word eller så.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vilka eeprom adresser är tillgängliga PIC 12f675

Inlägg av sodjan »

> Här ett exempel jag tittat på...

Stod det ingenting om vilken processor som koden var tänkt till?
Det finns så klart andra modeller som har t.ex 256 bytes, och
då fungerar den där exempelkoden helt OK.
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Vilka eeprom adresser är tillgängliga PIC 12f675

Inlägg av newbadboy »

Spännande, kollade upp exemplet och det står inte vilken PIC som det gäller och jag var bara dum och tänkte inte på att det kan skilja sig. Jag använder 12f675.

Så då kan jag ju spara i 0x00 och 0x01 tex? Det är bara två heltal som jag ska spara på två olika adresser.


Men då är frågan oxå då hur fanken det kan funka med att jag sparar i 0x80?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vilka eeprom adresser är tillgängliga PIC 12f675

Inlägg av sodjan »

Jag gissar att adresserna "snurrar runt" så att skriva till 80 (hex)
blir detsamma som att skriva till 00 (hex). Högsta biten i adress
registret (EEADR) är "undefined". Samma sak om du läser från
80, du kommer i praktiken att läsa från 00.

EDIT: Rekommendationen är så klart att hålla sig till de adresser
som är definierade för den aktuella processorn... :-)
Användarvisningsbild
newbadboy
Inlägg: 2485
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Vilka eeprom adresser är tillgängliga PIC 12f675

Inlägg av newbadboy »

Haha herregud. Det låter rimligt. Kommer t.om jag hört det ngn för många år sedan i skola. Detta kunde likaväl gått åt helvete.

Känns rätt med def adresser. Inte lika rätt med roulette :)


Tackar
Skriv svar