TivaC mikrodenetleyiciler, kaydırma yazmaçları dahil olmak üzere çevre birimleriyle iletişim kurması gereken gömülü uygulamalarda sıklıkla kullanılır. Bu makale, TivaC kullanarak 74HC595 kaydırma yazmacına seri veri göndermeyi anlatacaktır.
74HC595 kaydırma yazmacı, seri verileri paralel veriye dönüştüren yaygın bir IC’dir. LED’ler, LCD ekranlar ve diğer çevre birimleri gibi cihazları kontrol etmek için kullanılabilen 8 bitlik bir çıkışa sahiptir. Kaydırma yazmacı kullanmak, mikrodenetleyici üzerinde gereken I/O pin sayısını azaltır.
74HC595’e seri veri göndermek için TivaC’nin üç sinyal üretmesi gerekir: seri veri (DS), saat darbesi (SH_CP) ve mandal verisi (ST_CP).
Seri veri, DS pinine bit bit gönderilir. SH_CP pinindeki her saat darbesi, verileri kaydırma yazmacına bir bit kaydırır. 8 bitin tamamı kaydırıldıktan sonra, ST_CP pinindeki bir darbe, verileri kaydırma yazmacından depolama yazmacına mandallar ve veriler paralel çıkış pinlerinde (Q0-Q7) görünür.
74HC595 ile iletişim kurmak için TivaC üzerindeki pin yapılandırması, başlatma bölümünde yapılmalıdır. DS, SH_CP ve ST_CP için seçilen üç pin, dijital çıkış olarak yapılandırılmalıdır. Örneğin, DS için PA2, SH_CP için PA3 ve ST_CP için PA4 pinleri kullanılıyorsa, başlatma kodu şu şekilde olabilir (TivaWare kütüphanesi kullanılarak):
// Pin tanımlamaları
#define DATA_PIN GPIO_PIN_2
#define CLOCK_PIN GPIO_PIN_3
#define LATCH_PIN GPIO_PIN_4
// GPIO Port A'yı etkinleştir
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA));
// Pinleri dijital çıkış olarak yapılandır
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, DATA_PIN | CLOCK_PIN | LATCH_PIN);
Pinler yapılandırıldıktan sonra, her biti göndermek ve ilgili saat darbelerini oluşturmak için bir döngü kullanılarak 74HC595’e veri gönderilebilir.
Örneğin, kaydırma yazmacına 0x55 (ikili olarak 01010101) değerini göndermek için:
uint8_t data = 0x55;
// Mandal verisini düşük seviyeye çek
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, 0);
// Her biti gönder
for (int i = 7; i >= 0; i--) {
// Veriyi ayarla
GPIOPinWrite(GPIO_PORTA_BASE, DATA_PIN, (data >> i) & 1);
// Saat darbesi oluştur
GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 1);
GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 0);
}
// Çıkışı güncellemek için mandal verisini yüksek seviyeye çek
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, LATCH_PIN);
Yukarıdaki kod, verinin her biti üzerinde, en anlamlı bitten (MSB) başlayarak döngü yapacaktır. Her bit DATA_PIN’e yazılır, ardından biti kaydırma yazmacına kaydırmak için CLOCK_PIN’de bir saat darbesi oluşturulur. Son olarak, verileri mandallamak ve 74HC595’in çıkışını güncellemek için LATCH_PIN yüksek seviyeye ayarlanır.
TivaC ile 74HC595 kaydırma yazmacı aracılığıyla çevre birimlerini kontrol etmek, kaydırma yazmacının nasıl çalıştığını ve TivaC üzerindeki GPIO pinlerinin nasıl yapılandırılacağını anlamayı gerektirir. TivaWare kütüphane fonksiyonlarını ve basit kontrol mantığını kullanarak, birçok farklı çevre birimiyle kolayca iletişim kurabilirsiniz.