Upload
yori
View
92
Download
0
Embed Size (px)
DESCRIPTION
ARM Tabanlı Mikrodenetleyici Temelleri ve Programlama. TUNA AYAN www.tuna-ayan.com [email protected]. BAŞLAMADAN ÖNCE. GPS Modülü İle Konum Belirleme I2C Haberleşme Protokolü Magnetometre İle I2C Haberleşmesi GPIO, ADC , Timer ve UART Uygulamaları. GPS İLE KONUM BELİRLEME. - PowerPoint PPT Presentation
Citation preview
TUNA AYAN
www.tuna-ayan.com
ARM Tabanlı Mikrodenetleyici
Temelleri ve Programlama
• GPS Modülü İle Konum Belirleme
• I2C Haberleşme Protokolü
• Magnetometre İle I2C Haberleşmesi
• GPIO, ADC, Timer ve UART Uygulamaları
BAŞLAMADAN ÖNCE
GPS İLE KONUM BELİRLEME
GPS(Global Positioning System):
• Uydular ile arasındaki mesafeyi ölçerek konumunu bulan sistemdir.
• Bu sistem 24 adet uydudan oluşur. GPS alıcısı ise bu uydulardan gelen sinyal zamanlarını yorumlayarak konumunu hesaplar.
• Konum hesaplamasını üçgenleme metodu olarak adlandırılan bir metot kullanarak gerçekleştirir.
GPS İLE KONUM BELİRLEME
GPS(Global Positioning System):
• Uydular ile arasındaki mesafeyi ölçerek konumunu bulan sistemdir.
• Bu sistem 24 adet uydudan oluşur. GPS alıcısı ise bu uydulardan gelen sinyal zamanlarını yorumlayarak konumunu hesaplar.
• Konum hesaplamasını üçgenleme metodu olarak adlandırılan bir metot kullanarak gerçekleştirir.
GPS İLE KONUM BELİRLEME
GPS Nasıl Çalışır:
• GPS ile uydular arasında her hangi bir açı bilgisi gelmez.
• İlk olarak 24 uydunun hepsiyle iletişime geçer.
• Daha sonra kendisine en yakın olan 3 adet uydu yardımıyla konumunu belirler.
• Uydudan uzaklık bilgisini aldıktan sonra o uyduyu merkez kabul ederek çevresinde yarı çapı uzaklık olan bir çember çizer.
GPS İLE KONUM BELİRLEME
GPS Modul Uzaklık Bilgisini Nasıl Kullanıyor :
• Yol = Hız x Zaman
• Zaman olarak sinyalin seyahat zamanı bilgisini kullanıyor. Uydu sinyal cevabını gönderirken o anki saat bilgisini de gönderecektir.
• Her uydudan aynı anda veri alındığı kabul edilmektedir. GPS hatalarının nedenlerinde birisi budur.
• Hız olarak sinyalin hızı kullanılır. (ışık hızı)
GPS İLE KONUM BELİRLEME
GPS Modul Uzaklık Bilgisini Nasıl Kullanıyor :
• Yol = Hız x Zaman
• Zaman olarak sinyalin seyahat zamanı bilgisini kullanıyor. Uydu sinyal cevabını gönderirken o anki saat bilgisini de gönderecektir.
• Her uydudan aynı anda veri alındığı kabul edilmektedir. GPS hatalarının nedenlerinde birisi budur.
• Hız olarak sinyalin hızı kullanılır. (ışık hızı)
GPS İLE KONUM BELİRLEME
GPS Modül Hataları:
• GPS sinyallerini gönderirken havadaki partiküller nedeniyle sinyal hızı yavaşlayabilir(ışık hızı)
• GPS ve Uydu arasındaki zaman kaymaları(saat hataları) sinyal zamanını etkilecektir.
Hataların Giderilmesi:
• Bu hatalar çift yönlü frekans hesabı ile iki taşıyıcı sinyal arasındaki gecikme kullanılarak çözülebilmektedir.
• A-GPS(assisted GPS) yöntemi ile hatalar azaltılabilmektedir.
• Saat doğruluğu için GPS modül üzerinde atom saati kullanılarak zaman kayması giderilebilir.
GPS İle Konum Belirleme
GPS Modül Çıktılarının Yorumlanması:• GPS Modül üzerinde
NMEA protokolü ile bilgileri alacağız.
• GPS modül bize bir çok bilgi göndermektedir. Data paketleri içerisinden istediğimiz verileri ayrıştırmak ve yorumlamak zorundayız.
• GGA paket verisi üzerinden koordinat bilgilerimizi çekeceğiz.
I2C HABERLEŞME PROTOKOLÜ
I2C Nedir:• I2C bir haberleşme protokolüdür. 2 kablo ile bir çok cihaza
erişebilmemizi sağlar.
• Hızlı olması bir çok cihazla sadece iki kablo üzerinden haberleşmesi tercih nedenleridir.
• Kısa mesafeli bir protokoldür.
I2C HABERLEŞME PROTOKOLÜ
I2C Özellikleri:• SDA(Data kablosu) ve SCL(Clock kablosu) kabloları ile
haberleşme gerçekleştirilir.
• SDA ve SCL çıkışları open-drain yani ‘low’ konumda sürülürler.(0volt)
• Sistem pull-up direnç ile sürülmek zorundadır. Sisteme bağlı cihaz sayısı pull-up direnç sayısını etkilemez. 1 tane yeterlidir.
I2C HABERLEŞME PROTOKOLÜ
I2C Özellikleri:• Master ve Slave olmak üzere iki moda sahiptir. Master komut
veren slave ise cevap veren kısımdır. I2C destekleyen bir modül iki şekilde de ayarlanabilir.
• Data transferini her zaman master başlatır. Slave data transferini başlatamaz.
• SDA bacağında bilgi çift taraflı gönderilebilir. SCL kısmında bilgi taşınmaz. Sisteme ortak clock vermek senkronizasyonu sağlamak için kullanılır.
I2C HABERLEŞME PROTOKOLÜ
I2C Nasıl Çalışır:• Master slave ile konuşmak istediğinde önce start sinyali
gönderilmelidir.
• Veri gönderildikten sonra ise stop sinyali gönderilmelidir.
• Start yada stop işlemi SCL saati 1 konumunda iken SDA nın değişmesine göre belirlenir.
• Veri transferi tamamlandıktan sonra bir adet ACK sinyali oluşur. Bu yüzden 8 bitlik veri transferinde 9 bit çıktı alırız.
I2C HABERLEŞME PROTOKOLÜ
I2C Nasıl Çalışır:• Veri 8-bit paketler halinde taşınır.
• Her bir bit SDA yoluna MSB(Most significant bit) olarak atanır.
• Standart SCL hızı 100KHz dir. 400KHz e kadar çıkabilir.
• Cihazlar ile haberleşebilmek için cihazların bir kişisel adresi olmak zorundadır. Bu adres slave adres olarak tanımlanır.
• Slave adresleri 7 bit tir.
I2C HABERLEŞME PROTOKOLÜ
I2C Algoritması:• Master Start sinyalini gönderir.
• Master Cihaz adresini gönderir.(Slave adres)
• Slave üzerinden okumak ya da yazmak istediği register adresini gönderir.
• Yazma ya da okuma yapar.
• Bütün yazma ve okumaları bittikten sonra stop sinyalini gönderir.
MAGNETOMETRE İLE I2C HABERLEŞMESİ
Magnetometre Nedir:• Manyetik alanın doğrultusunu hesaplamamıza yarayan
modüldür.
• Hesaplama birimi tesla dır.
• Metal detektörlerde kullanılabilir.
• Yönelme uygulamalarında kullanılır.
MAGNETOMETRE İLE I2C HABERLEŞMESİ
MAG3110:• 3 eksenli bir magnetometre modülüdür.
• I2C protokolü ile çalışır.
• I2C adresi = 0x0E
MAGNETOMETRE İLE I2C HABERLEŞMESİ
StellarisWare I2C Algoritması(yazma işlemi):• I2C Modülü aktif hale getirilir.
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);
• LM3S811 i master olarak tanımla. Hızını 100kbps olarak tanımlaI2CMasterInitExpClk(I2C0_MASTER_BASE, SysCtlClockGet(), false);
• Cihazın Slave adresini tanımla. false yazma true okuma anlamına gelir.I2CMasterSlaveAddrSet(I2C0_MASTER_BASE, SLAVE_ADDRESS, false);
• Gönderilecek datayı buffer üzerine alI2CMasterDataPut(I2C0_MASTER_BASE, ulDataTx[i]);
• Start sinyali ile birlikte gönderimi başlat.I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_START);
• Transfer bitene kadar beklewhile(I2CMasterBusy(I2C0_MASTER_BASE))
• Veri gönderme bittikten sonra stop sinyalini gönder.I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_BURST_SEND_FINISH);
MAGNETOMETRE İLE I2C HABERLEŞMESİ
StellarisWare I2C Algoritması(okuma işlemi):• Önce magnetometre üzerinde okunacak reg adresi sisteme yazma işlemi ile
yazılır. Ardından okuma yapılır.I2CMasterSlaveAddrSet(I2C0_MASTER_BASE, SLAVE_ADDRESS, false);
I2CMasterDataPut(I2C0_MASTER_BASE, 0x01);
I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_SINGLE_SEND);
• Slave adresi bu sefer okumak için gönderilir. (true)I2CMasterSlaveAddrSet(I2C0_MASTER_BASE, SLAVE_ADDRESS, true);
• Data okuma isteği gönderilir.I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_BURST_RECEIVE_START);
• Transfer bitene kadar beklenir.while(I2CMasterBusy(I2C0_MASTER_BASE))
• Veri kaydedilir.Data[0] = I2CMasterDataGet(I2C0_MASTER_BASE);
• Data çekilmeye devam edilebilir.I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_BURST_RECEIVE_CONT)
while(I2CMasterBusy(I2C0_MASTER_BASE))
• Okuma bitince stop sinyali gönderilir.I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_BURST_RECEIVE_FINISH);