שְׁאֵלָה:
כיצד אוכל למחוק את הזיכרון של ה- Arduino Uno?
Peter Turner
2014-02-27 00:32:43 UTC
view on stackexchange narkive permalink

אני פשוט מתעסק עם לומד ארדואינו עם בני והופתעתי שכשחברתי את כבל ה- USB שוב לארדואינו התוכנית עדיין פועלת וחשבתי לעצמי, "זה דבר טוב שלא פשוט לפוצץ משהו. "

אז מה הדרך הרגילה שאנשים מכנים זאת יום עם הדברים האלה? האם אתה בדרך כלל מעמיס את העצמות החשופות ולא עושה שום דבר לשרטט או פשוט לנתק את הכל?

למה אתה מתכוון "כאשר חיברתי את כבל ה- USB שוב לארדואינו התוכנית עדיין פועלת", איזו התנהגות הבחנתם ולאיזו התנהגות ציפיתם? האם משהו היה קשור לארדואינו?
@jippie כן, היו לי הרבה נוריות LED מחוברות וכולן נדלקו. משום מה חשבתי שהתוכניות נטענות בזיכרון והן יופעלו מחדש, אך מכיוון שזה לא קיים ....
התוכניות נטענות בזיכרון פלאש, לא בזיכרון RAM, ולכן הן נשמרות גם לאחר ההפעלה.
שֵׁשׁ תשובות:
#1
+15
Manishearth
2014-02-27 00:37:12 UTC
view on stackexchange narkive permalink

לאחר האתחול, ה- Arduino יפעיל את כל התוכניות שהועלו עליו אחרונה. פתרון: אל תפעיל אותו אם אינך רוצה שיפעל.

כאשר מחוץ לקופסה, Arduino מפעיל בדרך כלל את תוכנית Blink. אז אתה יכול פשוט לטעון את זה ולקרוא לזה יום אם אתה רוצה "לאפס" את זה.

או שיהיה לך תוכנית לולאה עם פקודת שינה.

אם אתה מתעסק עם USB Bootloader דרך סיכות ה- ICSP, זה לא מספיק אם כי, יהיה עליך להתקין מחדש את ה- Bootloader. אך אם העלית תוכניות באמצעות USB או ישירות באמצעות מתכנת, אין שום בעיה בהעלאת Blink או תוכנית דמה אחרת לאיפוסו.

האם ניתן להפעיל תוכנית הרסנית עצמית ללא שום דבר מחובר למסופי המתח?
@PeterTurner כשאין כוח לזה? לא. אבל אתה יכול להוסיף תוכנית שעושה שימוש לרעה בסיכות, ואם אתה משאיר אותה על איזה נזק אפשר לקרוא (לא הרבה אלא אם כן הסיכות מחוברות)
#2
+9
asheeshr
2014-03-02 08:38:25 UTC
view on stackexchange narkive permalink

אם בטיחות היא דאגה מרכזית, כמעט תמיד עליך להעמיס סקיצה * על הלוח לפני שאתה קורא לזה יום. זה יהיה רעיון טוב, למשל, כאשר הלוח שלך הוא חלק קבוע למחצה ממערכת גדולה יותר. אתה יכול לעשות זאת על ידי:

  • העלה את הסקיצה המינימלית החשופה שנמצאה בקובץ -> דוגמאות kbd> -> Basic kbd > ב
  • העלה סקיצה עם עיכוב גדול בלולאה.
  #include <limits.h>void setup () {} loop void () {delay (ULONG_MAX);}  
  הגדרת חלל () {יציאה (0);} לולאה בטלה () {}  קוד> 

* עצירה היא פשוט פיגורטיבית. הלוח לא באמת מפסיק לפעול. Sub>

האם אתה יכול לקבל אפקט דומה (וקבוע יותר) על ידי קריאת 'יציאה ()' מתוך 'setup ()' או 'loop ()'?
@PeterR.Bloomfield לא מאמין ששכחתי מזה!
למה לטרוח ביציאה או בעיכוב? רק שיהיה לך 'setup void () {} loop void () {}' - בכל מקרה פנימי המעבד פשוט מסתובב "לא עושה שום דבר מועיל".
#3
+2
linhartr22
2017-06-08 22:42:12 UTC
view on stackexchange narkive permalink

החשש הגדול ביותר שלי כשזה קורה הוא שלרוב חיווטתי את הארדואינו לפרויקט החדש שלי ואני מחבר את ה- USB להורדה הראשונית של המערכון החדש. אני דואג, שאין לי מושג מה התוכנית הקודמת תנסה, כשהוא מחובר לחומרה אחרת לגמרי.

עד כה שום דבר רע לא קרה ואני לא חושב שאאמץ BLINK בוער בכל פעם הכניס את אחד הארדואינים שלי לפח. זה כנראה רק עניין של זמן.

#4
+1
Nick Gammon
2015-08-19 02:59:16 UTC
view on stackexchange narkive permalink

הדבר העיקרי שיכול להשתבש הוא אם אתה שם את הארדואינו שלך בצד למשך כמה שבועות, תשכח איזה סקיצה (קוד) נטען עליו ואז תחזור לעבוד עליו, חבר חומרה (כמו מתג, נורית LED או מנוע) והדלק / נדלק באופן בלתי צפוי, מכיוון שהקוד הקודם התייחס לסיכה שאליה היה מחובר.


פתרון 1. טען תחילה את הקוד החדש.

טכניקה פשוטה ובטוחה היא לטעון את הקוד החדש עליו אתה עובד היום לפני ש אתה מחבר כל חומרה. עכשיו אתה יודע מה הקוד עושה, באילו סיכות הוא משתמש ואז אתה מחבר את החומרה לאחר מכן (רצוי לכבות את הארדואינו תחילה על ידי ניתוקו).

ואז כשאתה מחבר מחדש את החשמל, הוא מריץ את הסקיצה שהעלית, יש לך את החומרה מחוברת והכל צריך להיות בסדר.


פתרון 2. טען "אל תעשה כלום" שרטוט.

ניתן להעלות את השרטוט הקצר הזה:

  int main () {}  

זה "לא עושה כלום". כל הפינים יישארו כקלטים, כך שתוכל לחבר את החומרה שלך בבטחה ואז להתחיל לקודד את הפרויקט החדש שלך.


תחילה בטיחות

כלל טוב הוא לא לחבר או נתק חומרה (למשל, נוריות, מתגים, מנועים) עם הכוח המופעל. אם אתה מוסחת ומתחבר לשקע הלא נכון בלוח, אתה עלול לפגוע מיד במה שאתה מחובר, או בארדואינו או בשניהם.

כשהכוח כבוי, תוכל לעשות רגע אחרון. בדוק שהכל מחובר למקום הנכון, יש לך את הקוטביות שלך נכון, וכן הלאה.

כמו כן, וודא שאין לך חשמל סטטי בגופך, במיוחד אם אתה חובש מגשר או משהו רכה, או יושבים על השטיח.

באופן אישי אני תמיד מושיט יד ונוגע באיזה חלק מתכתי בקרבת מקום כדי "לקרקע" את עצמי, לפני שאני מושיט יד לארדואינו. דוגמה לכך היא מארז המתכת של מחשב, שקע אוזניות או משהו כזה.

אם לאחר חיבור החשמל לארדואינו (למשל באמצעות כבל ה- USB) אתה לא רואה מיד את נורית החשמל נדלקת, נתק את החשמל מיד! אולי קיצרת משהו, וככל שתקצר פחות זמן בשביל זה, כן ייטב.

#5
  0
nipi
2015-08-18 17:41:12 UTC
view on stackexchange narkive permalink

אם לוח הארדואינו מחובר לכל מכשיר אחר אז נתק הכל ופשוט חבר את הארדואינו למחשב באמצעות כבל ה- USB ונסה להעלות סקיצה חדשה אני מקווה שזה יעזור.

ברוך הבא ל- Arduino SE! האם יש סיבה שתשובה זו טובה יותר מהתשובות האחרות שסופקו? תודה!
#6
  0
Victor Peters
2017-01-11 04:06:09 UTC
view on stackexchange narkive permalink

ב- ID של Arduino, עבור לדוגמאות, בחר Eeprom, בחר eeprom clear ואז העלה את הסקיצה.

כאשר זה נורית הנורית על סיכה 13 תידלק, סיימת.

הערה. זה עשוי להימשך זמן מה, תלוי בגודל ה- EEPROM בארדואינו.

אז מה הטעם? מריץ משהו שלא נוגע בקלט / פלט (אבל מנקה את ה- EEPROM בכל הפעלה)?
האם באמת ניסית את זה? נראה כי סיכה 13 לא מוגדרת כפלט (Arduino IDE 1.6.5)


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...