//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);
}
4 Eylül 2026 Cuma
Eylül 04, 2026
Admin
No comments
Program Kodları
Devre Şeması
Kaydol:
Kayıt Yorumları (Atom)
0 comments:
Yorum Gönder