//AÇIKLAMA
//Harici 25LC512 EEPROM'a veri gönderme ve okuma işlemi yapıldı. EEPROM'un adresleri
//16 bitliktir. "SPI.transfer(adres)" komutu ile 8 bitlik adres gönderebiliriz. Bu nedenle
//bu komutu arda arda kullanıp adresi 8 bit 8 bit şeklinde gönderebilir yada
//"SPI.transfer16(adres)" komutu ile adresi tek seferde gönderebiliriz.
//NOT: EEPROM'a okuma-yazma işlemi yavaş olduğundan adres ve veri gönderme komutlarından
//sonra delay() kullanmak gerekmektedir.
#define WRITE 0x02
#define READ 0x03
#define WREN 0x06
#include<SPI.h>
unsigned int veri;
void setup()
{
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV4);
DDRD = 0b11111111;
}
void loop()
{
//yazma işlemini etkinleştirme
digitalWrite(SS, LOW);
SPI.transfer(WREN);
delay(5);
digitalWrite(SS, HIGH);
delay(5);
//veri yazma
digitalWrite(SS, LOW);
SPI.transfer(WRITE); //yazma komutu gönderildi
delay(5);
SPI.transfer16(0x0005); //yazılacak adres gönderildi
delay(5);
SPI.transfer(0x0F); //1 bayt veri gönderildi
delay(5);
digitalWrite(SS, HIGH);
delay(5);
//okuma işlemi
digitalWrite(SS, LOW);
SPI.transfer(READ); //okuma komutu gönderildi
delay(5);
SPI.transfer16(0x0005); //okunacak adres gönderildi
delay(5);
veri = SPI.transfer(0); //veri okunarak veri değişkenine atandı
delay(5);
digitalWrite(SS, HIGH);
//okunan verinin Arduino D portuna gönderme
PORTD = veri;
delay(2000);
}
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