Atmega328 devresinde hem isp hem uart'a neden ihtiyaç duyulur?

Başlatan akkoyunlu74, 04 Nisan 2021, 14:40:25

akkoyunlu74

Selamlar verdiğim linkteki devrede arkadaş demişki boot yüklemek için isp ve program yüklemek için uart bağlantıları koymam gerekti.
https://electronoobs.com/eng_arduino_tut40.php

Anlamadığım nokta şu; pcb hazırlarken isp bağlantısı koymak şart görünüyor boot yüklemek için. Ama aynı isp ile sadece boot değil, programda yükleyebiliyorum. Dolayısıyla ayrıca uart bağlantısı neden oluşturmalıyım? bu bir zorunluluk mu? yoksa sadece serial monitör kullanmak için mi arkadaş bu yola gitmiş?
Derdim şu; pcb hazırlarken en az malzeme kullanarak işimi görmek istiyorum, birçok devrede bunu görüyorum; neden hem isp hem uart bağlantısı koyuluyor? Bununla ilgili cevap benim için çok önemli hatta varsa makale yada döküman, iletirseniz harika olur.

OG

Bootloader kullanmanın mantığıdır,

mcu'ya bootload prg'ı yüklenir (isp yolu ile)
bu,
yanlızca "ana programı / ana program değişkenlerini" zırt pırt yüklemek amaçlı mini programdır,
başka hiç bir işe yaramaz

sonra ana program yüklenir, bootload prg ile

bootload programının çalışması için bir uyarma pini gerekli
buna reset pini diyelim
mcu'nun bir pini reset olmalı demektir

reset'i gıdıklayınca, mcu, o an yaptığı birşeyler varsa her şeyi bırakır
falan pinden gelecek datayı bekler, o pine rx diyelim
"hazırım, alıyorum, gonder, aldım, doğruladım" gibi dönüş bilgisi vermesi gereken bir pin gerek, buna tx diyelim


işte loader programı bu pinleri tanır ve dışarısı ile iletişim protokolunu,
iletişimde ne yapacağını bilir, mcu'ya ana program mı yazacak,
var olan ana program için bazı verileri mi değiştirecek vs

bu işlemleri yapmak için min 3 pin gerekli oldu ve biz onlara amaçları doğrultusunda
rx, tx, reset (tabi gnd hep şart)
gibi isimler verdik

eee?
usart dedikleri zımbırtı da bu değilmi (bu amaçlı değil mi)
donanım olarak mcu içinde hazır ise
alâ

başa dönersek;
ilk boot programını yüklemek için isp şart
sonrası, usart kolaylık
boot programını siz yazıyorsanız devamı işler için de isp pinlerini kullanabilirsiniz
(dikkat, son söylediklerim PIC ailesi içindir, hiç atmegam olmadı  ;)  onun yapısını bilmiyorum)
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

akkoyunlu74

Cevabınız için teşekkür ederim, sorumun tam karşılığı bu mu? emin olamadım, yada cevabınızı anlayamadım.
Sorumu değiştireyim; adam yaptığı saat için gerekli programı ve öncesinde boot yazılımını  isp ile yükleyebilirdi. Neden birde uart eklemiş tasarımına?

yas

Eğer mcu ya yükleyeceğiniz kod sabitse, geliştirme ve ilerisi için güncelleme vs.. olmayacaksa, yükleyeceğiniz program devrenizde ömür boyu çalışacaksa bootloader kullanılmasının hiçbir gereği yoktur.

OG

Alıntı YapNeden birde uart eklemiş tasarımına?
bulunsun demiştir   :P
alışkanlıktır   8-)

ne bilek gardaş, yorumlarda sormuşsun cevap verir belki.   :)
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

sadogan

Bootload i bir kere yükledikten sonra herhangi bir programlayıcıya ihtiyaç kalmayacak.
Yazdığınız programı kartınıza upload edebileceksiniz, size böyle bir konfor sağlayacak.
Ama dersenki ben programmer kullanır her seferinde programmer ile program atarım , debug içinde uart a ihtiyacım yok
o zaman yanlızca ICSP yeter.

akkoyunlu74

Anladım sadogan hocam sağolun. yas hocam dediğiniz doğru, bunu hiç düşünmemiştim, benim konu üzerine biraz daha çalışmam lazım.

erdcan

Alıntı yapılan: akkoyunlu74 - 04 Nisan 2021, 16:57:21Cevabınız için teşekkür ederim, sorumun tam karşılığı bu mu? emin olamadım, yada cevabınızı anlayamadım.
Sorumu değiştireyim; adam yaptığı saat için gerekli programı ve öncesinde boot yazılımını  isp ile yükleyebilirdi. Neden birde uart eklemiş tasarımına?

Şöyle düşünebilirsiniz. cihaz yaptınız, cihaz geliştirilmeye açık özelliklere sahip. Kullanıcı cihazı bilgisayara bağlayıp veri alış verişi yapabiliyor veya ana programda sürüm değişikliği yapabiliyor. bu durumda uart usb dönüştürücü ile teknik elemana ( isp programlayıcıya) ihtiyaç duymadan cihaz güncellenebilir.
Bootlu bir mikrdenetleyiciniz var ise güncelleme için sonraki adım uart/isp tercih edilme sebebi tamamen tasarımcıının yoğurt yeme şekliyle alakalı.

ipek

Arduino Popüler bortlar ATmeg328P kullanıyor, geliştirme işlemi harika yaz yaz yolla muhteşem.

fakat bazı aşmış kişiler Bootloader'i hiç sevmiyor gereksiz hafıza kaplaması,açılırken bir müddet bekleyip sonra açılması gibi..

Tagli

Aslında seri port bağlantısına gerek yok. ISP ile doğrudan kod atılıp çalıştırılabilir. Bootloader'a da gerek yok.

Ancak Arduino camiası alıştığı akışın dışına çıkmaktan pek hoşlanmıyor. Kendi IDE'si de varsayılan olarak seri port üzerinden bootloader kullanarak yazılım atacak şekilde ayarlanmış. Gerçi Arduino IDE'si bootloader olmadan da program atacak şekilde de ayarlanabiliyor - ki zaten bootloader'ın kendisini yükleyebilmek için bu şart. Ama insanlar standart Arduino geliştirme akışını istiyorlar. Çoğunlukla USB - Seri dönüştürücü de kart üzerinde olunca, ayrı bir cihaza da gerek kalmıyor.

Şahsen ben bugüne kadar hiçbir projemde bootloader kullanmadım. İhtiyaç olmadı. Zaten bootloader kullanımının asıl amacı geliştirme sırasında kullanım da değil. Daha çok ürün son kullanıcıya ulaştıktan sonra yazılım güncellemesi için faydalı olabilir. Son kullanıcıda programlayıcı cihaz yoktur, en basit şekliyle bilgisayarına takıp bir tuşa basarak firmware güncellemesi yapabilmek ister.

Geliştirme sırasında bootloader kullanımı bence sıkıntılı bir durum çünkü bootloader, debug ihtiyacını karşılamıyor. Bence Arduino ortamının en büyük sıkıntılarından biri bu. Kodu adım adım çalıştırıp istediğiniz yerde durdurup değişkenleri inceleme imkanı yok.
Gökçe Tağlıoğlu

ilyas KAYA

Alıntı yapılan: Tagli - 04 Nisan 2021, 19:22:45Aslında seri port bağlantısına gerek yok. ISP ile doğrudan kod atılıp çalıştırılabilir. Bootloader'a da gerek yok.

Ancak Arduino camiası alıştığı akışın dışına çıkmaktan pek hoşlanmıyor. Kendi IDE'si de varsayılan olarak seri port üzerinden bootloader kullanarak yazılım atacak şekilde ayarlanmış. Gerçi Arduino IDE'si bootloader olmadan da program atacak şekilde de ayarlanabiliyor - ki zaten bootloader'ın kendisini yükleyebilmek için bu şart. Ama insanlar standart Arduino geliştirme akışını istiyorlar. Çoğunlukla USB - Seri dönüştürücü de kart üzerinde olunca, ayrı bir cihaza da gerek kalmıyor.

Şahsen ben bugüne kadar hiçbir projemde bootloader kullanmadım. İhtiyaç olmadı. Zaten bootloader kullanımının asıl amacı geliştirme sırasında kullanım da değil. Daha çok ürün son kullanıcıya ulaştıktan sonra yazılım güncellemesi için faydalı olabilir. Son kullanıcıda programlayıcı cihaz yoktur, en basit şekliyle bilgisayarına takıp bir tuşa basarak firmware güncellemesi yapabilmek ister.

Geliştirme sırasında bootloader kullanımı bence sıkıntılı bir durum çünkü bootloader, debug ihtiyacını karşılamıyor. Bence Arduino ortamının en büyük sıkıntılarından biri bu. Kodu adım adım çalıştırıp istediğiniz yerde durdurup değişkenleri inceleme imkanı yok.

Var aslında. Platformio ile debug yapabilirsin. Tamamen ücretsiz.

akkoyunlu74

Cevaplar harika sağolun.
Sanırım çözdüm;
1- Bootloder olmazsa olmaz değil, eğer arduinoyu usb üzerinden yada ft232 gibi kartla uart üzerinden (sanırım ikisi de aynı kapıya çıkıyor) program atmayacak yada seri monitörden veri okumayacaksak "programlayıcıyı kullanarak yükle" seçeneği ile isp bağlantısıyla programı yükleyebilir ve çalıştırabiliriz.
2- Eger smd paket kullanıyorsak kartı sadece uart bağlantısı ile tasarlamak ahmaklık çünkü atmega328'i uart üzerinden programlayabilmek için mutlaka öncesinde bootloader yüklü olması gerekir ki yeni aldığınız atmega 328 içinde bootloader muhtemelen yüklü değildir. (şimdilik arduino nano üzerindeki atmega328'i söktüm)
3- Bu durumu aşmanın yolu yani sadece uart bağlantısı olan karta program yükleyebilmenin yolu TQFP32 QFP32 TO DIP32 IC programcı adaptörü satın alıp lehimden önce boot yüklemektir.
https://tr.aliexpress.com/item/1005001798523401.html?spm=a2g0s.9042311.0.0.7fcb4c4dq7Ps6k
4- Eğer ticari ürün tasarlamıyorsanız yada seri monitöre ihtiyacınız yoksa yani kendiniz çalıp kendiniz oynayacaksanız sadece isp bağlantısı işinizi görür devrenizi gereksiz yere şişirmez, daha küçük tasarımlar yapmanızı sağlar.
5- isp üzerinden yüklenen programlar boot yüklü olmadığı zaman hemen çalışmaya başlar( burada bahsettiğim boot yüklü atmegalarda oluşan  en fazla 1 snaniyelik gecikme) Üstelik boot için ayrılan hafıza yüklenmediği için size kalır.
6- Keşke tasarımı (özellikle smd kullanılan mikrodenetleyici için söylüyorum) uart a göre değil, isp ye göre tasarlasaydım.
yanlış bir yer var mıdır üstadlar?

Tagli

Alıntı yapılan: ilyas KAYA - 04 Nisan 2021, 23:41:32Var aslında. Platformio ile debug yapabilirsin. Tamamen ücretsiz.
Anladığım kadarıyla bunun için Arduino içine (Uno gibi AVR tabanlı modellerden bahsediyorum) ayrıca bir debug programcığı gömmek gerekiyor. Burada bilgi verilmiş. Bunun getirdiği bazı kısıtlamalar olacaktır. Donanım destekli debug tadını vermeyeceği düşüncesindeyim.

Diğer mesajımda yazmayı unutmuşum: Bootloader kullanmasam da neredeyse tüm projelerimde işlemci USART pinlerinden bir çifti pin header veya benzeri bir şekilde kart üzerine koyarım. Seri bağlantı her zaman gerekebilir. Bazen normal debug bağlantısına ek olarak da destek sunabilir.

Debug konusuna girmişken şuna da değinmeden geçmeyeyim: En faydalı yöntemlerden biri de incelediğim fonksiyonların giriş ve çıkışlarında bir pini 1 ve 0 yapmak. Bunu lojik analizör ile incelediğinizde programın akışı ile ilgili sorunları görmek oldukça kolaylaşıyor. Hep demişimdir: Eğer gömülü yazılım işi ile uğraşıyorsanız, en dandiğinden de olsa bir lojik analizörünüz mutlaka olmalı.
Gökçe Tağlıoğlu

ilyas KAYA

Alıntı yapılan: Tagli - 05 Nisan 2021, 09:24:14Anladığım kadarıyla bunun için Arduino içine (Uno gibi AVR tabanlı modellerden bahsediyorum) ayrıca bir debug programcığı gömmek gerekiyor. Burada bilgi verilmiş. Bunun getirdiği bazı kısıtlamalar olacaktır. Donanım destekli debug tadını vermeyeceği düşüncesindeyim.




Yok hayir debug tıklayınca kendisi atıyor içine herhangi birsey yapmanıza gerek yok.
Visual stüdyo code içinde eklenti olarak çalışıyor zaten.

Terminali de yine platformio içinden direk çalıştırabiliyorsunuz.
Arduino olması şartı yok direk atmegalara bootloader olmadan da yükleme yapıyor. Çok başarılı buldum ve atmega mcu lari bunla programliyorum.

Tabi esp ve bir çok seçenek de mevcud. Deneyin bence