Şimdi Ara

yazılım donanım ilişkisi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
9
Cevap
0
Favori
883
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar elektronik ile ilgili videolar izlerken aklıma bir şey çok fena takıldı ve iki gündür internette sayfalarca döküman okumama rağmen (lojik kapılar vb) bir cevap bulamadım ve gerçekten çok merak ettim yardımcı olabilecek varsa sevinirim. Öncelikle elektronik bilgim çok az olduğundan yanlış tabirler kullanabilirim mümkün olduğunca derdimi anlatmaya çalışacağım.
    Diyelim ki basit bir devre yaptık bir adet led ampülü bir güç kaynağına bağlayıp bir anahtar ile açıp kapatıyoruz. Şimdi ben bunu anahtar kullanmadan bir otomasyon yapıp yazılımla kontrol etmek istiyorum ve anahtarı kaldırıp yerine bir transistör koyuyorum. İncelediğim örneklerde bu devreyi kontrol etmek için arduino veya buna benzer mikro denetleyiciler PIC, entegre vb. içine gömülü yazılımdan faydalanıyorlar. Anladığım kadarıyla yazılım transistöre giden voltajı sıfır volt yapınca lamba sönüyor beş volt yapınca lamba yanıyor. Hatta bunu yazılım içinden saniyede beş defa yak söndür gibi ayarlıyorlar. İşte burada benim bir türlü çözemediğim olay bizim fiziksel bir butona yani anahtara bastığımızda yaptığımız işi yazılım nasıl fiziksel olarak yapıyor. Yani yazılım voltajı nasıl artırıp azaltıyor da transistör led ampulü yakıp söndürebiliyor?







  • Öncelikle eğer problem fazla karmaşık değilse, sabit şekilde ilerliyorsa mikrodenetleyici şart değil. Analog devrelerle de zamanlama yapılabilir.

    Soruna gelirsek yazılım da fiziksel olarak işliyor zaten. Mesela bir mikrodenetleyici pini içerde bir lojik kapıya (transistöre) bağlıdır. Bu kapılar da gruplanarak adreslenirler. Mesela mcu 8 bit ise, 8 (ya da daha az) kapı gruplanıp 1 byte lık bellek adresine "map" edilir. Bu şekilde entegre içindeki programlanabilen bütün kapılar işlemcinin adres aralığına yerleştirilir. Buna "memory map" deniyor.

    Mesela arduinoda kullanılan atmega328'in PORTB adresi atıyorum 1342 olsun. Bizim bu adrese atacağımız herhangi bir sayı o adresteki 8 transistörü açar ya da kapatır. C ile bir örnek vereyim.

    *((uint8_t *) 1342) = 5;

    Adrese 5 atadık. İkilik sistemde 0000 0101. Bu sayıyı atayınca ne olacağı o adresteki kapıların türüyle, oraya bağlı olan devrelerle alakalı. PORTB'ye 5 atarsak 0. ve 2. pinler 5v, diğerleri 0v olur. Yani yazılım kullanarak elektriksel olarak kapıları tetiklemiş olduk. Böylece devreler tamamlandı, donanımsal olarak ne olacaksa o oldu.




  • zaman ayırıp açıkladığınız için çok teşekkürler. Teknik olarak çok anlayamasam bile bazı şeyler netleşti. dikkatlice okuduğumda benim kaçırdığım noktanın memory map olduğunu anladım. yani işlemci ile G/Ç aygıtlar arasındaki bağlantıyı anlamak için memory map olayını çözmek gerekiyor. Ben şimdi biraz bu konuyla ilgili araştırma yapayım ondan sonra kafamda tam olarak oturacak sanırım.
  • Konuyla ilgili araştırmaya devam ettim ama sorumun cevabına ulaşamadım. elektro_gadget_ arkadaşın verdiği cevaptan ilerlersek takıldığım yer şurası oluyor:
    ""Bizim bu adrese atacağımız herhangi bir sayı o adresteki 8 transistörü açar ya da kapatır.""
    "" PORTB'ye 5 atarsak 0. ve 2. pinler 5v, diğerleri 0v olur. ""
    Bizim buraya yazılımla 5 sayısını atamamız o pinlere fiziksel olarak elektrik verilmesini nasıl tetikliyor? mesela bu devrede fiziksel bir anahtar olsaydı benim devreye 5V-0V vermem için o anahtarı açmam-kapatmam gerekiyordu. Peki yazılım portb ye 5 değerini atayınca mikroişlemci bunu devreye 5v verilecek olarak yorumladı peki sonra nasıl oluyorda devreye 5V veriliyor? (Biri gelip düğmeye/anahtara basmıyorki demek istiyorum cahilliğimi bağışlayın) hala çözemedim bunu.
  • Elektrik depolayabilen bir komponent var.



    Kondansatör , basit bir transistörü kondansatörle sürerek. ,. Ledi aç kapa yapabilirsiniz.....



    Flip flop devresi diye arayın , size temelden bilgi verir :)

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Yorumlama yok kardeşim, herşey full donanımsal. Yazılım sadece devrelerin girişlerine elektriksel bağlantı yapıyor.

    Bu işler forumdan öğrenilmez maalesef. İmkanın varsa mühendislik okuyacaksın. Dijital devre dizaynı çok geniş bir alan.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • hocam yine aynı yerde tıkanıp kalıyorum. flip flop yapıları da iki değer alıyor bunlara 0 ve 1 diyelim. Bunu bir tetikleyici ile değiştirebiliyoruz böylece ışığı açıp kapatıyoruz burası tamam. Fakat aklımın almadığı nokta tetikleme olayında yazılım nasıl yapıyor bu işi. Bu sefer soru şuna dönüşüyor yazılım nasıl oluyor da flip flop un 1 veya 0 olmasını sağlıyor. sonuçta yazılım bizim yazdığımız soyut bir kod ama uygulamada mesela kondansatörün + veya - yüklenmesi fiziksel bir olay yani bunu fiziksel olarak bir şeyin tetiklemesi gerekmiyormu? sanki arada kayıp bir nokta var ama bir türlü aklım basmadı :)
  • Öncelikle herhangi bir forumda ilk defa bu tarz bir başlık açtım. Ben elektronik mühendisi değilim ama bu elektronikle ilgili herhangi bir şeyi merak etmeyeceğim anlamına gelmez. Dediğim gibi ilk defa bir şey bu ölçüde aklıma takıldı ve merak edip önce 2 gün boyunca internetten ve başka çeşitli kaynaklardan araştırma yapmama rağmen cevap bulamadım.Bu nedenle dediğim gibi hayatımda ilk kez bunu bir forumda bu tarz bir soru başlığı açtım. Cevap yazan her iki arkadaşa da tekrar teşekkür ederim kimse vakit ve emek harcayıp cevap yazmak zorunda olmadığı halde bana yardımcı olmaya çalıştınız. Ben elektronik mühendisi değilim başka bir alanda mühendisim. Birisi bana alanım ile ilgili soru sorsa ve bu soru çok teknik bir konuda olsa bile mümkün olduğunca basite indirgeyerek temel bir cevap verebileceğime inanıyorum. Bence sorduğum soru ne kadar karmaşık ve teknik bir konu da olsa merakımı giderecek ölçüde basit bir anlatımı olmalı. Bu işin okulunu okumuş birisi yazılım kodu (bir kaç satır yazıdan ibaret) fiziksel donanımı nasıl tetikler, devrelerin girişlerine elektriksel bağlantıyı yazılım hangi süreci izleyerek yapar bunu basitçe açıklayabilmeli bence. Bunu anlamak için de gidip mühendislik okumaya gerek olmamalı. Sorumun cevabını bu saatten sonra forum dışında arayacağım kimseyi meşgul etmeyim. elektro_gadget_ siz de yanlış anlamayın lütfen sizinle tartışma başlatma için yazmadım bunları. aksine ilk cevap veren olduğunuz için ayrıca teşekkür ederim.




  • Yazılım soyut değil, sizin butona basıp led yakmanız kadar somut ve fiziksel bir olaydır.

    Kodu yazıp derlediğimiz zaman derleyici işlemciye uygun olarak ardışık bir komut seti üretir. "Avr instruction set manual" diye arattığınız zaman arduinoda kullanılan denetleyicinin komut setini ve ikilik tabanda karşılıklarını görebilirsiniz. Oluşturulan bu ardışık sayıları mikrodenetleyicinin flash hafızasına yazarız. Bu flash hafıza da tıpkı uçucu bellek gibi adreslenmiştir.

    Çipe enerji verdiğimiz zaman PC (program counter) sayacının gösterdiği flash adresi okunur, oradan önce decode, sonra execute edilir, sonuç bellek adresine sonuç yazılır ve PC sıradaki komutu gösterecek şekilde güncellenir. Burada baştan sona kadar ne yapılıyorsa hepsi donanımsal. Yani gelen sayıyı karşılaştırayım, koşula bakayım falan yok. Bütün olaylar elektriksel olarak sabit zamanda gerçekleşiyor. Mesela arduinoda cpu komutları 2 byte uzunluğunda. Bunun anlamı işlemci içinde komut taşımak için 16 tane elektrik hattı (instruction bus) var demek. Yani flashtan komutu okuması demek bu elektrik hatlarının komuta göre enerjilenmesi demek. Gerisi lojik devrelerin işi.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.