תוכן עניינים:

ה- EEPROM המובנה של Arduino שלך: 6 שלבים
ה- EEPROM המובנה של Arduino שלך: 6 שלבים

וִידֵאוֹ: ה- EEPROM המובנה של Arduino שלך: 6 שלבים

וִידֵאוֹ: ה- EEPROM המובנה של Arduino שלך: 6 שלבים
וִידֵאוֹ: M#1: Настройка ПЛК Outseal Mega с отладочной платой ATmega128 | Аутсил Дев. ПЛК Мега 2024, נוֹבֶמבֶּר
Anonim
ה- EEPROM המובנה של Arduino שלך
ה- EEPROM המובנה של Arduino שלך

במאמר זה אנו הולכים לבחון את ה- EEPROM הפנימי בלוחות ה- Arduino שלנו. מהו EEPROM שחלקכם אומרים אולי? EEPROM הוא זיכרון לקריאה בלבד הניתן לתכנות המחיקה.

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

מדוע שתשתמש ב- EEPROM הפנימי? למצבים בהם נתונים ייחודיים למצב זקוקים לבית קבוע יותר. לדוגמה, אחסון המספר הסידורי הייחודי ותאריך הייצור של פרויקט מסחרי מבוסס ארדואינו-פונקציה של הסקיצה יכולה להציג את המספר הסידורי על מסך LCD, או לקרוא את הנתונים על ידי העלאת 'שרטוט שירות'. או שתצטרך לספור אירועים מסוימים ולא לאפשר למשתמש לאפס אותם-כגון מד מרחק או מונה מחזור הפעלה.

שלב 1: איזה סוג נתונים ניתן לאחסן?

איזה סוג נתונים ניתן לאחסן?
איזה סוג נתונים ניתן לאחסן?

כל דבר שניתן לייצג כבתים של נתונים. בייט אחד של נתונים מורכב משמונה סיביות נתונים. קצת יכול להיות מופעל (ערך 1) או כבוי (ערך 0), והם מושלמים לייצוג מספרים בצורה בינארית. במילים אחרות, מספר בינארי יכול להשתמש רק באפסים ובאחד כדי לייצג ערך. לפיכך בינארי ידוע גם בשם "בסיס -2", מכיוון שהוא יכול להשתמש בשתי ספרות בלבד.

כיצד מספר בינארי עם שימוש בשתי ספרות בלבד יכול לייצג מספר גדול יותר? הוא משתמש בהרבה כאלה ואפסים. בואו נבחן מספר בינארי, נניח 10101010. מכיוון שמדובר במספר בסיס 2, כל ספרה מייצגת 2 בכוח x, מ x = 0 ואילך.

שלב 2:

תמונה
תמונה

ראה כיצד כל ספרה במספר הבינארי יכולה לייצג מספר בסיס 10. אז המספר הבינארי למעלה מייצג 85 בבסיס 10-הערך 85 הוא סכום ערכי הבסיס 10. דוגמא נוספת - 11111111 בינארית שווה 255 בבסיס 10.

שלב 3:

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

זה מגביל את הערך העשרוני של המספר ליפול בין אפס ל -255. לאחר מכן עליך להחליט כיצד ניתן לייצג את הנתונים שלך עם טווח מספרים זה. אל תתנו לזה להרתיע אתכם - מספרים המסודרים בצורה הנכונה יכולים לייצג כמעט כל דבר! יש מגבלה אחת שצריך לשים לב אליה - מספר הפעמים שנוכל לקרוא או לכתוב ל- EEPROM. לדברי היצרנית Atmel, ה- EEPROM טוב ל -100,000 מחזורי קריאה/כתיבה (עיין בגיליון הנתונים).

שלב 4:

כעת אנו יודעים את הביטים והבתים שלנו, כמה בתים יכולים להיות מאוחסנים במיקרו -הבקר של הארדואינו שלנו? התשובה משתנה בהתאם לדגם המיקרו -בקר. לדוגמה:

  • לוחות עם אטמל ATmega328, כגון Arduino Uno, Uno SMD, Nano, Lilypad, וכו ' - 1024 בתים (1 קילובייט)
  • לוחות עם ATmel ATmega1280 או 2560, כגון סדרת Arduino Mega - 4096 בתים (4 קילובייט)
  • לוחות עם אטמל ATmega168, כגון Lilypad המקורי של Arduino, Nano הישן, Diecimila וכו ' - 512 בתים.

אם אינך בטוח עיין באינדקס החומרה של Arduino או שאל את ספק הלוח שלך. אם אתה צריך יותר אחסון EEPROM ממה שיש עם המיקרו -בקר שלך, שקול להשתמש ב- I2C EEPROM חיצוני.

בשלב זה אנו מבינים כעת איזה סוג נתונים וכמה ניתן לאחסן ב- EEPROM של Arduino שלנו. עכשיו הגיע הזמן להוציא את זה לפועל. כפי שנדון קודם לכן, יש מקום סופי לנתונים שלנו. בדוגמאות הבאות נשתמש בלוח Arduino טיפוסי עם ה- ATmega328 עם 1024 בתים של אחסון EEPROM.

שלב 5:

כדי להשתמש ב- EEPROM, יש צורך בספרייה, לכן השתמש בספרייה הבאה במערכונים שלך:

#כלול "EEPROM.h"

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

EEPROM.write (a, b);

הפרמטר a הוא המיקום ב- EEPROM לאחסון המספר השלם (0 ~ 255) של נתונים ב. בדוגמה זו, יש לנו 1024 בתים של אחסון זיכרון, כך שערכו של a הוא בין 0 ל- 1023. כדי לאחזר פיסת נתונים היא פשוטה באותה מידה, השתמש:

z = EEPROM.read (א);

כאשר z הוא מספר שלם לאחסון הנתונים ממיקום EEPROM א. עכשיו לראות דוגמא.

שלב 6:

תמונה
תמונה

סקיצה זו תיצור מספרים אקראיים בין 0 ל -255, תאחסן אותם ב- EEPROM, ולאחר מכן אחזור ותציג אותם על הצג הטורי. המשתנה EEsize הוא הגבול העליון של גודל EEPROM שלך, כך (למשל) זה יהיה 1024 עבור Arduino Uno, או 4096 עבור מגה.

// הפגנת EEPROM פנימית של ארדואינו

#לִכלוֹל

int zz; int EEsize = 1024; // גודל בייטים של ה- EEPROM של הלוח שלך

הגדרת חלל ()

{Serial.begin (9600); randomSeed (analogRead (0)); } לולאת void () {Serial.println ("כתיבת מספרים אקראיים …"); for (int i = 0; i <EEsize; i ++) {zz = אקראי (255); EEPROM.write (i, zz); } Serial.println (); עבור (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("מיקום EEPROM:"); Serial.print (א); Serial.print ("מכיל"); Serial.println (zz); עיכוב (25); }}

הפלט מהצג הטורי יופיע, כפי שמוצג בתמונה.

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

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

מוּמלָץ: