Arduino Uno'nun hafızasını nasıl silebilirim?


15

Ben sadece oğlumla Arduino'yu öğrenen bir tamirciyim ve USB kablosunu Arduino'ya geri taktığımda programın hala çalışmakta olduğunu ve kendime düşündüm ki, "iyi bir şey değil yukarı."

Peki, insanların bu şeylerle bir gün dediği normal yol nedir? Genellikle çıplak kemikleri yükler misin, hiçbir şey çizmez veya sadece her şeyi çıkarır mısınız?


4
"USB kablosunu Arduino'ya tekrar taktığımda program hala çalışıyordu", ne gibi bir davranış gözlemlediniz ve hangi davranışı bekliyordunuz? Arduino'ya bağlı bir şey var mıydı?
jippie

@jippie evet, bir sürü LED takılı ve hepsi aydınlandı. Bazı nedenlerden dolayı programların belleğe yüklendiğini ve yeniden başlatılacağını düşündüm, ama bu olmadığı için ....
Peter Turner

7
Programlar RAM'e değil flash belleğe yüklenir, bu nedenle güç kapatıldıktan sonra bile tutulurlar.
Ricardo

Yanıtlar:


15

Açıldığında, Arduino en son hangi programa konduysa onu çalıştıracaktır. Çözüm: Çalışmasını istemiyorsanız açmayın.

Kutunun dışındayken, Arduino genellikle Blink programını çalıştırır. Böylece, sadece "sıfırlamak" istiyorsanız bunu yükleyebilir ve bir gün olarak adlandırabilirsiniz.

Veya uyku komutlu bir döngü programına sahip olun.

USB önyükleyici ile icsp pimleri üzerinden uğraşıyorsanız, bu yeterli değildir, ancak önyükleyiciyi yeniden yüklemeniz gerekir. Ancak, programları usb yoluyla yüklüyorsanız veya doğrudan bir programcı kullanıyorsanız, sıfırlamak için Blink veya başka bir kukla program yüklemeyle ilgili bir sorun yoktur.


voltaj terminallerine takılı hiçbir şey olmadan kendi kendini yok eden bir program çalıştırmak mümkün mü?
Peter Turner

@PeterTurner elektrik olmadığında? Hayır. Ancak pinleri kötüye kullanan bir program ekleyebilirsiniz ve eğer bazı hasarlar üzerinde kalırsanız (pinler bağlı olmadıkça fazla değil)
çağrılır

9

Güvenlik büyük bir endişe ise, o zaman bir gün çağırmadan önce neredeyse her zaman bir dur * kroki yüklemelisiniz. Bu, örneğin kartınız yarı kalıcı olarak daha büyük bir sistemin parçası olduğunda iyi bir fikir olacaktır. Bunu şu şekilde yapabilirsiniz:

  • Yürütmem kroki FOUND yükle File-> Examples-> Basiciçinde
  • Döngüde büyük gecikme olan bir çizim yükleyin.
#include <limits.h>

void setup()
{}

void loop()
{
  delay(ULONG_MAX);
}
void setup()
{
   exit(0);
}

void loop()
{}

* Dur basitçe mecazi. Tahta gerçekten durmuyor.


2
Veya exit()içinden arayarak benzer (ve daha kalıcı) bir etki elde edebilir misiniz ? setup()loop()
Peter Bloomfield

@ PeterR.Bloomfield Bunu unuttuğuma inanamıyorum!
asheeshr

Neden çıkış veya gecikme ile uğraşasınız ki? Sadece void setup () { } void loop () { }- her durumda dahili olarak işlemci sadece "yararlı bir şey yapmadan" dolaşıyor.
Nick Gammon

1

Yanlış gidebilecek en önemli şey, Arduino'nuzu birkaç hafta bir kenara bırakırsanız, üzerine hangi çizimin (kodun) yüklendiğini unutmanız, ardından çalışmaya geri dönmeniz, donanımı takmanız (bir anahtar, LED veya motor gibi) ) ve beklenmedik bir şekilde yanmasını / açılmasını sağlayın, çünkü önceki kod bağlandığı pime hitap ediyordu.


Çözüm 1. Önce yeni kodu yükleyin.

Basit ve güvenli bir teknik, herhangi bir donanımı takmadan önce üzerinde çalıştığınız yeni kodu yüklemektir . Şimdi kodun ne yaptığını, hangi iğneleri kullandığını biliyorsunuz ve ardından donanımı daha sonra takıyorsunuz (tercihen Arduino'yu çevirme) önce fişini çekerek kapatın).

Sonra gücü yeniden bağladığınızda, yüklediğiniz çizimi çalıştırır, donanımınızı bağlarsınız ve her şey iyi olmalıdır.


Çözüm 2. "Hiçbir şey yapma" taslağını yükleyin.

Bu kısa çizimi yükleyebilirsiniz:

int main () { }

"Hiçbir şey yapmaz". Tüm pinler giriş olarak kalacaktır, böylece donanımınızı güvenle bağlayabilir ve ardından yeni projenizi kodlamaya başlayabilirsiniz.


Önce güvenlik

Uygulanan güçle donanımı (örn. LED'ler, anahtarlar, motorlar) takmamak veya çıkarmamak iyi bir kuraldır. Dikkatiniz dağılmış ve karttaki yanlış sokete takılırsanız, bağlı olduğunuz şeye veya Arduino'ya veya her ikisine birden zarar verebilirsiniz.

Güç kapalıyken, her şeyin doğru yere bağlı olup olmadığını, polaritelerinizin doğru olup olmadığını ve sonuncusunu kontrol etmek için son dakika kontrolü yapabilirsiniz.

Ayrıca, özellikle bir jumper veya kabarık bir şey giyiyorsanız veya halı üzerinde oturuyorsanız, vücudunuzda statik elektrik olmadığından emin olun.

Şahsen Arduino'ya ulaşmadan önce her zaman uzanıyorum ve kendimi "topraklamak" için yakındaki bazı metal parçalara dokunuyorum. Buna bir örnek, bir PC'nin metal kasası, kulaklık soketi veya bunun gibi bir şeydir.

Arduino'ya güç bağladıktan sonra (örn. USB kablosu ile) güç LED'inin yandığını hemen görmezseniz, derhal gücü kesin! Bir şeyi kısa devre yapmış olabilirsiniz ve bunu ne kadar az yaparsanız o kadar iyidir.


1

Bu olduğunda en büyük endişem genellikle Arduino'yu yeni projem için bağladım ve yeni çizimin ilk indirilmesi için USB'yi takıyorum. Endişeleniyorum, önceki programın ne deneyeceğine dair hiçbir fikrim yok, tamamen farklı bir donanıma bağlı.

Şimdiye kadar kötü bir şey olmadı ve her Arduinos'umu çöp kutusuna geri koyduğumda BLINK'i yakmayı benimseyeceğimi sanmıyorum. Muhtemelen sadece bir zaman meselesi.


0

Arduino kartı başka bir cihaza bağlıysa, her şeyi çıkarın ve sadece usb kablosunu kullanarak arduino'yu bilgisayara bağlayın ve yeni kroki yüklemeye çalışın umarım yardımcı olacaktır.


Arduino SE'ye Hoşgeldiniz! Bu cevabın verilen diğer cevaplardan daha iyi olmasının bir nedeni var mı? Teşekkürler!
Anonim Penguen

0

Arduino IDE'de örneklere gidin, Eeprom'u seçin, eeprom temizle'yi seçin ve ardından çizimi yükleyin.

Pim 13'teki LED açıldığında yanarsınız.

NB. Arduino'daki EEPROM'un boyutuna bağlı olarak bu biraz zaman alabilir.


Peki amaç ne? I / O'ya dokunmayan (ancak her açılışta EEPROM'u temizleyen) bir şey mi çalıştırıyorsunuz?
Peter Mortensen

Bunu gerçekten denedin mi? Pin 13 çıkış olarak ayarlanmış gibi görünmüyor (Arduino IDE 1.6.5)
Peter Mortensen
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.