Bu eğitimde, iki ATMEGA8 mikro denetleyicisi arasında bir seri iletişim kuracağız. Burada kurulan iletişim UART (Evrensel Asenkron Alıcı Verici) tipidir. Bu seri iletişim sayesinde, çeşitli gömülü sistemlerde gerekli olan iki mikro denetleyici arasında veri paylaşılabilir.
Gerekli Bileşenler
Donanım: ATMEGA8 (2 parça), güç kaynağı (5v), AVR-ISP PROGRAMMER, 100uF kapasitör (güç kaynağına bağlı), 1KΩ direnç (iki parça), LED, Düğme.
Yazılım: Atmel studio 6.1, progisp veya flash magic.
Devre Şeması ve Açıklaması
Anlamamıza edelim AVR mikroişlemcileri seri haberleşme. Burada ATMEGA, verileri seri olarak diğer ATMEGA'ya gönderir. Başka bir iletişim modu var, ancak kolay iletişim için RS232'yi seçiyoruz. Birinci ATMEGA8'in RS232 pini, ikinci ATMEGA8'in RXD pinine bağlanır.
Oluşturulan veri iletişimi aşağıdakilere sahip olacak şekilde programlanmıştır:
- Sekiz veri biti
- İki durdurma biti
- Eşlik kontrol biti yok
- 2400 BPS Baud hızı (Saniyedeki Bit Sayısı)
- Eşzamansız iletişim (İki ATMEGA8 arasında saat paylaşımı yok)
Dolayısıyla, biri VERİCİ, diğeri ALICI olarak hareket eden iki ATMEGA8 için iki farklı kayıt kaydımız var.
Şimdi, iki ATmega mikro denetleyici arasındaki RS232 arabirimi için, VERİCİ ve ALICI için aşağıdaki özelliklerin sağlanması gerekir:
1. İLK kontrolörün TXD pini (veri alma özelliği) TRANSMITTER için etkinleştirilmeli ve ikinci kontrol cihazının RXD pini, ALICI için etkinleştirilmelidir.
2. İletişim seri olduğundan, veri baytının ne zaman alındığını bilmemiz gerekir, böylece tam bayt alınana kadar programı durdurabiliriz. Bu, bir verinin tam bir kesinti almasını sağlayarak yapılır.
3. VERİ, 8 bit modunda kontrolöre iletilir ve alınır. Böylece kontrolöre bir seferde iki karakter gönderilecektir.
4. Modül tarafından gönderilen verilerde hiçbir eşlik biti, bir durak biti yoktur.
Yukarıdaki özellikler denetleyici kayıtlarında ayarlanır; kısaca tartışacağız,
KOYU GRİ (UDRE): (TRASMITTER TARAFI) Bu bit, başlatma sırasında ayarlanmaz, ancak çalışma sırasında vericinin iletime hazır olup olmadığını kontrol etmek için kullanılır. Daha fazla ayrıntı için TRASMITTER SIDE programına bakın.
AÇIK GRİ (RXC): (ALMA TARAFI) Bu bit, başlatma sırasında ayarlanmaz ancak çalışma sırasında alıcının veri almaya hazır olup olmadığını kontrol etmek için kullanılır. Daha fazla ayrıntı için ALICI TARAF'daki programa bakın.
VOILET (TXEN): (TRASMITTER SIDE) Bu bit, TRASMITTER SIDE üzerindeki verici pinini etkinleştirmek için ayarlanır.
KIRMIZI (RXEN): (ALMA TARAFI) Bu bit veri alma özelliğini temsil eder, bu bit modülden verinin kontrolör tarafından alınması için ayarlanmalıdır, ayrıca kontrolörün RXD pinini etkinleştirir.
BROWN (RXCIE): Bu bit, başarılı veri alımından sonra bir kesinti almak için ayarlanmalıdır. Bu biti etkinleştirerek, 8 bit veri alımından hemen sonra öğreniriz. Bu parçayı burada kullanmayacağız, bu yüzden yalnız bırakılacak.
PINK (URSEL): Bu bit, UCSRC'de diğer gerekli bitleri ayarladıktan sonra UCSRC'de diğer bitleri etkinleştirmeden önce ayarlanmalıdır; URSEL devre dışı bırakılmalı veya sıfırlanmalıdır. Bu parçayı burada kullanmayacağız, bu yüzden yalnız bırakılacak.
SARI (UCSZ0, UCSZ1, UCSZ2): (ALMA TARAFI & TRASMITTER TARAFI) Bu üç bit, tek seferde aldığımız veya gönderdiğimiz veri bitlerinin sayısını seçmek için kullanılır.
İki ATMEGA arasındaki iletişim sekiz bit iletişim olarak kurulur. İletişimi tabloyla eşleştirerek, UCSZ0, UCSZ1'i bire ve UCSZ2'yi sıfıra indirdik.
Bunları hem alıcı hem de ileten tarafa ayarlamalıyız.
TURUNCU (UMSEL): (ALMA TARAFI VE TUTUCU TARAFI) Bu bit, sistemin asenkron (her ikisi de farklı saat kullanır) veya senkronize (her ikisi de aynı saati kullanır) iletişim kurup kurmadığına göre ayarlanır.
Her iki kontrolör de herhangi bir saati paylaşmaz. İkisi de kendi iç saatlerini kullandıkları için. Bu nedenle, her iki denetleyicide de UMSEL'i 0 olarak ayarlamamız gerekir.
YEŞİL (UPM1, UPM0): (ALMA TARAFI & TRASMITTER TARAFI) Bu iki bit, iletişimde kullandığımız bit paritesine göre ayarlanır.
ATMEGA, veri aktarım uzunluğu küçük olduğu için veri kaybı veya hatası olmayacağı için verileri paritesiz göndermek üzere programlanmıştır. Yani burada herhangi bir denklik belirlemiyoruz. Bu yüzden, hem UPM1 hem de UPM0'ı sıfıra ayarlıyoruz ya da bırakılıyor çünkü tüm bitler varsayılan olarak 0'dır.
MAVİ (USBS): (ALMA TARAFI VE TETİKLEME TARAFI) Bu bit, iletişim sırasında kullandığımız durdurma bitlerinin sayısını seçmek için kullanılır.
Burada kurulan iletişim asenkron tiptedir, bu nedenle daha doğru veri iletimi ve alımı için iki durdurma biti kullanmamız gerekir, dolayısıyla her iki kontrolörde de USBS'yi '1' olarak ayarladık.
Baud hızı, uygun UBRRH seçilerek denetleyicide ayarlanır.
UBRRH değeri, baud hızı ve CPU kristal frekansı çapraz referans alınarak seçilir.
Dolayısıyla çapraz referansla UBRR değeri '25' olarak görülür ve böylece baud hızı ayarlanır.
Devrede gösterildiği gibi, verici tarafına bir düğme bağlanır. Bu düğmeye basıldığında VERICI tarafından sekiz bitlik bir veri gönderilir ve bu veri ALICI tarafından alınır. Bu verileri başarıyla aldığında, kendisine bağlı LED'i AÇIK ve KAPALI konuma getirir, bu da iki kontrol cihazı arasında başarılı veri aktarımını gösterir.