Gelişen mikrokontrol teknolojileri ve artan bilgi birikimi sayesinde geliştirici düzeyinde daha yaygın kullanımına olanak tanımıştır. Burada elimden geldiği kadar bazı örnekler sunmaya çalışacağım... Görüleceği gibi ilk örneklerimizde çoğunlukla ASM üzerinde iken daha sonraları C üzerinde örnekler yer almaktadır. Hatta ilerleyen zamanlarda Arduino örneklerinin yer alması kaçınılmaz olacaktır.

18 Ekim 2014 Cumartesi

Attiny2313 ile LCD ekranlı Mutfak Zamanlayıcısı


Yemek yapan kişiler için pişen yemeğin tadı pişme süresi ile yakından ilgilidir.En basit yemeklerden makarna ve yumurta pişirme ise çoğunlukla pişme süresi çok önemlidir.Yumurta haşlamada pişme süresi ayarı rafadan ile katı pişmiş arasındaki ayrımı belirler. Makarnada ise sert makarna ile iyice yumuşamış makarna arasındaki ayrımı belirler. Gerçi günümüzde ocakların ve fırınların üzerinde zamanlayıcı bulunan modeller mevcuttur, herkes için erişilebilir bir ürün olmaktan uzak oldukları bir gerçek.

Saat tutarak pişirmek, özellikle başka bir işle meşgul kişilerin çoğunlukla saati kaçırması ile sonuçlanır. Her ne kadar ucuz bir mutfak zamanlayıcısı almak o kadar sorun değildir. Tabii hiçbir şey kişinin kendi ürettiği bir aleti kullanması yerini tutamaz, satın alınan daha iyi olsa bile.

Bu projede "Attiny2313 ile LCD ekranlı Mutfak Zamanlayıcısı" projesi üzerinde çalışılacaktır.

Mutfak zamanlayıcı
Bu projedeki devre geriye doğru sayan bir saat veya çözünürlüğü 1 saniye olan kronometredir tabii sayıcı 0'a ulaştığında sesli alarm vermesi ile birlikte.

Yemek pişirmek için kullanılan ısıtıcıların ne kadar süre ile kullanılacağı pişen yemeğe, çevre ve su sıcaklığı gibi parametreler bağlı olsa da, tüm bunlar birlikte zamana bağlı olmaktadır. Örneğin makarna veya hazır çorba paketlerine bakarsanız, pişme süresi ile ilgili öneriler göreceksiniz. Bu önerilere uymanız, tamamen damak tadınıza bağlıdır. Hazır çorbayı fazla kaynatırsanız, koyu olacak, az kaynatırsanız, çiğ kalacağı için damak tadınızı bozacaktır. Aynı şekilde makarnayı az pişirirseniz, sert olacak yiyemeyeceksiniz, çok fazla pişirirseniz, makarna hamurlaşacak yemekten hoşlanmayacaksınız. Zevk meselesi.

Her ne kadar mutfak zamanlayıcısı olarak isimlendirilse de, zamanlama işlemi gereken diğer işlerde de kullanımı mümkündür.
Sayıcı
Şekil-1 :Devrede kullanılan sayma prensibi.

Saat sayma işlemini bilirsiniz:
Saniye sayacı 60'a ulaştığında (59'dan sonra) sıfırlanır dakika sayacı bir artar.
Dakika sayacı 60'a ulaştığında (59'dan sonra) sıfırlanır saat sayacı bir artar.
Saat sayacı 24'e ulaştığında sıfırlanır.

Zamanlayıcı da ise her zaman için geriye doğru sayma söz konusudur. Zamanlayıcı belirlenmiş bir saat, dakika ayarı üzerinden geriye doğru sayar, Sayma işleminde:
Dakika 0'ın altına indiği zaman saat'den 1 azaltılır, ve dakika 59 olarak atanır.
Saniye 0'ın altına indiği zaman dakika'dan 1 azaltılır ve saniye 59 olarak atanır.

Saat,dakika,saniye; 00:00:00 olduğu zaman (bu saniye 1 azaltıldığı zaman, sürekli kontrol edilen bir işlemdir) alarm iki ses tonu arasında değişen bir çıkış verir. Bu noktada cihazı ister sıfırlar, ister kapatırsınız.
Devre
Şekil-2 :Yapılmış halde devre. Soldaki buton, orta üstteki hoparlör, ortadaki işlemci kartı ve sağdaki modül LCD

Devrede 2 satır 8 karakter 4 bit modunda arka plan aydınlatması olmayan (akım harcamasını azaltmak için) LCD kullanılmıştır. LCD modülün 4 bit modunda kullanılmasının sebebi bacak sayısından tasarruf ederek, 20 bacaklı Attiny2313 ile kullanabilmek içindi.

Şekil-3 :İşlemci devresinin önden görünümü (SMD) 10 trimpot SMD olmamasına rağmen bacaklarını biraz kesme, biraz kıvarma ile SMD haline getirildi) ISP portu için kullanılan 2x3 sıra pin konnektör ne yazık ki SMD elde edilemediği için dip model kullanılmış, yolların olduğu taraftan lehimlenmiştir.

Şekil-4 :İşlemci devresinin arkadan görünümü (SMD).Görüldüğü gibi arkada sadece kristal ve bir köprü bulunmaktadır. Kart üzerinde siyah nokta ile işaretli yer delinerek kutu içine montajda vida deliği olarak kullanılacaktır.

Besleme için 78M05 türü analog bir regülatör kullanılmıştır(alet kutularımda halihazırda bulunduğu için). Bu entegrenin akım harcaması biraz fazla olmakla birlikte, istendiği takdirde besleme bölümü anahtarlama bir regülatör ile değiştirilmesi mümkündür.
Şekil-5 :Projede kullanılan LCD ekran. Aslında tek satır olsada daha iyi olurdu.

Devre tasarımı esnasında tek sıra pin bacak bağlantılarına göre PCB çıkarılmış, daha sonra 2 satır 8 karakter LCD kullanımına karar verildiğinden haliyle bacak bağlantıları biraz uyumsuz kalmasına neden olsa da, iyi de olmuştur, yoksa bacak bağlantıları sıra pin kullanımı ile birlikte projedeki kutunun kullanımı mümkün olmayacağı ortada.

Şekil-6 :Bir dizüstü bilgisayardan sökülmüş hoparlör. Görünüşe aldanmayın, kendi küçük olmasına rağmen sesi baya iyi..

Hoparlör olarak dizüstü bilgisayarlardan çıkma olarak elde edilen ince küçük bir hoparlör kullanılmıştır. Bu sayede hoparlörün kutu içine monte edilmesine olanak tanımıştır. İlk tasarımda piezoseramik hoparlör diskler kullanımı düşünülmüş ve yeterli verim sağlanamadığı için vazgeçilmiştir.

Şekil-7 :Ayarlar için kullanılan butonlar. Tasarım esnasında düşünülmediği için, sonradan PCB üzerindeki bakır maket bıçağı ile çizilerek oluşturuldu.

Buton olarak küçük örümcek buton olarak tanımlanan ürün kullanılmış, özellikle basma çubukları uzun olması sayesinde kart rahatlıkla sabitlenebilmiştir. Aslında devre tasarımını oturtmamda bu butonlar ilham kaynağı olmuştur.
Şekil-8 :Devrenin kullanıldığı yerin mutfak olması durumu açısından bir kutu içinde olmasını gerektirir. Proje için düşünülen kutu, delikleri açılmış halde...Kendim kullanmayı planladığım ve yerin dar olması nedeniyle, elemanların yerleşiminden kaynaklanan sınırlamalarla kutu üzerinde fazla özenmediğim bir gerçek.

Piyasada hazır satılan plastik kutu ile kutulanması yerinde olacaktır. Bu kullanım açısından oldukça kolaylık sağlayacaktır. Özellikle mutfakta kullanım esnasında ellerin ıslak olma ihtimaline karşılık bu önemli bir konu haline gelmektedir.
Şekil-9 :Devrenin kutu içine monte edilmiş hali.

Şema
Devrenin kalbini IC1 (Attiny2313) oluşturmaktadır. Her ne kadar çok gerekli değilsede devre tasarımında tercih etme yolunu gittiğimiz, C5,C6 (27pf) ve XT1 (4MHz) kristal ile işlemci için gereken saat darbelerini üretir. R1 (10K trimpot) P1 ile gösterilen LCD modül için kontrast ayarını sağlar. R2 (10k) pull up direnci o kadar gerekli değildir istenirse kullanılmayabilir.

IC2 (78M05) entegresi 9V besleme geriliminde devre için gereken 5V gerilimini regüle eder.
R3...R6 (10k) dirençler butonlar için pull up direncini oluşturur. S1 ve S4 butonları Mutfak zamanlayıcısı için ayar ve kontrol butonlarını oluşturur. Ve butonlara bağlı C9..C12 (100nF) kondansatörler tuş sıçramalarına karşı filtre olarak iş görür.

C7 (10µF) kondansatör hoparlör bağlantısı için (PCB üzerinde gösterilmemiştir) DC akımlara karşı filtre görevi görür. (dikkat edilirse kondansatör üzerinde kutup belirtilmemiştir)

ISP artık bilindiği üzere programlama için konnektördür.

Belirtilmeyen kondansatörler filtre amaçlıdır.
Şekil-10:Devrenin blok şeması

Şekil-11:Devre şeması

Devre Yapımı

Devre küçük bir kutuya sığdırma kaygısından SMD yoluna gidilmiştir. Sadece birkaç eleman DIP yapısında. İstendiği veya bulunabildiği takdirde bu elemanların SMD ile değiştirilmesinde bir sorun yoktur. Devrenin SMD olmasından dolayı devrenin montajında dikkatli olunması gerekliliği ortadadır. Özellikle IC1 (Attiny2313) lehimlerken soğuk lehim veya kısadevre olmaması için dikkat etmek gereklidir.
Şekil-12:PCB şeması, yollar

Şekil-13:Kartların eleman yerleşimi.

Şekil-14:Kartların alttaki (SMD) eleman yerleşimi

Şekil-15:Kartların yolları birlikte eleman yerleşimi

Şekil-16:Kartların yolları birlikte alttaki (SMD) eleman yerleşimi

Şekil-17:Kartın arkadan görünümü

Şekil-18:LCD ve işlemci kartı bağlantıları

Şekil-19:Buton ve işlemci kartı bağlantıları

Şekil-20:Hoparlör ve besleme ile işlemci kartı bağlantıları

Devre Elemanları
10K yatık trimpotR1
10K (1206 smd)R2,R3,R4,R5,R6
0R (1206 smd)J1,J2,J3
27pF (1206 smd)C5,C6
100nF (1206 smd)C1,C2,C3,C4,C9,C10,C11,C12
10µF (1206 smd)C7
10µF (smd tantal)C8
ABC008002D13 (2x8 LCD)P1 (modül)
78M05 (DPAK2)IC2
Atiny2313 (SOIC20)IC1
4MHz KristalX1
6 Header (ISP6)ISP
Küçük örümcek butonS1,S2,S3,S4
14 bacak IDC erkek-kart tipi-
14 yollu yassı kablo-
9V pil soketi-
SPST anahtar-
9V pil-

Devrenin Çalıştırılması
Şekil-21:Kartların kutuya montajı

Şekil-22:Kartların kutuya monte edilmiş hali

Kutuya monte edilen cihaz pil takılıp kapatıldıktan sonra, kullanıma hazırdır. Tek yapılması gereken aç/kapa anahtarını "" konumuna getirmektir. Ekranda açılacak ve ekran üzerinde "00:00:00" görülecektir.

Bu durumda aleti ayarlamak için (1) nolu buton ile saat, (2) nolu buton ile dakika ayarı yapılır. Bu ayar sayıcının başlangıç değerini oluşturur. (3) buton basma ile sayıcı geriye doğru saymaya başlayacaktır. Sayıcıyı durdurmak için (3) nolu buton tekrar basıldığında bu işlemi yerine getirir.Yani (3) nolu butona bas başlasın, bas dursun. Buradaki dikkat edilecek durum ekranda "00:00:00" varken bas/durdur butonu iş yapmaz. Alarm sesi duyulduğunda (ekranda "00:00:00" görülür) veya herhangi bir değerde iken, (4) buton basarak ekran sıfırlanır ve alarm sesi kesilir.

Aletin işi bittikten sonra aç/kapa anahtarını "KAPA" konumuna getirmek yerinde olacaktır.

Not:İşlemci için enerji koruma için kullanılan uyuma ve uyandırma işlemleri öngörülmemiştir.
Şekil-23:Kutu üzerindeki butonların işlevleri

Ekler:

Attiny2313 hakkında bilgi için

"Attiny2313 ile LCD ekranlı Mutfak Zamanlayıcısı" projesi için gereken dosyalar

Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A....

10 Eylül 2014 Çarşamba

Atmega328P ile bootloader yükleme

Atmega serisi ve Attiny serisi ile birçok uygulama geliştirdik. Ama bu güne kadar geliştirilen tüm ürünlerde işlemciyi programlamak için ek bir cihaza (programlayıcıya) ihtiyaç duyduk. İşlemci için program geliştirilirken ve işlemciye program yüklenirken alternatif yollar ve yöntemlerde mevcuttur. Bu alternatif program yükleme yöntemi bootloader'dir.


Bu uygulamada "Atmega328P ile bootloader yükleme" üzerinde çalışacağız.

Not Kart asıl tasarımı " http://vonkonow.com/wordpress/2012/10/nanino-the-diy-friendly-arduino/" adresindeki "Johan von Konow" ait. Biz sadece birkaç ekleme ve değişiklik yaptık.

Bootloader
Elektronik ile uğraşanlar özellikle yazılım güncellemesi gereken bazı cihazların seri port veya USB port üzerinden güncelleme (yazılım yüklemesi) yapılabildiğini rastlamıştır. Bu servis kolaylığı sağlamaktadır. Çünkü cihazın fabrikaya gönderilmesi gerekmeden, veya cihazı açmadan mikrokontroller üzerindeki yazılımı kolaylıkla yüklenebilmesine imkan sağlar. Bu yöntemin başka bir avantajı kart üzerinde özellikle SMD yapısındaki kılıflardaki mikrokontrollerlerin (sökülmesinin zorluğu ve riski bir yana) üzerinde işlem yapılması ve programlanacak mikrokontroller ve programlayıcı çeşitliliği gibi konularla uğraşması ayrı bir durumdur.
Tüm bu sorunları çözümü olarak mikrokontoller üzerine üretim esnasında bir yazılım yüklenir ve bu yazılımın tek görevi seri port, ethernet veya USB gibi iletişim yöntemleri ile gelecek verilerin (burada asıl program diyelim) mikrokontrollerin hafızasına yazmaktır. İşte bu mikrokontrollerin üzerine yazılan bu ilk programa bootloader denir. Bootloader işlemci tarafından koruma altındadır. İşlemci tamamen silinene kadar flash bellekte kalır.

8 bit mikrokontroller çipler üzerinde belki gerekli olmasada (dip kılıfındaki çiplerin kolay sökülebilmesi sayesinde) özellikle yüksek hafızalı 32 bit mikrokontrollerler üzerinde gereklidir. Kılıf yapıları ve program özellikleri nedeniyle gereklidir.

Bootloader örneği olarak yazıcılarda kullanılmaktadır. Bazen gelen yazıcı yazılımında bazı hatalar olabiliyor. Daha önemlisi üretici yazıcının daha verimli çalışması için yazılımında küçük güncellemeler yapmış olabiliyor, bu durumda yazıcının USB portu üzerinden yazıcının yazılımı kolaylıkla güncellenebilmektedir.
Şekil-1:Bootloader prensip çalışma şekli

Tüm bunların yanında başlıkta belirtilen Atmega328p işlemcisin değişik yöntemlerle programlanabilmektedir. İşlemciye başlangıçta yüklenen bootloader yazılımı sayesinde artık (bir sorun çıkana kadar) bir daha bir programlayıcıya ihtiyaç duymadan seri port üzerinden (veya usb çevirici yardımı ile) işlemciye yazılım atılıp çalıştırılabilmektedir. Bootloader özelliği taşıyan cihazların en yaygın örnekleri şu anda piyasada Arduino olarak bilinmektedir ve kullanılmaktadır.
Sonuçta projede kullanılan bootloader dosyası Arduino dosyasıdır. Dolayısı ile kolaylıkla programlayıcıı üzerinde oluşturulan dosya derlenip kart üzerine gönderilebilecektir.
Atmega328p flash bellek bölümü iki ana bölüme ayrılmıştır; uygulama bölümü ve Bootloader bölümü. Her iki bölüm kendine göre koruma bitleri ile istenirse koruma altına alınabilir.
Normalde Atmega328p çiplerinde uygulama bölümünde flash alanı yazma komutu çalışmaz. (SPM) Flash alanını yazma komutu ancak bootloader alanına yazılmış programlar tarafından kullanılabilir.
Boot loader bitlerini kullanıcı aşağıdaki gibi seçebilir;
  • Mikrokontroller tarafından yazılım güncellemesinden tüm Flash'ı koruyabilir
  • Mikrokontroller tarafından bir yazılım güncellemesinden sadece Boot Loader Flash koruyabilir
  • Mikrokontroller tarafından bir yazılım güncellemesinden sadece Uygulama Flash koruyabilir
Konu ile ilgili daha ayrıntılı bilgi Atmega328p veri kağıdında elde edilebilir. Hatta veri kağıdında örnek basit bir bootloader programı (assembler dilinde yazılmış) yer almaktadır.

Devre
Devre açısından fazla bir şey yok. İşlemci, kristal ve birkaç tane bağlantı için konnektör.
Şekil-2 :İşlemci kartı üstten görünümü

Kart üzerinde kristal olarak 16MHz kristal kullanılmıştır. (Buna göre bootoader programı yüklemeye dikkat etmek gerekir) Power olduğunu gösteren bir LED ve işlemcinin bacağına bağlı olan ek bir LED bulunmaktadır. İşlemcinin bacağına bağlı olan LED ek bir donanım kullanmadan devreyi test etmek için kullanılmaktadır.
Şekil-3 :USB çevirici olarak kullanılan FTDI232BL kartının önden ve arkadan görünümü

Devreye program yüklemek için RXD , TXD (GND) bacağı yeterli olduğu belirtilmektedir. Bu durumda devreye program yüklenirken RESET butonuna basmak gerekmektedir. Bu bacaklara ek olarak DTR (Data Terminal Ready) kullanılarak programlama esnasında otomatik resetleme sağlanarak mikrokontroller üzerinde bootloader bölümünün devreye girmesi sağlanır. Bu programlama esnasında devre üzerindeki RESET butonuna basma derdinden kurtaracaktır.

Şekil-4 :USB çevirici ile bilgisayar arasındaki bağlanıyı sağlayan USB kablosu.

Devre üzerine ek bir besleme (köprü diyot ve 7805'den oluşan) bölümü eklenmiştir. Eğer bilgisayardan ayrı bir ortamda ek bir besleme gerektiğinde kullanışlı olacaktır. Bir köprü yardımı ile besleme devreye alınabilir veya ayrılabilir. Klemens üzerine bağlanacak beslemeden 5V besleme gerilimi üretilebilir.
Şekil-5 :İşlemci ve USB çevirici kartlarının bağlantıları yapılmış hali

Devre bootloader işleminde USB-seri dönüştürücü olarak FTDI232BL çipli bir devre kullanılmaktadır. Devre şeması ve PCB ile ilgili bilgiler ayrı olarak verilmiştir. Atmega328p programlayıcı portuna IDC10 gibi bir konnektör ile bağlansada, normalde işlemci kartı üzerinde 5 bacaklı 90 derecelik sıra pin ile bağlantı sağlanmaktadır.

Burada dikkat edilecek nokta işlemci üzerinde bootloader için kullanılan RXD ve TXD bacakları işlemcinin seri (UART) haberleşmesi içinde kullanılmaktadır.

Şema
Devrede kullanılan USB çevirici hariç, projede kullanılan elemanlar IC1 (Atmega328p) sistemin kalbi olarak çalışmaktadır. IC1 (Atmega328p) bacaklarına bağlı X1 (16MHz ) kristal, C5 ve C6 (22pF) kondansatörler işlemcinin ihtiyacı olan saat frekansını üretmektedir. İşlemcinin 19 nolu bacağına bağlı olar R3 (1k) ve LED1 (LED13) işlemcinin çalışmasını test etmek üzere kullanım amacıyla monte edilmiştir. (ilk LED yak söndür uygulaması için temel elemandır)

İşlemcinin 1.bacağına bağıl S1 (anahtarı) sıfırlama işlemi için kullanılırken, bu bacak ile Vcc arasına bağlı R2 (10) direnç pull up olarak kullanılmaktadır. İşlemcinin 1. bacağı ile P6 konnektörü DTR bacağı arasına bağlı C7 (100nF) kondansatör özellikle programlama esnasında işlemcinin sıfırlanmasını sağlar.

İşlemcinin bacaklarına bağlı P2,P3,P4,P5 (dişi) konnektörleri özellikle bu kartın üzerine takılacak ek kartlar için veya ek donanımların bağlanması için bağlantı noktalarını oluşturur.

Buradaki P6 (erkek) konnektör işlemcinin bootloader programlama için bağlantı noktasını oluşturur.
Besleme hatları üzerine bağlı R1(1k) ve LED2 (PWR LED) devrenin beslemeye bağlı olduğunu belirtir.
J1 konnektörü bir köprü yardımı ile harici besleme için kullanılıp kullanılmayacağını belirtir.

P1 klemensi, D1 (2W10M) köprü diyodu ve IC2 (7805) devrenin harici besleme ile kullanımı içindir. (J1 köprü bağlı iken)

Devre üzerinde belirtilmeyen kondansatörler filtre amaçlıdır.

Şekil-6:Blok şeması

Şekil-7:Devre şeması

Devre Yapımı
Devre yapımı kondansatör ve dirençlerin SMD olmasından başka bir özelliği yoktur. Kendinize güveniyorsanız kartı tekrar dip kılıf elemanlar için tekrar çizip çıkartabilirsiniz. Bazı noktalardaki yakın lehim adalarının lehimlenirken kısa devre olmaması için dikkat etmek yeterlidir. Entegre için için 28 bacaklı dar tip soket kullanılması entegrenin bir sonraki kullanımı için yerinde bir seçenek olacaktır.
Şekil-8:İşlemci kartı yollar

Şekil-9:İşlemci eleman yerleşimi

Şekil-10:İşlemci kartı üzerindeki bakırlı taraftaki eleman yerleşimi(SMD).

Şekil-11:İşlemci yolları birlikte eleman yerleşimi

Şekil-12:İşlemci yolları birlikte SMD eleman yerleşimi

Şekil-13:İşlemci kartı monte edilmiş halde önden ve arkadan görünümü . Kondansatör ve dirençlerin SMD kılıfında olduğunu unutmayın.

şlemci kartı ile USB dönüştürücü kartı arasındaki bağlantıları ilk başlangıçta kısa kablolar ile yapılmış olsada daha sonra işlemci kartının gerektiğinde bağımsız olması gerekliliği üzerinde şerit kablo ve IDC konnektör ile (kablonun sadece USB dönüştürücü tarafı lehimlenmiştir) bağlantı yapılmasına kararlaştırılmıştır. Bu sayede gerektiğinde işlemci kartı bağımsız olarak çalışabilmektedir.

Projede kullanılan USB dönüştürücü sadece program yükleme işi için düşünülsede gerektiğinde seri port ile bilgisayar bağlantısını da yerine getirir. (USB-UART olarak çalışmaktadır.)
Şekil-14:İşlemci kartı ile USB dönüştürücü kartı arasındaki bağlantılar. Bağlantılar doğrudan kablo ile sağlanabileceği gibi, projedeki resimlerde görüldüğü gibi bağlantıları yapılan IDC10 kablo ve konnektörü ile sağlanabilir. İstenirse USB dönüştürücü tarafına kart tekrar elden geçirilip uygun bağlantılara sahip IDC konnektörü eklenebilir.

Devre Elemanları

İşlemci kartı ve ekran kartı için malzeme listesi

1K (SMD-1206)R3,R1
10K (SMD-1206)R2
22pF (SMD-1206)C5,C6
100nF (SMD-1206)C1,C2,C4,C7,
10µF (SMD-1206)C3
3mm LEDLED1,LED2
ATMEGA328P(DIL)IC1
7805IC2
W10M veya benzeriD1
2'li klemensP1
28 bacaklı entegre soketi (DIL)1 adet
1x5 header pin erkek 90 dereceP6
1x2 header pin erkekJ1
1x8 header pin dişiP2,P3
1x6 header pin dişiP4,P5
butonS1
Malzeme listesinde USB çevirici verilmemiştir. Bu tamamen kullanıcının tercihine bırakılmıştır.

Hazırlık
Şekil-15:Bootloder dosyasının bulunduğu yer ve bilgisayar üzerindeki simge görünümü.

İşlemcinin başka bir kart üzerinde veya programlayıcı üzerinde programlanması gerekmektedir. Tabii kart üzerine ISP bağlantıları ayrı ayrı yapılmayacaksa. Kart üzerinde ISP olarak tanımlanmış (Normalde SPI +REST bacaklarını kapsayan) bacaklar üzerinden bir programlayıcı bağlanarak programlama yapılabilir.
Şekil-16:İşlemci farklı olsada AVRISP MKII programlayıcı bağlantısı ve görüntüsü. Programlayıcının kablosu kart üzerinde ISP olarak tanımlanan (2x3) konnaktöre takılır.

Not: Örnek olarak verilen AVRISP MKII olmasının nedeni elimde sadece bu programlayıcının olmasından kaynaklanmaktadır. Siz isterseniz kendinize uygun bir programlayıcıyı seçebilir ve kullanabilirsiniz.


Şekil-17:AVR Studio programlama ana penceresi "Maim" sekmesi. "Device and Signature Bytes" başlığı altında "Atmega328p" seçili olduğuna emin ol. "Read Signature" butonuna basılırsa işlemcinin kodu görüntülenir.

Gereken bootloder programı bilgisayarınıza yüklenen Arduino yazılımının içinde "C:\Program Files\Arduino\hardware\arduino\avr\bootloaders\atmega " yolu üzerindeki klasörde bulunmaktadır. İşlemciye yüklenecek program "ATmegaBOOT_168_atmega328.hex" olarak belirtilmektedir.


Şekil-18:"Program" sekmesi altında "Flash" bölümünde programlanması istenen hex dosyası seçilir ve "Program" butonuna tıklanır. Seçilmiş olan hex dosyası işlemcinin flash belleğine aktarılır.

NotBurada verilen örnek yol ve program değişiklik gösterebileceğini göz önüne almanız gerekmektedir.
Şekil-19:Sigorta ayarları. Buradaki görüntü sadece fikir vermesi açısından AVR Studio görüntüsüdür. Kullanılacak farkli programlayıcılarda farklı ayarlar görülenecektir.

Program işlemciye yüklendikten sonra sigorta ayarlarını ("Fuses" sekmesi altında)

low fuses=0xFF 
high fuses=0xDE 
extended fuses=0x05

şeklinde elle değer girerek ayarlıyor ve "Program" butonuna basılarak yazılıyor.
Şekil-19:"LockBits" sekmesi altında koruma bitlerinden sadece boot bölümü ile ilgili olanların seçilmesi gerekir.

Aynı şekilde sigorta ayarlarından koruma bitlerini (LockBits sekmesi altında)

lock bits=0x0F


şeklinde elle girerek ayarlayıp, "Program" butonuna basılarak yazılıyor. Dikkat edilirse sadece Boot bölümü ile ilgili ayarları değişecektir.

Tek yapılması gereken artık işlemcinin burada monte edilmiş kartın üzerine takmak. Programlama portuna gerekli bağlantıyı yapıp bilgisayarın USB portuna bağlamak. Bu noktada aslında seri port üzerinden haberleşme sağlanacağı için atanan seri port numarasının öğrenilmesi gerekiyor. Bilgisayar sistemleri arasında değişiklik gösterebileceği için sizinkini anlatan belgeleri internetten aramanız yerinde olacaktır.

Not: Arduino programını incelerseniz,  bazı programlayıcılar ile doğrudan işlemcinin (Atmega serisi) programlanabildiğini görebilirsiniz.

Programlama
Şekil-20:Montajı tamamlanmış, bağlantıları yapılmış ve programlanmış sistem.

Şekil-21:İşlemci kartı üzerindeki programlama pinlerine bağlı USB dönüştürücü kablosu. Ters takılmamasına dikket etmek gereklidir.Konnektörün iki sırası da bağlantı için kullanılabilir. Kart üzerine yerleştirilmiş pinler yüzünden sadece bir sırası kullanılabilmektedir.

Kart monte edildi, programlama konnektörüne FTD232BL kartı bağlantısı yapıldı ve bilgisayarın USB portuna kablo ile bağlantı sağlandı.

NotBurada verilen USB çevirici kullanmanız gerekli değildir. Herhangi bir USB dönüştürücü veya bilgisayarınız uygunsa RS232 dönüştürücü de kullanabilirsiniz.


Şekil-22:Yan-sön (blink) LED programını örnek dosyasını yükleme.

Bilgisayar üzerinden Arduino programını çalıştırmak gerekiyor. Programı kendiniz yazabileceğiniz gibi "Dosya-Önekler-01.Basic--Blink" dosyasını seçip açmak. Yeni bir pencerede program açılacaktır.
Şekil-23:USB çeviricinin bilgisayarda atadığı sanal portu seçme.

"Araçlar-Port-COMx" (COMx USB dönüştürücünün bağlı olduğu portu tanımlar) uygun port seçilir. Pencere üzerinde "Yükle" butonuna tıkla.

Şekil-24:Son olarak "Yükle" butonuna tıklandığında program derlenecek ve mevcut bağlantı üzerinden işlemcie yüklenecektir.

Program derlenecek ve seri port üzerinden işlemci kartındaki Atmege328P işlemcisine yüklenecektir. Kart üzerinden LED1 ( LED13) 1 saniye aralıkla yanıp sönmeye başlayacaktır.

Artık istenen her program yüklemesi sadece "Yükle" butonuna basma veya "Dosya -Yükle" menüsünden seçme ile gerçekleştirilebilir.

Programlama ile ilgili örnekler ve komut seti bu program üzerinde yer almaktadır.

Sonuç
Elimizde örnek olduğu için bootloader Arduino ve nanino uygulamaları üzerinden anlatılmıştır. İstenildiği takdirde kendi bootloader programınızı oluşturmanız mümkündür. USB-seri dönüştürücü olarak FTDI232BL ile yapılmış blogda uygulaması yapılan bir devre önersek de, hazır veya kendizin yaptığı bir dönüştürücü kullanabilirsiniz. Burada size gereken 5V, RXD, TXD DTR ve GND uçlarıdır. Eğer devrenizi harici olarak besleyecekseniz,  o zaman USB çeviricide 5V ucu gerekli değildir.
Şekil-25:Tabii ki projede anlatılan kartı öyle çıplak kullanılacak değil, bu kartı çeşitli ek kartlar ile daha geliştirmek gerekir. Soldan sağa doğru yapılmış bazı ek kartlar: 74HC595 için LED sürücü kart, ENC28J60 için ethernet kartı, SD kart için sürücü kartı ve en sağdaki karakter LCD için (ve LM35 için) ek sürücü kartı. (Renkli konnekteörler kart üzerinde güzel duruyormuş)

Bu projede anlatılan kart tek başına kullanılabildiği gibi çeşitli çevre birimleri kontrol etmek içinde kullanılabilir. Çevre birimler konnektörler üzerinden kablolar ile bağlanabildiği gibi  üzerine yapılacak ek bir kart ile de gerçekleştirilebilir.

Not: Kendi adıma uzun zamandır özellikle SPI portunu kullanan uygulamalardan kaçındım. Çünkü bu port aynı zaman işlemcinin ISP programlama bacaklarını kapsıyordu. Bu türden bir uygulama elbette benim için biçilmiş kaftan oldu. Şekil 25 üzerindeki kartlar ile ilgili projeleri uygun bir zamanda eklemeyi planlamaktayım.





Ekler:

"Atmega328P ile bootloader yükleme" projesi için gereken dosyalar


Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A....


Translate

Sayfalar

Etiketler

İzleyiciler