Atmel Port Tanımlaması

Başlatan thenorthstar, 04 Haziran 2020, 09:38:26

thenorthstar

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))

sadogan

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();
c =i2c_read();
i2c_stop();

thenorthstar

Bu şekilde tanımlayıp yapmam lazım hocam,

thenorthstar

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)

thenorthstar

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)

run

Alıntı yapılan: thenorthstar - 16 Temmuz 2020, 09: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
özgürlük için teknoloji

thenorthstar

Alıntı yapılan: run - 16 Temmuz 2020, 13: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ı?

mehmet

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
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

run

Alıntı yapılan: thenorthstar - 16 Temmuz 2020, 19: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
özgürlük için teknoloji

thenorthstar