Làm cách nào để xóa bộ nhớ của Arduino Uno?


15

Tôi chỉ là một người thích học hỏi Arduino với con trai tôi và tôi đã rất ngạc nhiên khi tôi cắm dây USB vào Arduino, chương trình vẫn đang chạy và tôi nghĩ: "Thật tốt khi tôi không thổi bất cứ thứ gì lên."

Vì vậy, những gì bình thường mà mọi người gọi nó là một ngày với những điều này? Bạn có thường tải lên xương trần không làm gì phác họa hoặc chỉ rút phích cắm mọi thứ?


4
Ý bạn là gì khi "khi tôi cắm dây USB vào Arduino, chương trình vẫn đang chạy", bạn đã quan sát hành vi nào và hành vi nào bạn mong đợi? Có bất cứ điều gì kết nối với Arduino?
jippie

@jippie yeah, tôi đã cắm một loạt đèn LED và tất cả đều sáng lên. Vì một số lý do, tôi nghĩ rằng các chương trình đã được tải vào bộ nhớ và sẽ được khởi động lại, nhưng vì nó không tồn tại ....
Peter Turner

7
Các chương trình được tải vào bộ nhớ flash, không phải RAM, vì vậy chúng được giữ ngay cả sau khi tắt nguồn.
Ricardo

Câu trả lời:


15

Khi khởi động, Arduino sẽ chạy bất cứ chương trình nào được đưa vào lần cuối. Giải pháp: Đừng bật nó lên nếu bạn không muốn nó chạy.

Khi ra khỏi hộp, Arduino thường chạy chương trình Blink. Vì vậy, bạn chỉ có thể tải nó và gọi nó là một ngày nếu bạn muốn "thiết lập lại" nó.

Hoặc có một chương trình vòng lặp với lệnh ngủ.

Nếu bạn đã làm phiền với bộ tải khởi động USB thông qua các chân icsp, thì điều này vẫn chưa đủ, bạn sẽ cần phải cài đặt lại bộ tải khởi động. Nhưng nếu bạn đã tải lên các chương trình qua usb hoặc trực tiếp sử dụng một lập trình viên, không có vấn đề gì với việc tải lên Blink hoặc một số chương trình giả khác để thiết lập lại nó.


Có thể để nó chạy một chương trình tự hủy mà không có gì cắm vào các cực điện áp?
Peter Turner

@PeterTurner khi không có sức mạnh với nó? Không. Nhưng bạn có thể thêm một chương trình sử dụng sai các chân và nếu bạn để lại một số thiệt hại có thể được gọi (không nhiều trừ khi các chân được kết nối)
Manishearth

9

Nếu an toàn là một mối quan tâm chính, thì bạn hầu như luôn luôn tải một điểm dừng * phác thảo lên bảng trước khi gọi nó là một ngày. Đây sẽ là một ý tưởng tốt, ví dụ, khi bảng của bạn bán vĩnh viễn một phần của một hệ thống lớn hơn. Bạn có thể làm như vậy bằng cách:

  • Tải lên bản phác thảo Bare Minimal được tìm thấy trong File-> Examples-> Basictrong
  • Tải lên một bản phác thảo với một độ trễ lớn trong vòng lặp.
#include <limits.h>

void setup()
{}

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

void loop()
{}

* Dừng lại chỉ đơn giản là nghĩa bóng. Bảng không thực sự ngừng chạy.


2
Bạn có thể có được một hiệu ứng tương tự (và lâu dài hơn) bằng cách gọi exit()từ bên trong setup()hoặc loop()?
Peter Bloomfield

@ PeterR.Bloomfield Không thể tin rằng tôi đã quên điều đó!
asheeshr

Tại sao phải bận tâm với lối ra hoặc sự chậm trễ? Chỉ cần có void setup () { } void loop () { }- trong mọi trường hợp bên trong bộ xử lý chỉ lặp đi lặp lại "không làm gì có ích".
Nick Gammon

1

Điều quan trọng có thể sai là nếu bạn đặt Arduino của mình sang một vài tuần, quên đi bản phác thảo (mã) nào được tải lên nó, sau đó quay lại làm việc với nó, cắm phần cứng (như công tắc, đèn LED hoặc động cơ ) và làm cho nó bất ngờ sáng lên / bật lên, bởi vì mã trước đó đã xử lý mã pin mà nó được kết nối.


Giải pháp 1. Tải mã mới trước.

Một kỹ thuật đơn giản và an toàn là tải mã mới mà bạn đang làm việc hôm nay trước khi bạn cắm bất kỳ phần cứng nào. Bây giờ bạn đã biết mã này làm gì, sử dụng chân nào và sau đó bạn cắm phần cứng vào sau (tốt nhất là bật Arduino tắt đầu tiên bằng cách rút phích cắm điện).

Sau đó, khi bạn kết nối lại nguồn điện, nó sẽ chạy bản phác thảo bạn đã tải lên, bạn đã kết nối phần cứng của mình và tất cả đều ổn.


Giải pháp 2. Tải một bản phác thảo "không làm gì".

Bạn có thể tải lên bản phác thảo ngắn này:

int main () { }

Nó "không làm gì cả". Tất cả các chân sẽ vẫn là đầu vào, do đó bạn có thể gắn phần cứng của mình một cách an toàn và sau đó bắt đầu mã hóa dự án mới của mình.


An toàn là trên hết

Một nguyên tắc tốt là không cắm hoặc rút phích cắm phần cứng (ví dụ: đèn LED, công tắc, động cơ) với nguồn điện được áp dụng. Nếu bạn bị phân tâm và cắm vào ổ cắm sai trên bo mạch, bạn có thể ngay lập tức làm hỏng cả những gì bạn đang kết nối, hoặc Arduino hoặc cả hai.

Khi tắt nguồn, sau đó bạn có thể thực hiện kiểm tra vào phút cuối xem mọi thứ có được kết nối đúng nơi không, bạn có đúng cực của mình không, v.v.

Ngoài ra, hãy đảm bảo bạn không có tĩnh điện trên cơ thể, đặc biệt nếu bạn đang mặc áo liền quần hoặc thứ gì đó mềm mại hoặc đang ngồi trên thảm.

Cá nhân tôi luôn tiếp cận và chạm vào một số phần kim loại gần đó để "tiếp đất" bản thân mình, trước khi tiếp cận Arduino. Một ví dụ là vỏ kim loại của PC, ổ cắm tai nghe hoặc những thứ tương tự.

Nếu, sau khi kết nối nguồn với Arduino (ví dụ: bằng cáp USB), bạn không thấy đèn LED nguồn bật ngay lập tức, hãy ngắt kết nối nguồn ngay lập tức! Bạn có thể đã rút ngắn một cái gì đó, và bạn càng làm ít thời gian hơn thì càng tốt.


1

Mối quan tâm lớn nhất của tôi khi điều này xảy ra là tôi thường nối dây Arduino cho dự án mới của mình và tôi đang cắm USB để tải xuống bản phác thảo mới. Tôi lo lắng, không biết chương trình trước sẽ thử cái gì, được kết nối với phần cứng hoàn toàn khác.

Cho đến nay, không có gì xấu xảy ra và tôi không nghĩ rằng mình sẽ chấp nhận đốt BLINK mỗi khi tôi đặt một trong những Arduinos của mình vào thùng. Có lẽ đó chỉ là vấn đề thời gian.


0

Nếu bo mạch arduino được kết nối với bất kỳ thiết bị nào khác thì hãy rút tất cả mọi thứ và chỉ cần kết nối arduino với máy tính bằng cáp usb và thử tải lên bản phác thảo mới, tôi hy vọng nó sẽ giúp ích.


Chào mừng bạn đến với Arduino SE! Có bất kỳ lý do nào câu trả lời này là tốt hơn so với câu trả lời được cung cấp khác? Cảm ơn!
Chim cánh cụt vô danh

0

Trong Arduino IDE, đi đến các ví dụ, chọn Eeprom, chọn xóa eeprom và sau đó tải lên bản phác thảo.

Khi đèn LED trên chân 13 sẽ bật, bạn đã hoàn thành.

Lưu ý Điều này có thể mất một chút thời gian tùy thuộc vào kích thước của EEPROM trong Arduino.


Vậy vấn đề là gì? Chạy thứ gì đó không chạm vào I / O (nhưng xóa EEPROM mỗi khi bật nguồn)?
Peter Mortensen

Bạn đã thực sự thử điều này? Chân 13 dường như không được thiết lập làm đầu ra (Arduino IDE 1.6.5)
Peter Mortensen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.