Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: thenorthstar - 04 Haziran 2020, 12:38:26

Başlık: Atmel Port Tanımlaması
Gönderen: thenorthstar - 04 Haziran 2020, 12:38:26
Merhaba Arkadaşlar,
Aşağıdaki ATMEGA644PA için yapılmış olan tanımlamaları CCS C de 18F8772 için kullanmak istiyorum ama CCS e çeviremedim,

Bukonuda yardımcı olabilir misiniz?

#define I2C_SDA_DDR
	
	
DDRC
#define I2C_SDA_PIN
	
	
PINC
#define I2C_SDA_NR
	
	
PC1  //ISR: PCINT17
#define I2C_SCL_PIN
	
	
PINB
#define I2C_SCL_NR
	
	
PB2  //ISR: INT2
#define BTN1_PIN
	
	
PIND
#define BTN1_NR
	
	
	
PD3  //ISR: INT1
#define BTN2_PIN
	
	
PIND
#define BTN2_NR
	
	
	
PD2  //ISR: INT0
	


#define SDA_SET
	
	
	
I2C_SDA_DDR
	
	
&= ~(1<<I2C_SDA_NR)
	
	
	
	
	

#define SDA_RESET
	
	
I2C_SDA_DDR
	
	
|= (1<<I2C_SDA_NR)
	
	
	
	
	

#define SDA_READ
	
	
((I2C_SDA_PIN
	
& (1<<I2C_SDA_NR))>>I2C_SDA_NR)
#define SDA_IS_RESET
	
(!(I2C_SDA_PIN
	
& (1<<I2C_SDA_NR)))
#define SDA_IS_SET
	
	
(I2C_SDA_PIN
	
& (1<<I2C_SDA_NR))
#define SCL_IS_RESET
	
(!(I2C_SCL_PIN
	
& (1<<I2C_SCL_NR)))
#define SCL_IS_SET
	
	
(I2C_SCL_PIN
	
& (1<<I2C_SCL_NR))
#define BTN1_IS_RESET
	
(!(BTN1_PIN
	
	
& (1<<BTN1_NR)))
#define BTN1_IS_SET
	
	
(BTN1_PIN
	
	
& (1<<BTN1_NR))
#define BTN2_IS_SET
	
	
(BTN2_PIN
	
	
& (1<<BTN2_NR))
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: sadogan - 04 Haziran 2020, 21:40:49
CCS direk I2C yi destekler.
#use I2C(Master,SDA = PIN_C4, SCL = PIN_C3,force_sw,fast=50000)
bu şekilde tanımlayın.
SDA = PIN_C4, SCL = PIN_C3 bularada istediginiz pinleri yazın.
Tanımladığınız pinlerde donanımsal I2C varsa "force_sw" yi "force_hw" yapabilirsiniz.
Sonra bu komutları kullanabilirsiniz
i2c_start()
i2c_write();
=i2c_read();
i2c_stop();
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: thenorthstar - 05 Haziran 2020, 12:01:52
Bu şekilde tanımlayıp yapmam lazım hocam,
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: thenorthstar - 16 Temmuz 2020, 12:40:49
S.a,
Aşağıdaki tanımlamamın anlamı nedir?

#define SET      DDRC &= ~(1<<I2C_SDA_NR)
#define RESET      DDRC |= (1<<I2C_SDA_NR)
#define READ ((PINC & (1<<PC1))>>PC1)
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: thenorthstar - 16 Temmuz 2020, 12:42:58
S.a,
Aşağıdaki tanımlamanın anlamı nedir?

#define SET    DDRC &= ~(1<<PC1)
#define RESET  DDRC |= (1<<PC1)
#define READ  ((PINC & (1<<PC1))>>PC1)
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: run - 16 Temmuz 2020, 16:36:54
Alıntı yapılan: thenorthstar - 16 Temmuz 2020, 12:42:58S.a,
Aşağıdaki tanımlamanın anlamı nedir?

#define SET    DDRC &= ~(1<<PC1)
#define RESET  DDRC |= (1<<PC1)
#define READ  ((PINC & (1<<PC1))>>PC1)

SET makrosu ile C1 pini giriş yapılır
RESET makrosu ile C1 pini çıkış yapılır
READ makrosu ile C1 pininin durumu okunur
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: thenorthstar - 16 Temmuz 2020, 22:36:42
Alıntı yapılan: run - 16 Temmuz 2020, 16:36:54SET makrosu ile C1 pini giriş yapılır
RESET makrosu ile C1 pini çıkış yapılır
READ makrosu ile C1 pininin durumu okunur


@run , Teşekkür ederim hocam.
Hocam, (PINC & (1<<PC1)) buda pinin durumunu okumuyor mu? RED makrosu ile bu aynı mı?
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: mehmet - 17 Temmuz 2020, 00:03:02
Avr 'de pin okurken PINx, yazarken
PORTx, pin durumunu değiştirmek için
de DDRx kullanılıyor. İlgili mcu 'nun
kataloğuna bakın.
Bir de "George Boole" ile tanışın.
 https://www.yandex.com.tr/turbo/s/tr.wikipedia.org/wiki/George_Boole
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: run - 17 Temmuz 2020, 00:29:10
Alıntı yapılan: thenorthstar - 16 Temmuz 2020, 22:36:42@run , Teşekkür ederim hocam.
Hocam, (PINC & (1<<PC1)) buda pinin durumunu okumuyor mu? RED makrosu ile bu aynı mı?

read makrosu sonucu sadece 1 ve 0 olarak döndürür yani doğru olan okuma şekli

(PINC & (1<<PC1)) ise 0 ve 2 olarak döner
(PINC & (1<<PC3)) olarak kullanırsan bu kez de 0 ve 8 olarak döner
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: thenorthstar - 17 Temmuz 2020, 07:12:00
Teşekkür ederim