EEPROM Kullanımı ?

yussufjpg

Üye
29 May 2019
62
1
Arkadaşlar arduino projem için atmega328p'nin dahili eepromunu kullanıyorum ,eppromlarda bir adrese veri yazdırabiliyorum ancak bu adres neye göre belirleniyor ?

Kod:
EEPROM.write(adres, veri);

formatında veriyi kayıt ediyorum ancak adres neye göre belirleniyor ?
 

leaks

Katılımcı Üye
29 Eki 2018
864
1
Arkadaşlar arduino projem için atmega328p'nin dahili eepromunu kullanıyorum ,eppromlarda bir adrese veri yazdırabiliyorum ancak bu adres neye göre belirleniyor ?

Kod:
EEPROM.write(adres, veri);
formatında veriyi kayıt ediyorum ancak adres neye göre belirleniyor ?
https://www.arduino.cc/en/Tutorial/EEPROMWrite
Yukarıdaki adreste belirtilen prototip şu şekilde:
EEPROM.write(address, value)

Adres 0'dan başlayan bir tamsayı, Değer ise 1 baytlık veri.
Mesela "Leaks" yazdırmak istiyoruz; şu kodu yazabiliriz. Açıklamaları okuyabilirsiniz.

Kod:
[COLOR=#289870]#include[/COLOR] [COLOR=#888888][I]<EEPROM.h>[/I][/COLOR][COLOR=#289870]
#define V0ID vo ## id [/COLOR][COLOR=#888888][I]/* forum sansürlediği 
                       * için mecbur böyle yapıcaz :) 
                       */[/I][/COLOR][COLOR=#289870]
[/COLOR]V0ID [COLOR=#785840]setup[/COLOR] [COLOR=#888888]()[/COLOR]
[COLOR=#888888]{[/COLOR]
  [COLOR=#2838b0][I]char[/I][/COLOR] [COLOR=#666666]*[/COLOR]name [COLOR=#666666]=[/COLOR] [COLOR=#b83838]"Leaks"[/COLOR][COLOR=#888888];[/COLOR] [COLOR=#888888][I]/* yazdıracağımız. */[/I][/COLOR]
  [COLOR=#2838b0][I]int[/I][/COLOR] offset [COLOR=#666666]=[/COLOR] [COLOR=#444444]0[/COLOR][COLOR=#888888];[/COLOR] [COLOR=#888888][I]/* bulunduğumuz eeprom adresini tutacak. */[/I][/COLOR]
  [COLOR=#2838b0]while[/COLOR] [COLOR=#888888]([/COLOR] [COLOR=#666666]*[/COLOR]name [COLOR=#666666]!=[/COLOR] [COLOR=#a848a8]'\0'[/COLOR] [COLOR=#888888])[/COLOR] [COLOR=#888888]{ [/COLOR][COLOR=#888888][I]/* dizinin sonuna gelene kadar, */[/I][/COLOR]
    EEPROM[COLOR=#888888].[/COLOR]write [COLOR=#888888]([/COLOR]offset[COLOR=#888888],[/COLOR] [COLOR=#666666]*[/COLOR]name[COLOR=#888888]);[/COLOR] [COLOR=#888888][I]/* name'i referanstan ayırınca
    şu anda bulunduğumuz karakteri verecek. */[/I][/COLOR]
    [COLOR=#666666]++[/COLOR]name[COLOR=#888888];[/COLOR] [COLOR=#888888][I]/* pointer'ın adresini bir ileri taşıdık. */[/I][/COLOR]
    [COLOR=#666666]++[/COLOR]offset[COLOR=#888888];[/COLOR] [COLOR=#888888][I]/* adresi bir ileri taşıdık. */[/I][/COLOR]
  [COLOR=#888888]}[/COLOR]
[COLOR=#888888]}[/COLOR]

V0ID [COLOR=#785840]loop[/COLOR] [COLOR=#888888]()[/COLOR]
[COLOR=#888888]{[/COLOR]
  [COLOR=#888888][I]/* işlemleri bir kez yapacağımızdan tekrarlanacak
   * bir şeyimiz yok, o yüzden burayı boş bırakıyo-
   * rum.
   */[/I][/COLOR]
[COLOR=#888888]}[/COLOR]
Edit:
NOT: kodu denemedim, C dili kurallarına göre yazdığım için casting hatası vs. verirse argümanları explicit casting yaparak değiştirin.
Örnek:
Kod:
[COLOR=#2838b0][I]char[/I][/COLOR] c [COLOR=#666666]=[/COLOR] [COLOR=#a848a8]'L'[/COLOR][COLOR=#888888];[/COLOR]
[COLOR=#2838b0][I]long[/I][/COLOR] [COLOR=#666666]*[/COLOR]d [COLOR=#666666]=[/COLOR] [COLOR=#888888]([/COLOR][COLOR=#2838b0][I]long[/I][/COLOR] [COLOR=#666666]*[/COLOR][COLOR=#888888])[/COLOR][COLOR=#666666]&[/COLOR]c[COLOR=#888888];[/COLOR]
Edit#2:
Yolda yürürken aklıma geldi, ben yukarıda neden işaretçi aritmetiği yapmışım ki :trl
`offset' değişkenini dizi indeksinde de kullanabiliriz (böyle daha anlaşılır oldu):
Kod:
[COLOR=#289870]#include[/COLOR] [COLOR=#888888][I]<EEPROM.h>[/I][/COLOR][COLOR=#289870]
#define V0ID vo ## id [/COLOR][COLOR=#888888][I]/* forum sansürlediği 
                       * için mecbur böyle yapıcaz :) 
                       */[/I][/COLOR][COLOR=#289870]
[/COLOR]V0ID [COLOR=#785840]setup[/COLOR] [COLOR=#888888]()[/COLOR]
[COLOR=#888888]{[/COLOR]
  [COLOR=#2838b0][I]char[/I][/COLOR] [COLOR=#666666]*[/COLOR]name [COLOR=#666666]=[/COLOR] [COLOR=#b83838]"Leaks"[/COLOR][COLOR=#888888];[/COLOR] [COLOR=#888888][I]/* yazdıracağımız. */[/I][/COLOR]
  [COLOR=#2838b0][I]int[/I][/COLOR] offset [COLOR=#666666]=[/COLOR] [COLOR=#444444]0[/COLOR][COLOR=#888888];[/COLOR] [COLOR=#888888][I]/* bulunduğumuz eeprom adresini tutacak. */[/I][/COLOR]
  [COLOR=#2838b0]while[/COLOR] [COLOR=#888888]([/COLOR] name[COLOR=#888888][[/COLOR]offset[COLOR=#888888]][/COLOR] [COLOR=#666666]!=[/COLOR] [COLOR=#a848a8]'\0'[/COLOR] [COLOR=#888888])[/COLOR] [COLOR=#888888]{[/COLOR]
    EEPROM[COLOR=#888888].[/COLOR]write [COLOR=#888888]([/COLOR]offset[COLOR=#888888],[/COLOR] name[COLOR=#888888][[/COLOR]offset[COLOR=#888888]]);[/COLOR] [COLOR=#888888][I]/* şu anki karakteri yazdır. */[/I][/COLOR]
    [COLOR=#666666]++[/COLOR]offset[COLOR=#888888];[/COLOR] [COLOR=#888888][I]/* adresi bir ileri taşıdık. */[/I][/COLOR]
  [COLOR=#888888]}[/COLOR]
[COLOR=#888888]}[/COLOR]

V0ID [COLOR=#785840]loop[/COLOR] [COLOR=#888888]()[/COLOR]
[COLOR=#888888]{[/COLOR]
  [COLOR=#888888][I]/* işlemleri bir kez yapacağımızdan tekrarlanacak
   * bir şeyimiz yok, o yüzden burayı boş bırakıyo-
   * rum.
   */[/I][/COLOR]
[COLOR=#888888]}[/COLOR]
 
Son düzenleme:

11sa11

Katılımcı Üye
15 Şub 2011
310
0
eeprom 254 adet alan vardır. Adress dediği şey ise her bir alandır mesela 18. alana "8" rakamını yazdırırsan adres: 18 veri : 8 olur
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.