12 Ağustos 2020, 18:03:29

Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d


Atmel Port Tanımlaması

Başlatan thenorthstar, 04 Haziran 2020, 12: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();
=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, 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
özgürlük için teknoloji

thenorthstar

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ı?

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

run

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
özgürlük için teknoloji

thenorthstar