Picproje Elektronik Sitesi

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

Başlık: Atmel Port Tanımlaması
Gönderen: thenorthstar - 04 Haziran 2020, 09: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, 18: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();
c =i2c_read();
i2c_stop();
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: thenorthstar - 05 Haziran 2020, 09: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, 09: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, 09: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, 13:36:54
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
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: thenorthstar - 16 Temmuz 2020, 19:36:42
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ı?
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: mehmet - 16 Temmuz 2020, 21: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 - 16 Temmuz 2020, 21:29:10
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
Başlık: Ynt: Atmel Port Tanımlaması
Gönderen: thenorthstar - 17 Temmuz 2020, 04:12:00
Teşekkür ederim