4 Eylül 2026 Cuma

Program Kodları
//AÇIKLAMA
//Proteus'ta yapılan simülasyonda sayfa, sektör ve çip silme işlemi yapılamıyor.
//EEPROM'a ait internetten bulunan kütüphane ile de deneme yapılmış sonuç değişmemiştir.
//Fiziksel EEPROM ile deneme yapılmadı. İnternette bu EEPROM'un kullanımıyla ilgili
//kısıtlı bilgi var. Bu nedenle şu şekilde bir uygulama yapıldı:
//Bellek silme işlemi sonucunda hafızadaki birimler 0xFF değerini alır. Bunun için
//silme işlemi yerine bellek birimlerine 0xFF değeri yazılarak silme işlemi taklit edilmiş oldu. 
#define WRITE 0x02
#define READ 0x03
#define WREN 0x06
#define PE 0x42
#define SE 0xD8
#define CE 0xC7
#include<SPI.h>
unsigned int veri;
int i;
void setup()
{
  SPI.begin();
  SPI.setClockDivider(SPI_CLOCK_DIV4);
  DDRD = 0b11111111;
}

void loop()
{
  //.........EEPROM'a veri yazma ve kontrol etme........
  //yazma işlemini etkinleştirme
  digitalWrite(SS, LOW);
  SPI.transfer(WREN);   //yazma etkinleştirme komutu gönderildi
  delay(5);
  digitalWrite(SS, HIGH);
  delay(5);

  //veri yazma
  digitalWrite(SS, LOW);
  SPI.transfer(WRITE);    //yazma komutu gönderildi
  delay(5);
  SPI.transfer16(0x0080); //yazma için sayfa başlangıç adresi gönderildi
  delay(5);
  for (i = 0; i < 128; i++)
  {
    SPI.transfer(i);     //1 bayt veri gönderildi
    delay(5);
  }
  digitalWrite(SS, HIGH);
  delay(5);

  //sayfaya ait herhangi bir adresteki bilgiyi okuyup PORTD'ye gönderme
  digitalWrite(SS, LOW);
  SPI.transfer(READ);       //okuma komutu gönderildi
  delay(5);
  SPI.transfer16(0x0087);   //okunacak adres bilgisi(bu adreste 7 bilgisi olması lazım)
  delay(5);
  veri = SPI.transfer(0);  //veri okunarak veri değişkenine atandı
  digitalWrite(SS, HIGH);

  //veri PORTD'ye gönderildi
  PORTD = veri;
  delay(3000);

  //..........sayfa silme ve kontrol etme.........
  //önce yazma işlemi etkinleştirilir
  digitalWrite(SS, LOW);
  SPI.transfer(WREN);     //yazma etkinleştirme komutu gönderildi
  delay(5);
  digitalWrite(SS, HIGH);
  delay(5);

  //sayfa silme işlemi
  digitalWrite(SS, LOW);
  SPI.transfer(WRITE);         //sayfa silme komutu gönderildi
  delay(5);
  SPI.transfer16(0x0080);   //silme için sayfa başlangıç adresi gönderildi
  delay(5);
  for (i = 0; i < 128; i++)
  {
    SPI.transfer(0xFF);
  }
  digitalWrite(SS, HIGH);
  delay(10);

  //sayfaya ait herhangi bir adresteki bilgiyi okuyup PORTD'ye gönderme
  digitalWrite(SS, LOW);
  SPI.transfer(READ);       //okuma komutu gönderildi
  delay(5);
  SPI.transfer16(0x0087);   //okunacak adres bilgisi(bu adreste 0xFF bilgisi olması lazım)
  delay(5);
  veri = SPI.transfer(0);   //veri okunarak veri değişkenine atandı
  digitalWrite(SS, HIGH);

  //veri PORTD'ye gönderildi
  PORTD = veri;
  delay(3000);
}



Devre Şeması





0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Sensörler ve Aygıtların Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com