Doğrudan bir mikrodenetleyici kullanarak Arduino'dan nasıl mezun olunur?


19

Bir Arduino projesi üzerinde çalışıyorum. Her şeyi Arduino'yu kullanarak çalıştırdıktan sonra, Arduino'yu KULLANMAYAN bir çözüme geçmek istiyorum. Yani, Arduino kartını kullanmadan mikrodenetleyici kullanmak istiyorum. Bu, tek bir panele izin verir, kalkan çözümü yoktur.

Kendi Arduino'yu bir breadboard üzerinde yapmanın yöntemleri olduğunu biliyorum, ama yapmaya çalıştığım şey bu değil.

Bunu nasıl yapacağımdan pek emin değilim.

Daha iyi bir seçenek olmadığı sürece, Arduino tarafından kullanılan ATmega328'i kullanmaya yöneliyorum. Geliştirme araçlarının ücretsiz olduğunu veya en azından çok pahalı olmadığını anlıyorum.

Bu sorunun amacı için devremize + 5V alabileceğimi varsayın.

İlk sorum MCU'nun nasıl programlanacağı. İki seçeneğin olduğuna inanıyorum:

  1. Bir programcı satın alın, MCU'yu programlayın ve ardından çipi devremeye yerleştirin.
  2. Devremi, devre içi programlama desteğini içerecek şekilde tasarlayın.

Seçenek # 1 ile gidersem, benim devre programlanmış bir çip eklemek kadar basit olduğunu varsayıyorum; Başka bir şeye ihtiyacım yok. Elbette yazılımı değiştirmek sakıncalı olur.

Ancak # 2 seçeneği için neye ihtiyacım olduğundan emin değilim. Okuduğumdan biraz, bir programlama kablosuna ve kartımda bir konektöre ihtiyacım olduğunu düşünüyorum (ne tür?). Sonra konektörü ATmega üzerindeki belirli pimlere (düzgün bir şekilde) bağlarım.

Her iki durumda da Atmel stüdyosuna ihtiyacım olacak.

İkincisi, güç kaynağı dışında Arduino'da kesinlikle ihtiyacım olan bir şey var mı? Sanırım belki bir sıfırlama anahtarı?


2
AVR'leri programlamak için bir Arduino kullanabilirsiniz. Şahsen IDE yerine komut satırı araçlarını ve bir makefile kullanmayı seviyorum.
jippie

1
Bu soru Arduino Stack Exchange için daha uygun olabilir. arduino.stackexchange.com Şimdi Kamu Beta'da
akellyirl

4
Ama amacım arduino'suz bir tasarım.
Rick

"Arduino'da kesinlikle ihtiyacım olan bir şey var mı?" Bence UART (seri port olarak da bilinir) pinlerine ihtiyacınız olacak, hata ayıklama için kullanışlı geliyor.
vvy

Atmel stüdyosu kesinlikle gerekli değildir. Yongalarımı komut satırından (ve bir metin düzenleyicisinden) programlıyorum. Büyük projeler için verilmiş olsa da Atmel studio kesinlikle daha kolay hale getirecek
Chris Laplante

Yanıtlar:


10

Atmel'in harika dünyasına hoş geldiniz. Hobi ve profesyonel deneyimime dayanarak sorularınıza bazı cevaplar sunayım.

AMA devre içi programlama ile herhangi bir şey rahatsız etmeyin. Mükemmel bir kodlayıcı değilseniz, her programlamak istediğinizde bir çipi çıkarmak bir kabustur. AVRISPmkII'yi giriş seviyesi programlama aracı olarak öneririm. Dezavantajı, desteklenen bir donanım hata ayıklaması olmamasıdır. Bir alternatif ejderha ama bununla ilgili hiçbir deneyimim yok. JTAGICEmk3'ün güzel yetenekli bir hata ayıklama aracı olduğunu söyleyebilirim.

Atmel stüdyosu programlama için iyidir. Aslında benim en sevdiğim gömülü geliştirme ortamı. AVRDUDE ve AVR-GCC gibi CLI araçlarını kullanabilirsiniz, ancak IDE bunu sizin yerinize halleder.

ÖZETLE:

Sadece programlama için bir AVRISP (daha kolay, tak ve çalıştır) veya bir DRAGON (tavsiye veremem) satın alın.

Kartınızda ICSP pimlerini 6 pimli çift sıralı 0.100 "başlığa getirin - bağlantılar bu veri sayfasında açıklanmıştır .

Sıfırlama anahtarlarına gerek yoktur.


1
EvUSBasp ile mükemmel sonuçlar elde ettim.
Ignacio Vazquez-Abrams

ICSP pinlerini kartımda çıkardığımda, bunları devre içi programlama için ayırmam gerekir mi yoksa yine de bir şekilde GPIO pinleri olarak kullanabilir miyim?
Ricardo

2
İşlevleri SPI ile paylaştıkları için bunları GPIO olarak kullanabilirsiniz. Programcı çipi sıfırlar ve ardından onunla iletişim kurar.
HL-SDK

1
Mikrodenetleyici programlamaya başlama ile ilgili öğretici seriler . AVRMega'yı kullanıyorlar ve bir LED'i yanıp sönmek için ISS'yi ve lüks C kodunu bağlama sürecinden geçiyorlar.
MDMoore313

1
@ HL-SDK, sadece RESET pininin ICSP için gerçekten tahsis edilmesi gerektiği konusunda haklıdır, ancak diğer pinler için de biraz dikkatli olunmalıdır, yani muhtemelen giriş pinleri yerine çıkış pinleri olarak kullanılmalıdırlar (böylece sinyaller t ICSP modunda dış devre tarafından rahatsız edilir) ve bunlara bağlı olan her şey, programlama trafiğinin gönderdiği rastgele sinyal kombinasyonuna olumsuz tepki vermeyecek şekilde tasarlanmalıdır.
microtherion

10

Hepsi aynı anda "mezun olmak" zorunda değilsiniz. İşte nasıl dönüştürdüm:

Başlamak için bir Arduino kullanmaya devam ettim, ancak Arduino kütüphanesine gelen çağrıları, her seferinde bir satır olmak üzere, programların hala çalışıp çalışmadığını görerek kayıt okuma ve yazma işlemlerine dönüştürdüm. Bu şekilde yazmaçları kullanmaya alıştım ve Arduino'nun bir şeyler yapma biçimiyle radikal olarak süreksiz olmadıklarını gördüm. DigitalWrite () gibi Arduino fonksiyonları sadece kayıtları manipüle eder - bunları doğrudan eskizlerinizde okumak ve yazmakta özgürsünüz.

Bir sonraki adımım ATTiny 85'i bir breadboard'a koymak ve Arduino ile ISS olarak programlamaktı ( http://highlowtech.org/?p=1695 ). Bir breadboard güç kaynağı satın alır ve ATTiny'nin dahili osilatörünü kullanırsanız, bu gülünç derecede az kablolama gerektirir. Arduino IDE'yi derlemek için kullandım ancak mümkün olduğunca kayıtları kullanmaya devam ettim.

Sonra, ücretsiz Crosspack komut satırı araç zincirini kurdum ve gösterişli bir program derledim. Biraz daha deneme yanılma sonrasında, ATTiny'yi sadece avudude ile programlamayı başardım ve tamamen Arudino ekosisteminin dışında kaldım.

Yalnızca komut satırı araçlarıyla göz kamaştırdıktan sonra Arduino'dan özgürsünüz. Çeşitli çevre birimlerini ve kayıtlarını keşfedin ve yakında tamamen doğal olacak.

Tüm bunlardan sonra kendimi sık sık Arduino'yu kullanarak buluyorum çünkü daha hızlı. Ben kayıt açıklamaları üzerinde gözleme tür berbat buldum; Gerekmiyorsa bunu yapmanın bir anlamı yok. Yine de nasıl yapılacağını bilmek güzel.


8

HL-DSK'nın yukarıdaki yorumuna katılıyorum. Fazladan para harcayacağım ve hata ayıklama özelliklerine sahip bir programcı alırdım. Dijital anahtarda 110 $ JTAGICE3 kullanıyorum.

ISS programlama hakkında buradan bilgi edinebilirsiniz . SPI bağlantılarını nasıl ortaya çıkaracağınızı gösterecektir. Çipinizdeki SPI bağlantıları ATmega veri sayfasında olacaktır. MISO / MOSI / SCK / RESET pimleri için sayfa 2'ye bakın. Programcının sıfırlama hattını kontrol edebilmesi gerekir. Programlayıcının bağlantısı kesildikten sonra çipinizin çalışması için sıfırlama hattında bir çekme direnci kullanmayı unutmayın.

Kendine bir 2x3 başlığı alın burada . Veya ayrılık üstbilgilerini kullanarak kendinizinkini oluşturun.


2
İkinci olarak hata ayıklama desteği olan bir programcı alıyorum. Bu ayın başlarında, daha önce hiç düşük düzeyde deneyime sahip olmayan bir PIC32 projesinin derin ucuna atıldım. En düşük seviye bit beceriyor işlevselliğini yazan bir başkasıyla bile, içeride görmek zorunda olduğum tek bir kırmızı / yeşil LED ise, sorunlarımın nerede olduğunu bulmak için ne kadar zor olduğunu düşünmek bile istemiyorum.
Dan Neely

Bu, profesyonel araçlara sahip olduğunuzda geri dönüş yoktur.
Matt Young

7

Bir Arduino ve çıplak bir ATmega328 arasındaki fark sadece iki şeydir. Arduino Bootloader ve Arduino kütüphaneleri. Arduino'yu herhangi bir kütüphaneyi kullanmadan çıplak C veya C ++ ile kodlayabilirsiniz. Bunun yerine montajı da kullanabilirsiniz. Önyükleyici, (biraz) daha karmaşık devre içi seri programlama (temel olarak SPI) yapmadan yeni kodu seri üzerinden yüklemenizi sağlar.

Standart programlama kitaplıklarını ve avr-gcc'yi hemen hemen herhangi bir ide ile kullanabilirsiniz. Başkalarının söylediklerinin aksine, bir Arduino'nun kodlanması temelde çıplak bir mikro denetleyiciyi kodlamak gibidir ve bazı performans pahasına bazı ek kolaylıklar sağlar.


4
Ancak Arduino önyükleyicisini ve kütüphanelerini çıplak bir ATmega328 ile de kullanabilirsiniz.
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams, onu çıplak kemikli bir arduinoya dönüştürür, yakala.
Passerby

5

Önyükleme öncesi Atmega328P yongaları satın alıp, bunları bir FTDI kablosu ve avrdüdüyle, Arduino'yu nasıl programladığımla aynı şekilde programlıyorum. Eclipse IDE'yi seviyorum, ancak istediğiniz herhangi bir ortamı kullanabilirsiniz - Atmel Studio, Arduino IDE, emacs veya komut satırında yalınayak.

Bu kart, programlama, güç ve terminal kablosunu kullanarak bir Hello programı ile test etmek için yeterince tamamlandığı noktada yapım aşamasındadır. Yine de güç kaynağı - LM2936 ultra düşük sessiz akım voltaj regülatörü ve bir pil konektörü, benim durumumda - ve projenin ihtiyaç duyacağı diğer yerleşik bileşenler ve yerleşik bağlantılar:

NotDuino

Bir Arduino'nuz olduğundan, önyükleyiciyi yüklemek için Arduino'yu kullanarak biraz para biriktirebilir ve programlanmamış yongalar kullanabilirsiniz. Güzel mavi pin-out etiketleri aptallık oranımı düşürmeye yardımcı oluyor! 16MHz kristal kullanıyorum, ancak dahili osilatörle çalışabiliyorsanız parça sayınız 3 azalır (xtal ve 2 kapasitör).


2

Donanımın sağlandığı ve yazılımın C dili kaplaması olduğu Arduino'dan hareket etmek için birkaç öneri yapmak istiyorum. İnsanların bazı yararlı cevaplar gönderdiğini görüyorum ama bulunduğunuz yerdeyim ve işleri biraz farklı yapacağım.

  1. Bir hata ayıklayıcı seçin. Hata ayıklayıcılar, mikrodenetleyiciyi programlamanın yanı sıra 'adım adım' işleme, 'kesme noktaları' içeren bir hata ayıklama olanağı sunar. ISP (In-Circuit Programming) seri bir arabirimdir, iyi olan ancak yeni başlayanların istediği tam işlevselliği sağlamayan 3 pin kullanır. JTAG arayüzü, kesme noktaları ve malzeme kullanımı açısından temelde tam işlevsellik sağlayan 4 pim kullanır. İnsanlar genellikle ISS'ye daha fazla eğilirler, çünkü 'nispeten' kurulumu daha kolaydır, ancak bana sorarsanız JTAG'ın kurulumu zor değildir, ancak aynı zamanda kişisel tercihlere de bağlıdır. Ve Debug Wire var Bu tartışmaya atlamak istediğim arabirim çünkü hata ayıklama telinden ziyade ISS'yi kullanıyorsunuz.
  2. Hem ISS hem de JTAG işlevselliğine sahip bir hata ayıklayıcı satın alın. Sanırım bir kez satın alırsınız, ancak tasarımınızı değiştirmek isterseniz gelecekte size yardımcı olacak iyi satın alırsınız. AVR Dragon veya JTAGICE'ı tavsiye ederim. Her ikisi de USB ile PC'ye bağlanır ve her ikisi de ISP ve JTAG sağlar. JTAGICE, AVR Dragon'dan biraz daha pahalı ama kesinlikle AVR Dragon'u öneriyorum.
  3. Çoğu Atmel mikrodenetleyicisinin ISS işlevine sahip olduğunu, ancak çoğunun JTAG'a sahip olmadığını göreceksiniz. AT90S2313 veya ATTINY serisi gibi küçük mikrodenetleyiciler, küçük boyutlu oldukları için ISP serilerini kullanır. Ancak sadece birkaç LED'i yanıp sönmekle kalmayıp, bir LCD ekran veya tuş takımı veya ne varsa ile arayüz kurmak istiyorsanız, o zaman biraz daha büyük bir mikrodenetleyici için girmenizi tavsiye ederim. 5V besleme kullanıyorsanız, size ATMega8 hatta ATMega16 veya ATMega128 (benim favorim) öneririm. ATMega16 ve ATMega128, ISS ve JTAG arayüzüne sahiptir.
  4. IDE söz konusu olduğunda, Kod vizyonunu ve AVR Studio'yu kullanıyordum, ancak tüm ihtiyaçlarınızı karşılayan Atmel Studio 6.0 veya daha yenisini kullanmanızı öneririm.

Mikro ile temiz ve düzgün bir arayüze sahip olmak için kendi başıma öğrendiğim birkaç şematik fikrim var. Yardıma ihtiyacınız olursa bana bildirin.


1

Dürüst Tavsiye

Arduino yeni başlayanlar için, buradan gitmenin iki yolu var

Yol 1: Bir mikro denetleyicinin / işlemcinin nasıl çalıştığını anlama (tercih edilen yaklaşım)

Atmel 8051

Bununla, mikro p / c için öğrenme mimarileri ve montaj kodu (veya çıplak metal) kastediyorum. Bunun için bir başlangıç ​​noktasına ihtiyacınız varsa, en basit mimariye ve montaj talimat setine sahip 8 bitlik bir mikro denetleyici olan Atmel 8051'i öneririm. Başka herhangi bir modern 32bit veya 64bit işlemci ondan türetilmiş bir mimariye sahiptir. Bu mikro denetleyici, lisansüstü derslerimin bir parçası olarak hala kullanılıyor çünkü iyi bir başlangıç ​​noktası ve birçok literatür mevcut.

Oh ve ISS kartınızı oluşturmak için kitler satılıyor (bir board kitine processo, lehim bileşenleri ile tamamen monte edilmiş kitler ve geliştirme kartını kendiniz oluşturabilirsiniz, sadece birkaç IC ve RS-232 kablo / soketi gerektirir)

Düşük teknolojili olduğu için tüm bileşenler ucuz olacaktır.

2. Yol: Bir donanım-yazılım yaklaşımına geçin (daha az tercih edilir)

Raspberry Pi Beagle kemiği Siyah

Bu, biraz montaj içine giren ve donanımdan daha fazla yazılıma geçmek isteyen VEYA donanımdan "dışarı çıkmış" halterler için bir yaklaşımdır. ARM işlemcileri ile Raspberry Pi veya BeagleBoneBlack gibi başka bir hobisi tahtaya geçmeyi ve yaratıcılıklarında projeler yapmaya başlamayı öneririm.


0

Korumalı alan kitaplıklarını ve ortamını kullanmadan Arduino kartını kullanabilirsiniz, her şeyi doğrudan kendiniz programlayabilirsiniz. Onların bootloader'ı seri / uart üzerinden programlamak için kullanmak istiyorsanız, bu iyi çalışır. Ancak avr parçalarının çoğu / tamamı başka bir şekilde de programlanabilir, parça sıfırlanmış olarak tutulur, yani tuğla yapılamaz. Bir arduino veya diğer mikrodenetleyiciden veya bazı lezzetlerden bir ftdi kopması ile patlama spi'lerini ısırmak oldukça kolaydır. sparkfun, spi başlığının açık olduğu arduino ve arduino olmayan kartlara (örneğin 32u) sahiptir. ve ftdi'nin kütüphanesini veya linux ile birlikte gelen ftdi kütüphanesini kullanarak kolayca bitbang yapabileceğiniz ftdi koparma panoları.

Her bölümün belgeleri önyükleme seçeneklerini ve flaş programlama seçeneklerini gösterir. evet sadece bazı parçaları satın almak ve kendi koparma tahtası yapmak zor değil. Varolan bir koparma veya basit bir değerlendirme kurulu kullanana kadar bunu yapmazdım ve sonra gerekirse klonlayın. İdeal olarak dahili bir rc osilatör, temelde güç, toprak ve programlama pimleri ile bir parça ile başlayın ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.