ஈப்ரோம் எப்படி வேலை செய்கிறது? மெமரி சிப் என்றால் என்ன மற்றும் மைக்ரோ சர்க்யூட்களை எவ்வாறு நிரல் செய்வது. திட்டங்கள் மற்றும் ஓவியங்களின் எடுத்துக்காட்டுகள்

கடந்த முறை, மெகாவிலிருந்து ஃபார்ம்வேரை எவ்வாறு காப்புப் பிரதி எடுப்பது என்பது பற்றிய எனது “கேள்விக்கான விரிவான பதிலை” நான் எழுதியபோது, ​​​​EEPROM காப்புப்பிரதியைக் குறிப்பிடாததற்காக அவர்கள் என்னை நிந்தித்தனர். அந்த நேரத்தில் நான் அதை உணர்வுபூர்வமாக செய்யவில்லை, ஏனென்றால் ... ஆரம்ப "எறிபொருளுக்கான அணுகுமுறை" கட்டத்தில் எல்லாவற்றையும் சிக்கலாக்க வேண்டிய அவசியமில்லை என்று நான் சரியாக தீர்மானித்தேன். உண்மை என்னவென்றால், ஃபார்ம்வேரைத் தொகுத்து பதிவேற்றும்போது EEPROM ஒளிரவில்லை என்பது அனைவருக்கும் தெளிவாகத் தெரியவில்லை. Arduino IDE. அதாவது, IDE இலிருந்து ஃபார்ம்வேர் பதிவேற்றப்படும்போது, ​​EEPROM க்கு முற்றிலும் எதுவும் பதிவேற்றப்படவில்லை என்பதே இதன் பொருள். EEPROM உடனான கையாளுதல்கள் (அதன் பயன்பாடு ஃபார்ம்வேரில் இயக்கப்பட்டிருந்தால்) முற்றிலும் வேறுபட்ட மட்டத்தில் செய்யப்படுகின்றன. எனவே, பேர் ஃபார்ம்வேர் இல்லாமல் காப்புப் பிரதி எடுக்க நல்ல அமைப்புகள், EEPROM இல் (ஒருவேளை மட்டுமே) சேமிக்க முடியும், இது வெறும் ஃபார்ம்வேரை மட்டும் சேமிக்க போதுமானதாக இருந்தது. ஆனால் கேள்வி எழுந்ததால், அதை ஏன் "மெல்ல" கூடாது. அதை வரிசையாகப் பார்ப்போம். EEPROM என்றால் என்ன, அதைப் பற்றி ஏன் பேச வேண்டும்?
EEPROM - (மின்சாரத்தில் அழிக்கக்கூடிய நிரல்படுத்தக்கூடிய படிக்க-ஒன்லி நினைவகம்) மைக்ரோகண்ட்ரோலரின் நிலையற்ற நினைவகத்தின் பகுதி, அதில் தகவல்களை எழுதவும் படிக்கவும் முடியும். செயல்பாட்டின் போது மாறக்கூடிய நிரல் அமைப்புகளை சேமிக்க இது பெரும்பாலும் பயன்படுத்தப்படுகிறது மற்றும் மின்சாரம் அணைக்கப்படும் போது சேமிக்கப்பட வேண்டும்.

3D அச்சுப்பொறி EEPROM ஐ எவ்வாறு பயன்படுத்துகிறது?
மார்லின் ஃபெர்ம்வேர் அவுட் ஆஃப் தி பாக்ஸில், EEPROM பயன்படுத்தப்படுவதில்லை, இதில் பயன்படுத்துவதற்கான திறனை உள்ளடக்கியிருக்கும்.

#EEPROM_SETTINGS ஐ வரையறுக்கவும்
EEPROM_CHITCHAT ஐ வரையறுக்கவும்

EEPROM இன் பயன்பாடு இயக்கப்பட்டால், அச்சுப்பொறி பின்வரும் அமைப்புகளைச் சேமித்து பயன்படுத்த முடியும் (முதலாளித்துவத்திலிருந்து குறிப்பிடப்பட்டது):

  • ஒரு மில்லிமீட்டருக்கு படிகளின் எண்ணிக்கை
  • அதிகபட்ச/குறைந்த ஊட்ட வேகம் [மிமீ/வி]
  • அதிகபட்ச முடுக்கம் [மிமீ/வி^2]
  • முடுக்கம்
  • பின்வாங்கும்போது முடுக்கம்
  • PID அமைப்புகள்
  • வீட்டு நிலை ஆஃப்செட்
  • இயக்கத்தின் போது குறைந்தபட்ச ஊட்ட வேகம் [மிமீ/வி]
  • குறைந்தபட்ச பிரிவு நேரம் [மிவி]
  • அதிகபட்ச வேகம் தாண்டுதல் X-Y அச்சுகள்[மிமீ/வி]
  • Z அச்சில் அதிகபட்ச வேகம் [மிமீ/வி]
பிரிண்டர் திரை மற்றும் கட்டுப்பாடுகளைப் பயன்படுத்தி இந்த அமைப்புகளைத் திருத்தலாம். EEPROM ஐப் பயன்படுத்தும் போது, ​​மெனு பின்வரும் உருப்படிகளைக் காட்ட வேண்டும்:
  • நினைவகத்தை சேமிக்கவும்
  • நினைவகத்தை ஏற்றவும்
  • Failsafe மீட்டமை
நீங்கள் நேரடியாக வேலை செய்ய GCode ஐப் பயன்படுத்தலாம் (Pronterface வழியாக).
  • M500 அடுத்த தொடக்க அல்லது கட்டளை M501 வரை EEPROM இல் தற்போதைய அமைப்புகளைச் சேமிக்கிறது.
  • M501 EEPROM இலிருந்து அமைப்புகளைப் படிக்கிறது.
  • M502 Configurations.h இல் குறிப்பிடப்பட்டுள்ள இயல்புநிலை மதிப்புகளுக்கு அமைப்புகளை மீட்டமைக்கிறது. அதன் பிறகு M500 ஐ இயக்கினால், இயல்புநிலை மதிப்புகள் EEPROM இல் உள்ளிடப்படும்.
  • M503 தற்போதைய அமைப்புகளைக் காட்டுகிறது - ""EEPROM இல் பதிவுசெய்யப்பட்டவை.""
Repitier firmware இல் EEPROM பற்றி படிக்கலாம்.

EEPROM இல் தரவைப் படிப்பது மற்றும் எழுதுவது எப்படி?
விசையைப் பயன்படுத்தி ஃபார்ம்வேர் காப்புப் பிரதி முறையில் விவரிக்கப்பட்டுள்ள முறையைப் போன்றது -யு. இந்த விஷயத்தில் மட்டுமே, அதற்குப் பிறகு EEPROM ஐப் படிக்க வேண்டும் என்பதைக் குறிக்கும் ஒரு சுட்டிக்காட்டி இருக்கும்.

avrdude.exe -p atmega2560 -c வயரிங் -PCOM5 -b115200 -Ueeprom:r:"printer_eeprom".eep:i

இந்த கட்டளையானது EEPROM தரவை "printer_eeprom.eep" என்ற கோப்பில் படிக்கும்.

பதிவு செய்வதும் சிக்கலானது அல்ல, அதே கட்டளையால் செய்யப்படுகிறது, இது விசையில் மட்டுமே வேறுபடுகிறது -யுஇது "r" அல்ல, ஆனால் "w".

avrdude.exe -p atmega2560 -c வயரிங் -PCOM5 -b115200 -Ueeprom:w:"printer_eeprom".eep:i

வெற்றியடைந்தால், திரையில் பின்வரும் செய்தியைப் போன்ற ஒன்றைக் காண்பீர்கள்.

EEPROM ஐ எப்படி, ஏன் அழிப்பது?
தொடங்குவதற்கு, "இதை ஏன் செய்வது?" முந்தைய ஃபார்ம்வேரும் EEPROM ஐப் பயன்படுத்தியிருந்தால், நீங்கள் அதை அழிக்க வேண்டும், மேலும் நினைவகத்தில் குப்பைகள் இருக்கலாம். ஒரு ஃபார்ம்வேரிலிருந்து மற்றொன்றுக்கு (மார்லினிலிருந்து ரெபிடியர் ஈஎம்என்ஐபிக்கு) மாறிய பிறகு, அவர்களின் அச்சுப்பொறி "ஆக்கப்பூர்வமாக" செயல்படத் தொடங்கியது போன்ற சிக்கல்களைக் கொண்டவர்களை எங்காவது நான் ஏற்கனவே சந்தித்திருக்கிறேன். வெவ்வேறு ஃபார்ம்வேர் தங்கள் தரவை கீழ் சேமித்து வைத்திருப்பதே இதற்குக் காரணம் வெவ்வேறு முகவரிகள். நீங்கள் தவறான முகவரியிலிருந்து தரவைப் படிக்க முயற்சிக்கும்போது, ​​குழப்பம் தொடங்குகிறது.
நீங்கள் ஃபார்ம்வேரில் இருந்து நிரல் ரீதியாக மட்டுமே EEPROM ஐ அழிக்க முடியும், ஆனால் இதைச் செய்ய நீங்கள் தற்காலிகமாக ஒரு சிறப்பு ஓவியத்தை கட்டுப்படுத்தியில் பதிவேற்ற வேண்டும். அதிகாரப்பூர்வ Arduino ஆவணத்தில் இதைப் பற்றி மேலும் படிக்கலாம்.
EEPROM அழிக்கப்பட்டால் இல்லை அர்டுயினோ போர்டு, மற்றும் சில சுருக்கக் கட்டுப்படுத்திகளில், போர்டில் உள்ள ஒரு குறிப்பிட்ட கட்டுப்படுத்தியில் EEPROM இன் அளவைக் கணக்கில் கொண்டு ஸ்கெட்ச் குறியீடு மாற்றப்பட வேண்டும். இதைச் செய்ய, நீங்கள் "For" லூப்பில் இறுதி நிலையை மாற்ற வேண்டும். எடுத்துக்காட்டாக, 1kb EEPROM நினைவகம் கொண்ட ATmega328க்கு, சுழற்சி இப்படி இருக்கும்:
முடிவுரை.
நான் சில காலமாக அலைந்து கொண்டிருக்கிறேன், ஆனால் இவை அனைத்தும் எதற்காக? ஃபார்ம்வேரை காப்புப் பிரதி எடுக்கும்போது, ​​EEPROM ஐயும் சேமிக்க முடியும், ஆனால் அதில் சேமிக்கப்பட்ட அமைப்புகள் தேவைப்பட்டால் மட்டுமே. நீங்கள் அவர்களை தியாகம் செய்ய தயாராக இருந்தால், அதை மறந்து விடுங்கள். மேலும், நீங்கள் ஒரு ஃபார்ம்வேரை மற்றொன்றுக்கு மாற்றினால் அல்லது ஒரு பதிப்பிலிருந்து மற்றொரு பதிப்பிற்கு மாறினால், பதிவேற்றும் முன் EEPROM ஐ அழிக்க சோம்பேறியாக இருக்க வேண்டாம். புதிய நிலைபொருள். சரி, அதே நேரத்தில் நாங்கள் நிறைய புதிய விஷயங்களைக் கற்றுக்கொண்டோம்.

பாடம் 15

பகுதி 1

உள் நிலையற்ற நினைவகம் EEPROM

நான் நினைக்கிறேன், ஒருவேளை அனைவருக்கும் இல்லை, ஆனால் பல மக்கள் AVR கட்டுப்படுத்திகளில், முக்கிய கூடுதலாக சீரற்ற அணுகல் நினைவகம், அதே போல் ஃபார்ம்வேரை சேமிப்பதற்கான நினைவகம், போன்ற நிலையற்ற நினைவகமும் உள்ளது EEPROM. இந்த நினைவகம் தகவல்களின் மின் அழிப்பு தொழில்நுட்பத்தைப் பயன்படுத்தி உருவாக்கப்பட்டது, இது அதன் முன்னோடி EPROM ஐப் போலல்லாமல், புற ஊதா கதிர்களைப் பயன்படுத்தி மட்டுமே அழிக்கப்பட்டது, இந்த வகை நினைவகத்தை கிட்டத்தட்ட எல்லா இடங்களிலும் பயன்படுத்த அனுமதித்தது. நாம் அறிந்தபடி, Flesh போன்ற நிலையற்ற நினைவகமும் உள்ளது, இது மிகவும் மலிவானது, ஆனால் இது ஒரு குறிப்பிடத்தக்க குறைபாடு உள்ளது. அங்கு ஒரு பைட்டை அழிக்க இயலாது; அழித்தல் தொகுதிகளில் மட்டுமே செய்யப்படுகிறது, இது சில சந்தர்ப்பங்களில் முற்றிலும் வசதியாக இருக்காது, குறிப்பாக சிறிய தகவல்களைச் சேமிக்க வேண்டியிருக்கும் போது, ​​​​இந்த தகவல் சிறிய அமைப்பு அளவுருக்களைக் குறிக்கிறது. எனவே, நாமும் நிறுத்த வேண்டும் இந்த வகைநினைவு. அது கட்டுப்படுத்தியில் இருப்பதால் மட்டுமல்ல, கட்டுப்படுத்தி சக்தியை இழந்த பின்னரும் நமக்குத் தேவைப்படும் சில அளவுகளை சேமிப்பதற்கு இது மிகவும் வசதியானது.

நாங்கள் Atmega8A கட்டுப்படுத்தியுடன் பணிபுரிவதால், இந்த MK இன் தொழில்நுட்ப ஆவணங்களைத் திறந்து, அத்தகைய நினைவகத்தின் மொத்தம் 512 பைட்டுகள் எங்களிடம் இருப்பதைப் பார்ப்போம். இருப்பினும், இது மிகவும் சிறியது அல்ல. எடுத்துக்காட்டாக, மின்சாரம் நிறுத்தப்பட்ட பிறகு அமைப்புகளின் தரவு இழக்கப்படாமல் இருக்க, சில வகையான அலாரம் கடிகாரத்தை நாங்கள் நிரல் செய்தால், இந்த நினைவகத்தை நாம் எளிதாகக் குறிப்பிடலாம். என்றும் ஆவணங்கள் கூறுகின்றன நினைவகம் கொடுக்கப்பட்டது 100,000 எழுதுதல்/படித்தல் சுழற்சிகளில் உயிர்வாழ்வது உறுதி.

இப்போது இது ஒரு கேள்வியை எழுப்புகிறது. மைக்ரோகண்ட்ரோலரில் இந்த நினைவகத்துடன் பணிபுரியும் செயல்முறை எவ்வாறு ஒழுங்கமைக்கப்படுகிறது? ஏ.வி.ஆர்? எப்போதும் போல, Atmel இதை கவனித்து, வன்பொருள் மட்டத்தில் இந்த செயல்முறையை ஏற்பாடு செய்தது, இது மிகவும் மகிழ்ச்சி அளிக்கிறது, ஏனெனில் நாம் தொடர்ந்து கட்டுப்படுத்தி வளங்களை சேமிக்க வேண்டும். இந்த வன்பொருள் அளவைக் கட்டுப்படுத்த, சில பதிவுகள் உள்ளன.

அவற்றில் ஒன்று பதிவு ஜோடி EEAR. ஏன் ஒரு ஜோடி, ஆனால் 512 முகவரிகள் 8 பிட்டுகளுக்கு பொருந்தாது என்பதால், மேலும் ஒன்று தேவை

நிரலாக்கச் செயல்பாட்டின் போது நாம் எவ்வாறு உரையாற்றுவோம் என்பதைப் பார்ப்போம் EEPROM.

அடுத்தது தரவுப் பதிவு EADR

ஒரு குறிப்பிட்ட EEPROM நினைவக முகவரியில் எழுதுவதற்கும் அதே நினைவகத்தின் குறிப்பிட்ட முகவரியிலிருந்து அதைப் படிக்கவும் இந்தப் பதிவேட்டில் தரவை எழுதுவோம்.

சரி, வழக்கம் போல், வன்பொருள் மட்டத்தில் ஒழுங்கமைக்கப்பட்ட எந்த புற அல்லது தொழில்நுட்பமும் கட்டுப்பாட்டு பதிவு இல்லாமல் செய்ய முடியாது. எங்கள் நிர்வாகப் பதிவேடு என்பது பதிவு EECR

இந்த பதிவேட்டின் பிட்களை உடனடியாக தெரிந்து கொள்வோம்.

பிட் EERE— EEPROM நினைவகத்திலிருந்து படிக்கும் செயல்முறையைத் தொடங்கும் ஒரு பிட். மேலும், தரவுப் பதிவேட்டில் தரவு படித்து எழுதப்பட்டவுடன், இந்த பிட் மீட்டமைக்கப்படும். எனவே, இந்த பிட்டை ஒரு கட்டுப்பாட்டு பிட்டாக மட்டுமல்லாமல், நிலை அல்லது நிலை பிட்டாகவும் கருதலாம்.

பிட் EEWE— a bit, இதன் அமைப்பானது தரவு பதிவேட்டில் இருந்து ஒரு குறிப்பிட்ட EEPROM முகவரிக்கு தரவை எழுதுமாறு கட்டுப்படுத்திக்கு கட்டளையிடுகிறது. எழுதும் செயல்முறை முடிந்ததும், இந்த பிட் சுயாதீனமாக மீட்டமைக்கப்படும்.

பிட் EEMWE- பதிவு செயல்முறையை அனுமதிக்கும் (தொடங்கவில்லை) ஒரு பிட்.

பிட் ஈரி- குறுக்கீடுகளை செயல்படுத்தும் பிட்.

சரி, இப்போது திட்டத்திற்கு செல்லலாம். திட்டம் வழக்கமான நிலையான வழியில் உருவாக்கப்பட்டது மற்றும் பெயரிடப்பட்டது சோதனை13. கோப்பும் சேர்க்கப்பட்டது main.hமற்றும் கோப்புகள் உருவாக்கப்படுகின்றன eeprom.hமற்றும் eeprom.c.

இங்கே ஆதாரம்உருவாக்கப்பட்ட கோப்புகள்

Test13.c:

#சேர்க்கிறது"main.h"

முழு எண்ணாகமுக்கிய( வெற்றிடமானது)

{

போது(1)

{

}

}

#ifndefMAIN_H_

#வரையறுMAIN_H_

#வரையறுF_CPU8000000UL

#சேர்க்கிறது

#சேர்க்கிறது

#சேர்க்கிறது

#சேர்க்கிறது

#சேர்க்கிறது

#சேர்க்கிறது"eeprom.h"

 

#endif/* MAIN_H_ */

eeprom.h

#ifndefEEPROM_H_

#வரையறுEEPROM_H_

#சேர்க்கிறது"main.h"

வெற்றிடமானதுEEPROM_write( கையொப்பமிடாதமுழு எண்ணாகui முகவரி, கையொப்பமிடாதகரிucData);

கையொப்பமிடாதகரிEEPROM_படித்தது( கையொப்பமிடாதமுழு எண்ணாகui முகவரி);

#endif/* EEPROM_H_ */

eeprom.c

#சேர்க்கிறது"eeprom.h"

முதலில், அதன்படி, EEPROM நினைவகத்தில் தரவை எழுத முயற்சிப்போம். சரி, இது தர்க்கரீதியானது, ஏனென்றால் நாங்கள் எதையும் எழுதவில்லை என்றாலும், எங்களிடம் படிக்க எதுவும் இல்லை.

சரி, நாம் கவலைப்படாமல், எழுதும் செயல்பாட்டிற்கான குறியீட்டையும், தொழில்நுட்ப ஆவணத்தில் உள்ள எடுத்துக்காட்டில் இருந்து படிக்கும் செயல்பாட்டையும் கோப்பில் செருகுவோம். eeprom.cமற்றும் ஆங்கில மொழி கருத்துகளை அகற்றி, ரஷ்ய மொழி உள்ளவற்றை அங்கு செருகவும். அனைத்து திருத்தங்களுக்கும் பிறகு கோப்பு இப்படி இருக்கும்

#சேர்க்கிறது"eeprom.h"

வெற்றிடமானதுEEPROM_write( கையொப்பமிடாதமுழு எண்ணாகui முகவரி, கையொப்பமிடாதகரிucData)

{

போது( EECR& (1<< EEWE))

{}

EEAR= ui முகவரி; //முகவரியை அமைக்கவும்

ஈடிஆர்= ucData; //நாங்கள் பதிவேட்டில் தரவை வழங்குகிறோம்

EECR|= (1<< EEMWE); //பதிவு செய்ய அனுமதி

EECR|= (1<< EEWE); //நினைவகத்திற்கு ஒரு பைட் எழுதுங்கள்

}

கையொப்பமிடாதகரிEEPROM_படித்தது( கையொப்பமிடாதமுழு எண்ணாகui முகவரி)

{

போது( EECR& (1<< EEWE))

{} //கடைசி நினைவக செயல்பாட்டின் மூலம் இறுதிக் கொடி வெளியிடப்படும் வரை காத்திருங்கள்

EEAR= ui முகவரி; //முகவரியை அமைக்கவும்

EECR|= (1<< EERE); //நினைவகத்திலிருந்து தரவுப் பதிவேட்டில் படிக்கும் செயல்பாட்டைத் தொடங்கவும்

திரும்பஈடிஆர்; //முடிவைத் திருப்பி அனுப்பு

}

ஒரு கோப்பில் இந்த செயல்பாடுகளுக்கான முன்மாதிரிகளை எழுதுவோம் eeprom.h

#சேர்க்கிறது"main.h"

வெற்றிடமானதுEEPROM_write( கையொப்பமிடாதமுழு எண்ணாகui முகவரி, கையொப்பமிடாதகரிucData);

கையொப்பமிடாதகரிEEPROM_படித்தது( கையொப்பமிடாதமுழு எண்ணாகui முகவரி);

இப்போது முக்கிய() செயல்பாட்டில் எழுதும் செயல்பாட்டை அழைப்போம், அதன் மூலம் முகவரி 1 க்கு சில 8-பிட் மதிப்பை எழுத முயற்சிப்போம். பொதுவாக, இந்த நினைவகத்தில் முகவரி 0 இலிருந்து தொடங்குகிறது.

முழு எண்ணாகமுக்கிய( வெற்றிடமானது)

EEPROM_write(1, 120);

போது(1)

அதே பிழைத்திருத்த பலகையை அதனுடன் எதையும் இணைக்காமல், சோதனைகளுக்குப் பயன்படுத்துகிறோம்

திட்டத்தை அசெம்பிள் செய்து ஃபார்ம்வேர் நிரலுக்குச் செல்லலாம் அவ்ருடே.

அங்கு எங்கள் ஃபார்ம்வேர் கோப்பைத் தேர்ந்தெடுத்து, கட்டுப்படுத்தியைப் படிக்க முயற்சிக்கவும், பின்னர் "அனைத்தையும் அழி" பொத்தானைப் பயன்படுத்தி அனைத்தையும் அழிக்கவும்.

avrdude திட்டத்தில் மற்றொரு வரி "ஈப்ரோம்" உள்ளது. இந்த நினைவகத்தில் நிரல் ரீதியாக அல்ல, ஒரு கோப்பிலிருந்து எழுத இந்த வரியைப் பயன்படுத்தலாம். ஆனால் நாங்கள் எங்கள் நிரலிலிருந்து எழுதுவோம், மேலும் EEPROM நினைவகத்தை ஒரு கோப்பில் படிக்க இந்த வரியைப் பயன்படுத்துவோம். இந்த வரியில் உள்ள பாதையை நீங்கள் கையால் எழுதலாம் மற்றும் கோப்பு தானாகவே உருவாக்கப்படும். எடுத்துக்காட்டாக, "C:\1\11111" என்று எழுதி, "படிக்க" என்பதைக் கிளிக் செய்க, இந்த பாதையில் EEPROM நினைவகத்திலிருந்து அனைத்து தகவல்களும் குறிப்பிட்ட கோப்பில் எழுதப்படும்.

இடதுபுறத்தில் குறிப்பிடப்பட்ட கடிதத்துடன் ஊடகம் இருக்கும் வரை மற்றும் எழுதக்கூடியதாக இருக்கும் வரை நீங்கள் எந்த பாதையையும் எழுதலாம். முன்கூட்டியே கோப்புறையை உருவாக்குவதும் நல்லது.

இப்போது இந்த கோப்பை வட்டில் கண்டுபிடித்து நோட்பேடில் திறப்போம்

இந்தக் கோப்பு ஃபார்ம்வேர் கோப்பின் தோராயமான அதே வடிவமைப்பைக் கொண்டுள்ளது. முதலில் முகவரி, பின்னர் 32 பைட்டுகள் தகவல் மற்றும் இந்த 32 பைட்டுகளுக்கான செக்சம். EEPROM நினைவகத்தில் நாம் எதையும் எழுதவில்லை என்றால், எல்லா முகவரிகளிலும் FFகள் இருக்கும், அதாவது, எல்லா மெமரி பிட்களிலும் எங்களிடம் இருக்கும்.

நாங்கள் கோப்பை மூடுகிறோம், கட்டுப்படுத்தியை ப்ளாஷ் செய்ய முயற்சிக்கிறோம், பின்னர் மீண்டும் கோப்பில் EEPROM நினைவகத்தைப் படித்து கோப்பைத் திறக்கவும்

கோப்பில் "78" எண் எழுதப்பட்டிருப்பதைக் காண்கிறோம், அதாவது தசம வடிவத்தில் 120.

இப்போது "எல்லாவற்றையும் அழி" பொத்தானை அழுத்த முயற்சிப்போம், இந்த விஷயத்தில் EEPROM நினைவகம் அழிக்கப்படக்கூடாது.

நாங்கள் மீண்டும் கோப்பில் EEPROM ஐப் படித்து, கோப்பைத் திறந்து, நினைவகம் அழிக்கப்பட்டதைக் காண்கிறோம், மீண்டும் எல்லா இடங்களிலும் "FF" உள்ளது.

அது ஏன் நடந்தது? ஏனெனில் நீங்கள் உருகிகளை சரிசெய்ய வேண்டும். படிக்கும் உருகி

EESAVE பிட்டில் கவனம் செலுத்துவோம். இந்த பிட் ஒன்றாக இருக்கும் போது (நம்மிடம் இருப்பது போல், பிட்கள் தலைகீழாக இருக்கும்), பின்னர் மின்சாரம் அணைக்கப்படும்போதும், அழிக்கப்படும்போதும் EEPROM நினைவகத்தை அழிக்கும்படி கட்டாயப்படுத்துகிறோம். இது நிகழாமல் தடுக்க, இந்த பிட் மீட்டமைக்கப்பட வேண்டும், அதாவது, அதில் ஒரு சரிபார்ப்பு அடையாளத்தை வைத்து உருகிகளை ப்ளாஷ் செய்யவும்.

நாம் உருகிகளை ஒளிரச் செய்கிறோம், கட்டுப்படுத்தியை அழிக்கிறோம், கட்டுப்படுத்தியை ப்ளாஷ் செய்கிறோம், அதை மீண்டும் அழிக்கிறோம், EEPROM நினைவகத்தை ஒரு கோப்பாகப் படித்து அதைத் திறக்கிறோம். எங்களிடமிருந்து எதுவும் அழிக்கப்படவில்லை என்பதை இப்போது காண்கிறோம்

இப்போது மின்வழங்கலில் இருந்து கட்டுப்படுத்தியை துண்டிக்க முயற்சிப்போம், சிறிது நேரம் கழித்து மீண்டும் மின்சாரம் பயன்படுத்தவும். மீண்டும் நாம் EEPROM ஐ கோப்பில் படிக்கிறோம், எல்லாம் அப்படியே உள்ளது. நன்று!

டுடோரியலின் அடுத்த பகுதியில், EEPROM நினைவகத்திலிருந்து தரவை நிரல் ரீதியாகப் படிக்க முயற்சிப்போம்.

வீடியோ டுடோரியலைப் பார்க்கவும் (படத்தின் மீது கிளிக் செய்யவும்)

இடுகை பார்வைகள்: 7,259

மின்சாரம் அழிக்கக்கூடிய நிரல்படுத்தக்கூடிய படிக்க-ஒன்லி நினைவகம் (EEPROM) சில்லுகள் உலோக ஆக்சைடு குறைக்கடத்தி கணினி சில்லுகள் ஆகும், அவை அச்சிடப்பட்ட சர்க்யூட் போர்டில் பயன்படுத்தப்படுகின்றன. இந்த வகை சில்லுகளை ஒரு வலுவான மின்னணு சிக்னலைப் பயன்படுத்தி அழிக்கலாம் மற்றும் மறுபிரசுரம் செய்யலாம். இது இணைக்கப்பட்ட சாதனத்திலிருந்து சிப்பை அகற்றாமலேயே இதைச் செய்ய முடியும் என்பதால், EEPROM சில்லுகள் பல தொழில்களில் பயன்படுத்தப்படுகின்றன.
EEPROM சிப்பில் நிலையற்ற நினைவகம் உள்ளது, எனவே சிப்பிற்கான மின்சாரம் தடைபட்டால் அதன் தரவு இழக்கப்படாது. இந்த வகை சில்லுகள் தேர்ந்தெடுக்கப்பட்ட முறையில் திட்டமிடப்படலாம், அதாவது அதன் நினைவகத்தின் ஒரு பகுதியை புதிய மேலெழுதலின் மூலம் மீதமுள்ள நினைவகத்தை பாதிக்காமல் மாற்றலாம். EEPROM சில்லுக்குள் சேமிக்கப்படும் தகவல் அழிக்கப்படும் வரை அல்லது மறுபிரசுரம் செய்யப்படும் வரை நிரந்தரமாக இருக்கும், இது கணினிகள் மற்றும் பிற மின்னணு சாதனங்களில் மதிப்புமிக்க அங்கமாக மாறும்.

EEPROM சில்லுகள் மிதக்கும் கேட் டிரான்சிஸ்டர்களை அடிப்படையாகக் கொண்டவை. EEPROM சிப் ஆனது கேட் ஆக்சைடு வழியாக எலக்ட்ரான்கள் வடிவில் நிரல்படுத்தக்கூடிய தகவலை கட்டாயப்படுத்துவதன் மூலம் திட்டமிடப்பட்டுள்ளது. மிதக்கும் வாயில் இந்த எலக்ட்ரான்களுக்கு சேமிப்பை வழங்குகிறது. ஒரு நினைவக செல் எலக்ட்ரான்களுடன் சார்ஜ் செய்யப்படும்போது அது திட்டமிடப்பட்டதாகக் கருதப்படுகிறது, மேலும் இது பூஜ்ஜியத்தால் குறிக்கப்படுகிறது. ஒரு நினைவக செல் சார்ஜ் செய்யப்படாவிட்டால், அது நிரல்படுத்தப்படவில்லை மற்றும் ஒன்றால் குறிக்கப்படுகிறது.

பரந்த அளவிலான சாதனங்களுக்கு நினைவகம் தேவைப்படுகிறது, எனவே EEPROM சில்லுகள் நுகர்வோர் மின்னணு துறையில் பல பயன்பாடுகளைக் கொண்டுள்ளன. அவை கேமிங் அமைப்புகள், தொலைக்காட்சிகள் மற்றும் கணினி மானிட்டர்களில் பயன்படுத்தப்படுகின்றன. செவித்திறன் கருவிகள், டிஜிட்டல் கேமராக்கள், புளூடூத் தொழில்நுட்பம் மற்றும் கேமிங் அமைப்புகள் ஆகியவையும் EEPROM சில்லுகளைப் பயன்படுத்துகின்றன. அவை தொலைத்தொடர்பு, மருத்துவம் மற்றும் உற்பத்தித் தொழில்களில் பயன்படுத்தப்படுகின்றன. தனிப்பட்ட மற்றும் வணிக கணினிகளில் EEPROM உள்ளது.

EEPROM சிப் வாகனத் துறையில் பரந்த அளவிலான பயன்பாடுகளையும் கொண்டுள்ளது. இது பூட்டு எதிர்ப்பு பிரேக்கிங் சிஸ்டம், ஏர் பேக்குகள், எலக்ட்ரானிக் ஸ்டெபிலிட்டி கன்ட்ரோல்கள், டிரான்ஸ்மிஷன்கள் மற்றும் என்ஜின் கண்ட்ரோல் யூனிட்களில் பயன்படுத்தப்படுகிறது. EEPROM சில்லுகள் ஏர் கண்டிஷனிங் யூனிட்கள், இன்ஸ்ட்ரூமென்ட் பேனல் டிஸ்ப்ளேக்கள், உடல் கட்டுப்பாட்டு தொகுதிகள் மற்றும் கீலெஸ் என்ட்ரி சிஸ்டங்களிலும் பயன்படுத்தப்படுகின்றன. இந்த சில்லுகள் எரிபொருள் பயன்பாட்டைக் கண்காணிக்க உதவுகின்றன மற்றும் பல்வேறு கண்டறியும் அமைப்புகளிலும் பயன்படுத்தப்படுகின்றன.

EEPROM சிப் மூலம் மேலெழுதப்படக்கூடிய மறுமுறைகளின் எண்ணிக்கைக்கு வரம்பு உள்ளது. சில்லுக்குள் உள்ள அடுக்கு பல மாற்றங்களால் படிப்படியாக சேதமடைகிறது. சில EEPROM சில்லுகளை ஒரு மில்லியன் முறை வரை மாற்றியமைக்க முடியும் என்பதால் இது பெரிய பிரச்சனை இல்லை. தொழில்நுட்பத்தின் மேலும் முன்னேற்றங்கள் எதிர்காலத்தில் நினைவக சில்லுகள் என்ன செய்ய முடியும் என்பதில் சாதகமான தாக்கத்தை ஏற்படுத்தும்.

EEPROM என்பது நிலையற்ற மின்சாரம் அழிக்கக்கூடிய நினைவகம். இந்த மைக்ரோ சர்க்யூட்களில் எழுதும்-அழித்தல் சுழற்சிகளின் எண்ணிக்கை 1,000,000 மடங்கு அடையும். அவற்றில் உள்ள நெரிசல் செல்கள், அதே போல் EPROM படிக்க-மட்டும் நினைவுகள், மிதக்கும்-கேட் டிரான்சிஸ்டர்களின் அடிப்படையில் செயல்படுத்தப்படுகின்றன. இந்த நினைவக கலத்தின் உள் அமைப்பு படம் 1 இல் காட்டப்பட்டுள்ளது:


படம் 1. மின்சாரம் அழிக்கக்கூடிய ROM (EEPROM) நினைவக செல்

EEPROM நினைவக செல் என்பது MOS டிரான்சிஸ்டர் ஆகும், இதில் வாயில் பாலிகிரிஸ்டலின் சிலிக்கானால் ஆனது. பின்னர், சிப்பின் உற்பத்தி செயல்பாட்டின் போது, ​​இந்த வாயில் ஆக்ஸிஜனேற்றம் செய்யப்படுகிறது, இதன் விளைவாக அது சிலிக்கான் ஆக்சைடால் சூழப்பட்டிருக்கும், இது சிறந்த இன்சுலேடிங் பண்புகளைக் கொண்ட மின்கடத்தா ஆகும். மிதக்கும் கேட் கொண்ட டிரான்சிஸ்டரில், ROM முற்றிலும் அழிக்கப்படும் போது, ​​"மிதக்கும்" வாயிலில் கட்டணம் இல்லை, எனவே இந்த டிரான்சிஸ்டர் மின்னோட்டத்தை நடத்தாது. நிரலாக்கத்தின் போது, ​​மிதக்கும் வாயிலுக்கு மேலே அமைந்துள்ள இரண்டாவது வாயிலில் உயர் மின்னழுத்தம் பயன்படுத்தப்படுகிறது, மேலும் சுரங்கப்பாதை விளைவு காரணமாக கட்டணங்கள் அதில் தூண்டப்படுகின்றன. நிரலாக்க மின்னழுத்தம் அகற்றப்பட்ட பிறகு, தூண்டப்பட்ட கட்டணம் மிதக்கும் வாயிலில் இருக்கும், எனவே டிரான்சிஸ்டர் தொடர்ந்து இயங்குகிறது. அதன் மிதக்கும் போல்ட்டின் சார்ஜ் பல தசாப்தங்களாக சேமிக்கப்படும்.

இதேபோன்ற நினைவக செல் புற ஊதா அழிக்கக்கூடிய ROM (EPROM) இல் பயன்படுத்தப்பட்டது. மின் அழிப்பைக் கொண்ட நினைவக கலத்தில், எழுதுவது மட்டுமல்லாமல், தகவலை அழிக்கவும் முடியும். நிரலாக்க வாயிலில் பதிவு செய்யும் மின்னழுத்தத்திற்கு எதிர் மின்னழுத்தத்தைப் பயன்படுத்துவதன் மூலம் தகவல் அழிக்கப்படுகிறது. UV அழிக்கும் ரோம் போலல்லாமல், EEPROM நினைவகத்தின் அழிக்கும் நேரம் சுமார் 10 ms ஆகும்.

மாஸ்க் ROM இன் தொகுதி வரைபடத்திலிருந்து மின் அழிதலுடன் கூடிய நிலையற்ற நினைவகத்தின் தொகுதி வரைபடம் வேறுபடுவதில்லை. ஒரே வித்தியாசம் என்னவென்றால், உருகும் ஜம்பருக்குப் பதிலாக, மேலே விவரிக்கப்பட்ட செல் பயன்படுத்தப்படுகிறது. அதன் எளிமைப்படுத்தப்பட்ட தொகுதி வரைபடம் படம் 2 இல் காட்டப்பட்டுள்ளது.



படம் 2. எளிமைப்படுத்தப்பட்ட EEPROM தொகுதி வரைபடம்

EEPROM மெமரி சில்லுகளுக்கு உதாரணமாக, உள்நாட்டு சில்லுகள் 573РР3, 558РР3 மற்றும் AT28с010, AT28с040 தொடரின் வெளிநாட்டு மைக்ரோ சர்க்யூட்களை Atmel, HN58V1001 ஹிட்டாச்சி இன்டர்சில்டக்டர், X28C010 இலிருந்து பெயரிடலாம். EEPROM நினைவகம் செல்லுலார் சாதனங்களில் பயனர் தரவைச் சேமிக்கிறது சேமிப்பு. படம் 3 இல் காட்டப்பட்டுள்ளபடி EEPROMகள் சுற்று வரைபடங்களில் சித்தரிக்கப்பட்டுள்ளன.


படம் 3. மின்சாரம் மூலம் அழிக்கக்கூடிய படிக்க-மட்டும் நினைவக சாதனத்தின் கிராஃபிக் பதவி

இணையான EEPROM நினைவகத்திலிருந்து தகவலைப் படிப்பது மாஸ்க் ROM இலிருந்து படிப்பதைப் போன்றது. முதலில், படிக்கப்படும் நினைவக கலத்தின் முகவரி பைனரி குறியீடு A0...A9 இல் முகவரி பேருந்தில் அமைக்கப்பட்டது, பின்னர் படிக்கும் சமிக்ஞை RD பயன்படுத்தப்படுகிறது. CS சிப் தேர்ந்தெடுக்கப்பட்ட சமிக்ஞை பொதுவாக சிப்பை அணுக கூடுதல் முகவரி கம்பியாகப் பயன்படுத்தப்படுகிறது. இந்த வகை ROM இன் உள்ளீடுகள் மற்றும் வெளியீடுகளில் உள்ள சமிக்ஞைகளின் நேர வரைபடங்கள் படம் 4 இல் காட்டப்பட்டுள்ளன.



படம் 4. EEPROM நினைவகத்திலிருந்து தகவலைப் படிப்பதற்கான சமிக்ஞைகளின் நேர வரைபடங்கள்

படம் 5 ஒரு இணையான EEPROM நினைவக சிப்பிற்கான பொதுவான வீட்டுவசதியின் வரைபடத்தைக் காட்டுகிறது.


படம் 5. இணையான EEPROM மைக்ரோ சர்க்யூட் ஹவுசிங்கின் வரைதல்

பொதுவாக, EEPROM இல் சேமிக்கப்பட்ட தரவு மிகவும் அரிதாகவே தேவைப்படுகிறது. இந்த விஷயத்தில் வாசிப்பு நேரம் முக்கியமானதல்ல. எனவே, சில சமயங்களில், முகவரி மற்றும் தரவு சிப்புக்கு மாற்றப்பட்டு, தொடர் போர்ட் மூலம் திரும்பும். வெளிப்புற ஊசிகளின் எண்ணிக்கையைக் குறைப்பதன் மூலம் மைக்ரோ சர்க்யூட்களின் அளவைக் குறைக்க இது உங்களை அனுமதிக்கிறது. இந்த வழக்கில், இரண்டு வகையான சீரியல் போர்ட்கள் பயன்படுத்தப்படுகின்றன - ஒரு SPI போர்ட் மற்றும் ஒரு I2C போர்ட் (முறையே 25cXX மற்றும் 24cXX தொடர்களின் சில்லுகள்). வெளிநாட்டு தொடர் 24cXX மைக்ரோ சர்க்யூட்களின் உள்நாட்டு தொடர் 558PPX உடன் ஒத்துள்ளது.

24cXX தொடர் மைக்ரோ சர்க்யூட்களின் உள் சுற்று (உதாரணமாக AT24C01) படம் 6 இல் காட்டப்பட்டுள்ளது.



படம் 6. AT24C01 சிப்பின் உள் சுற்று

கணினிகள் மற்றும் மடிக்கணினிகள், FPGA கட்டமைப்பு நினைவகம் மற்றும் சிக்னல் செயலிகள் (DSPகள்) ஆகியவற்றில் நினைவகத்தை பிளக் மற்றும் ப்ளே செய்தல் போன்ற டிவி அமைப்புகளைச் சேமிக்க இத்தகைய சில்லுகள் பரவலாகப் பயன்படுத்தப்படுகின்றன. தொடர் EEPROM நினைவகத்தின் பயன்பாடு இந்த சாதனங்களின் விலையை கணிசமாகக் குறைத்தது மற்றும் பயன்பாட்டின் எளிமையை அதிகரித்துள்ளது. கணினி மெமரி கார்டின் அச்சிடப்பட்ட சர்க்யூட் போர்டில் இந்த சிப்பின் இருப்பிடத்தின் எடுத்துக்காட்டு படம் 7 இல் காட்டப்பட்டுள்ளது.



படம் 7. கணினி நினைவக அட்டையின் அச்சிடப்பட்ட சர்க்யூட் போர்டில் EEPROM

படம் 8 வெளிப்புற EEPROM சிப்பைப் பயன்படுத்தும் மின்னணு அட்டையின் வரைபடத்தைக் காட்டுகிறது.


படம் 8. வெளிப்புற EEPROM ஐப் பயன்படுத்தும் மின்னணு அட்டை சுற்று

இந்த வரைபடத்தில், PIC16F84 மைக்ரோகண்ட்ரோலர் EEPROM நினைவகம் 24LC16B உடன் தரவைப் பரிமாற்றுகிறது. சிம் கார்டு போன்ற சாதனங்கள் இனி வெளிப்புற நினைவக சிப்பைப் பயன்படுத்தாது. செல்லுலார் சாதனங்களின் சிம் கார்டுகள் ஒற்றை சிப் மைக்ரோகண்ட்ரோலரின் உள் EEPROM நினைவகத்தைப் பயன்படுத்துகின்றன. இந்த சாதனத்தின் விலையை முடிந்தவரை குறைக்க இது உங்களை அனுமதிக்கிறது.

மின்சாரம் அழிக்கக்கூடிய நிரல்படுத்தக்கூடிய ROMகளுக்கான கட்டுப்பாட்டு சுற்று சிக்கலானதாக மாறியது, எனவே இந்த மைக்ரோ சர்க்யூட்களின் வளர்ச்சிக்கான இரண்டு திசைகள் வெளிப்பட்டுள்ளன:

  1. EEPROM - மின்சாரம் அழிக்கக்கூடிய நிரல்படுத்தக்கூடிய படிக்க-மட்டும் நினைவகம்
  2. ஃபிளாஷ் ரோம்

ஃப்ளாஷ் - ROMகள் EEPROM களில் இருந்து வேறுபடுகின்றன, அழித்தல் ஒவ்வொரு கலத்திலும் தனித்தனியாக செய்யப்படுவதில்லை, ஆனால் EEPROM இல் செய்யப்பட்டதைப் போல இந்த மைக்ரோ சர்க்யூட்டின் முழு மைக்ரோ சர்க்யூட்டில் அல்லது ஒரு தொகுதி மெமரி மேட்ரிக்ஸில் செய்யப்படுகிறது.


படம் 9. ஃபிளாஷ் நினைவகத்தின் கிராஃபிக் பதவி

நிரந்தர சேமிப்பக சாதனத்தை அணுகும் போது, ​​முதலில் முகவரி பஸ்ஸில் நினைவக கலத்தின் முகவரியை அமைக்க வேண்டும், பின்னர் சிப்பில் இருந்து படிக்கும் செயல்பாட்டைச் செய்ய வேண்டும். இந்த நேர வரைபடம் படம் 11 இல் காட்டப்பட்டுள்ளது.



படம் 10. ROM இலிருந்து தகவல்களைப் படிப்பதற்கான சமிக்ஞைகளின் நேர வரைபடங்கள்

படம் 10 இல், அம்புகள் கட்டுப்பாட்டு சமிக்ஞைகள் உருவாக்கப்பட வேண்டிய வரிசையைக் காட்டுகின்றன. இந்த படத்தில், RD என்பது ரீட் சிக்னல், A என்பது செல் முகவரி தேர்வு சிக்னல்கள் (முகவரி பேருந்தில் உள்ள தனிப்பட்ட பிட்கள் வெவ்வேறு மதிப்புகளை எடுக்க முடியும் என்பதால், ஒன்று மற்றும் பூஜ்ஜிய நிலைகளுக்கு மாறுதல் பாதைகள் காட்டப்படுகின்றன), D என்பது வெளியீட்டுத் தகவல் படிக்கப்படுகிறது தேர்ந்தெடுக்கப்பட்ட ROM கலத்திலிருந்து.

இலக்கியம்:

"Read Only Memory Devices (ROM)" என்ற கட்டுரையுடன் படிக்கவும்:

எங்கள் உலை கட்டுப்படுத்தி கிட்டத்தட்ட தயாராக உள்ளது - இருப்பினும், இப்போதைக்கு இது "தங்கமீன்" கட்டுப்படுத்தியாக உள்ளது, இது முதல் பவர் ஆஃப் செய்யப்படுவதற்கு ஐந்து நிமிடங்களுக்கு முன்பு அனைத்து அமைப்புகளையும் நினைவில் கொள்கிறது. எங்கள் அமைப்புகளை நினைவில் கொள்ள, மின்சக்தியை அணைத்த பிறகும், செட் வெப்பநிலை மற்றும் அளவுத்திருத்த புள்ளிகளின் மதிப்பு, நீங்கள் நிலையற்ற நினைவகத்தைப் பயன்படுத்த வேண்டும் - EEPROM.
EEPROM உடன் பணிபுரிவது பற்றி எங்கள் நண்பர்கள் நன்றாக எழுதியுள்ளனர்.

நாம் தெரிந்து கொள்ள வேண்டிய முக்கிய விஷயம் என்னவென்றால், EEPROM நினைவகம் "வெறும் நினைவகம்" அல்ல, ஆனால் சிப்பில் ஒரு தனி உள் சாதனமாக கருதப்படுகிறது.
EEPROM தனி முகவரி இடம், செயலி முகவரி இடத்துடன் (FLASH மற்றும் SRAM) எந்த தொடர்பும் இல்லை; நிலையற்ற நினைவகத்தில் ஒரு குறிப்பிட்ட முகவரியில் தரவை அணுக, நீங்கள் பல பதிவேடுகளைப் பயன்படுத்தி ஒரு குறிப்பிட்ட வரிசை செயல்களைச் செய்ய வேண்டும் (முகவரி பதிவேடுகள் EEARH மற்றும் EEARL, தரவு பதிவு EEDR மற்றும் கட்டுப்பாட்டு பதிவு EECR).
தரவுத்தாளின் படி, EEPROM இல் ஒரு குறிப்பிட்ட முகவரிக்கு ஒரு பைட்டை எழுத, நீங்கள் பின்வருவனவற்றைச் செய்ய வேண்டும்:

  1. தரவை எழுத EEPROM தயாராக இருக்கும் வரை காத்திருக்கவும் (EECR பதிவேட்டின் EEPE பிட் மீட்டமைக்கப்பட்டது);
  2. FLASH நினைவகத்திற்கு எழுதும் வரை காத்திருக்கவும் (SPMCSR பதிவேட்டின் SELFPRGEN பிட்டை மீட்டமைத்தல்) - நிரலில் துவக்க ஏற்றி இருந்தால் இது செய்யப்பட வேண்டும்;
  3. EEAR பதிவேட்டில் புதிய முகவரியை எழுதவும் (தேவைப்பட்டால்);
  4. EEDR பதிவேட்டில் ஒரு தரவு பைட்டை எழுதவும் (தேவைப்பட்டால்);
  5. EECR பதிவேட்டின் EEMPE பிட்டை ஒன்றுக்கு அமைக்கவும்;
  6. EEMPE கொடியை அமைத்த பிறகு நான்கு கடிகார சுழற்சிகளுக்குள், EECR பதிவேட்டின் EEPE பிட்டில் ஒரு தருக்க ஒன்றை எழுதுவோம்.

செயலி அடுத்த அறிவுறுத்தலைச் செயல்படுத்துவதற்கு முன் 2 கடிகார சுழற்சிகளைத் தவிர்க்கிறது.
நிரலில் துவக்க ஏற்றி இருந்தால் இரண்டாவது புள்ளி செய்யப்பட வேண்டும் - உண்மை என்னவென்றால் EEPROM க்கு எழுதுவதை ஃப்ளாஷ் நினைவகத்திற்கு எழுதுவதை ஒரே நேரத்தில் செய்ய முடியாது, எனவே EEPROM க்கு எழுதும் முன் நீங்கள் ஃப்ளாஷ் நினைவகத்தின் நிரலாக்கத்தை உறுதி செய்ய வேண்டும்; மைக்ரோகண்ட்ரோலரில் பூட்லோடர் இல்லை என்றால், அது ஃப்ளாஷ் நினைவகத்தின் உள்ளடக்கங்களை ஒருபோதும் மாற்றாது (ஏவிஆர் ஹார்வர்ட் கட்டமைப்பைக் கொண்டுள்ளது என்பதை நினைவில் கொள்ளுங்கள்: நிரல் நினைவகம் (ஃப்ளாஷ்) மற்றும் தரவு நினைவகம் (எஸ்ஆர்ஏஎம்) பிரிக்கப்பட்டுள்ளன).
ரெக்கார்டிங் சுழற்சியின் கால அளவு சிப்பின் உள் RC ஆஸிலேட்டரின் அதிர்வெண், விநியோக மின்னழுத்தம் மற்றும் வெப்பநிலை ஆகியவற்றைப் பொறுத்தது; வழக்கமாக ATmega48x/88x/168x மாடல்களுக்கு இது 3.4 ms (!), சில பழைய மாடல்களுக்கு - 8.5 ms (!!!).
கூடுதலாக, EEPROM க்கு எழுதும் போது, ​​மேலே உள்ள செயல்களின் வரிசையின் செயல்பாட்டின் போது குறுக்கீடுகளை அழைப்பதில் சிக்கல்கள் ஏற்படலாம் - எனவே EEPROM க்கு எழுதும் போது குறுக்கீடுகளை முடக்குவது நல்லது.
நிலையற்ற நினைவகத்தைப் படிப்பது சற்று எளிமையானது:

  1. தரவைப் படிக்க EEPROM தயாராக இருக்கும் வரை காத்திருக்கவும் (EECR பதிவேட்டின் EEWE பிட் மீட்டமைக்கப்பட்டது);
  2. EEAR பதிவேட்டில் முகவரியை எழுதவும்;
  3. EECR பதிவேட்டின் EERE பிட்டை ஒன்றுக்கு அமைக்கவும்;
  4. EEDR பதிவேட்டில் இருந்து தரவைப் படிக்கிறோம் (உண்மையில், கோரப்பட்ட தரவு தரவுப் பதிவேட்டிற்கு நகர்த்தப்படும் போது, ​​EERE பிட் வன்பொருளால் மீட்டமைக்கப்படும்; ஆனால் EEPROM இலிருந்து படிக்கும் செயல்பாடு என்பதால், இந்த பிட்டின் நிலையை கண்காணிக்க வேண்டிய அவசியமில்லை. எப்போதும் ஒரு கடிகார சுழற்சியில் செய்யப்படுகிறது).

EERE இல் ஒரு பிட் ஒன்றை அமைத்த பிறகு, அடுத்த வழிமுறையை செயல்படுத்துவதற்கு முன் செயலி 4 கடிகார சுழற்சிகளைத் தவிர்க்கிறது.
நாம் பார்க்க முடியும் என, நிலையற்ற நினைவகத்துடன் வேலை செய்வது நேரத்தை எடுத்துக்கொள்ளும் செயல்முறையாகும்; நாம் அடிக்கடி EEPROM இலிருந்து தரவை எழுதிப் படித்தால், நிரல் மெதுவாகத் தொடங்கலாம்.

இருப்பினும், நாங்கள் IAR சூழலில் ஒரு நிரலை எழுதுகிறோம், நாங்கள் அதிர்ஷ்டசாலிகள்: EEPROM இலிருந்து படிக்கும் மற்றும் எழுதும் அனைத்து வேலைகளும் மேம்பாட்டு சூழலால் செய்யப்படும் - iar ஆனது “__eeprom” மாற்றியை கொண்டுள்ளது, இது நிலையற்ற நினைவகத்தில் மாறிகளை உருவாக்குகிறது. - பின்னர் நாம் "நிரந்தர" மாறிகளிலிருந்து "தற்போதைக்கு" (கட்டுப்படுத்தியைத் தொடங்கும் போது) படிக்க வேண்டும் அல்லது "தற்போதைய" மாறிகளிலிருந்து "நிலையான" என்று எழுத வேண்டும் - அதாவது தற்போதைய மதிப்பு மாறும்போது, ​​அதன் மதிப்பு நிலையற்ற நினைவகத்தில் மாறியும் மாற்றப்பட வேண்டும்.
புதிய மாறிகள் இப்படி இருக்கும்:

Eeprom uint16_t EEP_MinTemperature;

இன்னும் சில பொதுவான வார்த்தைகள்: மற்றும் eeprom மாறிகளுக்கான சுட்டிகளை நாம் கருதவில்லை என்றாலும், eeprom ஒரு தனி முகவரி இடம் என்பதை நாம் நினைவில் கொள்ள வேண்டும், மேலும் eeprom க்கு ஒரு சுட்டியை உருவாக்குவதற்கு (மற்றும் கம்பைலர் இதை செய்ய அனுமதிக்கிறது), நாம் கண்டிப்பாக இது ஈப்ரோமில் உள்ள முகவரிக்கான சுட்டி என்பதைக் குறிக்கவும்:

Uint16_t __eeprom *EEP_MinTemperatureAdr;

அடுப்பு கட்டுப்படுத்தி மற்றும் EEPROM க்கு திரும்புவோம். எங்கள் விஷயத்தில், நிச்சயமாக, EEPROM க்காக எந்த மெய்நிகர் இயந்திரமும் கருதப்படவில்லை; மேலும், நிலையற்ற நினைவகத்துடன் பணிபுரிய ஒரு தனி நூலகம் தேவையா என்பதைக் கருத்தில் கொள்வது மதிப்பு - முக்கியமான அமைப்புகளின் பதிவு நிரல் முழுவதும் "சிதறியது"; நீங்கள் ஒரு தனி நூலகத்தை உருவாக்க முயற்சித்தால், நீங்கள் குறுக்கு குறிப்புகளை உருவாக்க வேண்டும்: EEPROM க்கான நூலகத்தில், ADC, வெப்பமூட்டும் உறுப்பு மற்றும் உலகளாவிய அமைப்புகளின் நூலகங்களை இணைக்கவும்; இந்த புற நூலகங்களில், EEPROM நூலகத்தை இணைப்பது ஒரு நல்ல அணுகுமுறை அல்ல.
நீங்கள் அமைப்புகளைச் சேமிக்க வேண்டிய ஒவ்வொரு நூலகத்திலும் ஒரு ஈப்ரோம் மாறியைச் சேர்ப்பது மற்றும் தொடர்புடைய அமைப்புகளை நேரடியாக மெய்நிகர் கணினிகளில் சேமிப்பது மற்றொரு விருப்பமாகும். இந்த விருப்பத்தை நாங்கள் செயல்படுத்துவோம்.
முதலில், EEPROM இல் சேமிக்க வேண்டிய மாறிகள் என்ன என்பதை பட்டியலிடலாம்:

  1. அளவுத்திருத்த புள்ளிகள்
  2. அதிகபட்ச-குறைந்தபட்ச வெப்பநிலை மற்றும் வெப்பநிலை அமைக்கும் படியின் மதிப்புகள்
  3. வெப்பநிலை மதிப்பை அமைக்கவும்
  4. PID கட்டுப்படுத்தி குணகங்கள்

சமையலறை டைமரின் மதிப்பை நாங்கள் சேமிக்க மாட்டோம் - ஒவ்வொரு முறையும் மின்சாரத்தை அணைத்த பிறகு பயனர் அடுப்பு டைமரை அமைக்க வேண்டும் என்று நாங்கள் கருதுவோம்.
இந்த அமைப்புகள் அனைத்தும் குறியாக்கியைத் திருப்பி பின்னர் பயனர் பொத்தானை சுருக்கமாக அழுத்துவதன் மூலம் பயனரால் அமைக்கப்படும். அதே நேரத்தில், EEPROM ரீட்-ரைட் சுழற்சிகளின் எண்ணிக்கை இன்னும் குறைவாகவே உள்ளது என்பதை நினைவில் கொள்கிறோம், எனவே அதே தகவலை மீண்டும் மேலெழுத வேண்டாம் (உதாரணமாக, சில அமைப்புகளின் அதே மதிப்பை பயனர் தேர்ந்தெடுத்திருந்தால்). எனவே, __eeprom மாறிக்கு ஒவ்வொரு மாற்றத்திற்கும் முன், அதை மீண்டும் எழுத வேண்டுமா என்பதை நாங்கள் சரிபார்க்கிறோம்:

//மதிப்பு மாறியிருந்தால், அதை நிலையற்ற நினைவகத்தில் மேலெழுதவும் perature.atMinTemperature மதிப்பு)

EEPROM இலிருந்து அமைப்புகளைப் படிப்பதும் எளிது - “தற்போதைய” அமைப்புகளைத் தொடங்கும்போது, ​​நிலையற்ற நினைவகத்திலிருந்து மதிப்பைப் படிக்கிறோம்:

ADCTemperature.atMinTemperatureValue = EEP_MinTemperature;

எங்கள் சாதனம் ஆரம்பத்தில் இருந்தே EEPROM இல் சில அமைப்புகளைக் கொண்டிருப்பதற்காக, முதல் துவக்கத்திற்கான திட்டத்தை இந்த மாறிகள் துவக்குவதன் மூலம் தொகுக்க முடியும்:

Eeprom uint16_t EEP_MinTemperature = 20; ... // நிலையற்ற நினைவகத்தில் அளவுத்திருத்த புள்ளிகளை சேமிப்பதற்கான அணிவரிசை __eeprom TCalibrationData EEP_CalibrationData = ((20, 1300), (300, 4092));

இந்த வழக்கில், கம்பைலர் __eeprom மாறிகளை பிரதான செயல்பாட்டுடன் தொடங்கும் முன் துவக்குகிறது. நிலையற்ற நினைவகம் (.eep) கொண்ட கோப்பைப் பெற, நீங்கள் பின்வரும் அமைப்புகளுக்குச் செல்ல வேண்டும்:
திட்டம்->விருப்பங்கள்..->இணைப்பான்->கூடுதல் விருப்பங்கள்
“கட்டளை வரி விருப்பங்களைப் பயன்படுத்து” தேர்வுப்பெட்டி தேர்வு செய்யப்படவில்லை என்றால், அதைச் சரிபார்த்து, வரியைச் சேர்க்கவும்
-Ointel-standard,(XDATA)=.eep
முதலில் நாம் துவக்கப்பட்ட மாறிகள் மூலம் திட்டத்தை தொகுக்கிறோம், eep கோப்பை தனித்தனியாக சேமிக்கவும்; பின்னர் மாறிகளை உருவாக்கும் போது துவக்கத்தை அகற்றுவோம்.

அவ்வளவுதான் - எங்கள் அடுப்பு தயாராக உள்ளது!