மைக்ரோகண்ட்ரோலர் அடிப்படைகள் ஆராயப்பட்டன

சிக்கல்களை அகற்ற எங்கள் கருவியை முயற்சிக்கவும்





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

அறிமுகம்

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



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

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



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

நீங்கள் இங்கே பார்க்கும் நிரலின் மொழி சி ++ ஆகும். இங்குள்ள பாடத்திட்டத்தில் இந்த மொழியை அதிக ஆழத்தில் கற்றுக்கொள்வீர்கள்.

MCU களுக்கு வரும்போது, ​​அதன் அனைத்து பின்அவுட்களையும் கட்டுப்படுத்தும் மற்றும் கட்டமைக்கும் விருப்பத்தை நீங்கள் பெறுவீர்கள்.

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

ஒரு MCU சிப்பில், சிப்பின் சக்தி ஊசிகளான Vdd மற்றும் Vss ஐத் தவிர அனைத்து ஊசிகளையும் பிரத்யேக பெயர்களுடன் ஒதுக்கலாம்.

பின்அவுட் விவரங்கள்

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

இந்த முனையிலிருந்து தொடங்கி, அந்தப் பக்கத்தில் (இடது) 20 ஊசிகளையும், மறுபுறம் (வலது) மற்றொரு 20 ஊசிகளையும் காணலாம், கீழே இருந்து வலது புறத்தில் தொடர்கிறது.

உச்சநிலையிலிருந்து தொடங்கும் முதல் 8 ஊசிகளான பிபிஓ -7 ஐசியின் குறியீட்டு ஊசிகளை உருவாக்குகிறது, ஏனெனில் இங்குள்ள அனைத்து நிரல்களும் குறியீட்டு பூஜ்ஜியத்துடன் தொடங்குகின்றன.

மேற்கூறிய பின்அவுட்களை PORT B ​​என அழைக்கப்படுகிறது, அதே சமயம் A முதல் D வரை ஒதுக்கப்பட்ட துறைமுகங்களின் ஒத்த தொகுப்புகள் உள்ளன.

இந்த துறைமுகங்கள் INPUT எனப்படும் ஊட்டப்பட்ட தரவை ஏற்றுக்கொள்வதற்கும் அங்கீகரிப்பதற்கும் ஒதுக்கப்படலாம், மேலும் OUTPUT எனப்படும் சில குறிப்பிட்ட வடிவத்தில் தரவை அனுப்பவும் முடியும்.

பொது பிரிவில் வரும் ஊசிகளில் இரண்டு (+) / (-) ஊசிகளாகும், அவை Vdd மற்றும் GND என்றும் குறிப்பிடப்படுகின்றன.

PORT D (PDO-6) இலிருந்து ஒரு முள் சிப்பின் இடது பக்கத்தில் கீழே பகுதியில் காணப்படுகிறது.

PORT D இன் முள் # 7 ஆகும் PD7 தனியாக நின்று வலது புற தொடர் பின்அவுட்களைத் தொடங்குகிறது.

இப்போது PORT D முடிவடையும் சிப்பின் வலது புறத்திலிருந்து நகர்கிறது, PORT C அதன் எண்ணிக்கையை வரிசையில் தொடங்குகிறது.

இவை அனலாக் முதல் டிஜிட்டல் வரை MCU இன் பல சுவாரஸ்யமான ஊசிகளுக்கு பங்களிக்கின்றன.

வெளிப்புறமாக உள்ளமைக்கப்பட்ட அனலாக் சர்க்யூட் நிலைகள் மூலம் பல அளவுருக்களைக் கண்டறிவதற்கான உணர்திறன் உள்ளீடுகளாக இந்த ஊசிகளும் இடம்பெறுகின்றன.

மேலே உள்ள ஊசிகளும் PORT A ஐ உருவாக்குகின்றன.

மேலே உள்ள ஊசிகளில் டிஜிட்டல் மாற்றத்திற்கான அனலாக் ஒரு எடுத்துக்காட்டின் உதவியுடன் புரிந்து கொள்ளப்படலாம், இதில் ஒரு தெர்மிஸ்டர் போன்ற ஒரு சாதாரண சென்சார் பயன்படுத்தி கண்டறியப்பட்ட அனலாக் வெப்பநிலை நிலை PORT A ஊசிகளில் ஒன்றில் பயன்படுத்தப்படுகிறது, இது MCU ஆல் உடனடியாக ஏற்றுக்கொள்ளப்பட்டு மாற்றப்படுகிறது டிஜிட்டல் ரீட்அவுட்டை பூஜ்ஜியத்திலிருந்து 255 டிகிரி எஃப் வரை உருவாக்க (10-பிட் வெளியீட்டை அடைவதற்கு மேம்படுத்தக்கூடிய 8-பிட் எண்ணிக்கை).

MCU களில் காணக்கூடிய மற்றொரு அம்சம், கிடைக்கக்கூடிய நிரலாக்க இடம் அல்லது மைக்ரோகண்ட்ரோலருக்காக குறிப்பிடப்பட்ட மாறிகள் மற்றும் நிரலுக்கான இடத்தை நிர்ணயிக்கும் நினைவகம்.

மேலும், MCU களில் தொடர்புடைய அளவுருக்களை எண்ணுவதற்கு ஒரு உள்ளமைக்கப்பட்ட கடிகாரம் உள்ளது.

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

இப்போது நீங்கள் மைக்ரோகண்ட்ரோலர் கருத்தை ஓரளவிற்கு புரிந்துகொண்டிருக்கலாம் மற்றும் அதன் துறைமுகங்கள் மற்றும் ஊசிகளைப் பற்றி.

புரோகிராமரில் இருந்து மைக்ரோகண்ட்ரோலருக்கு எஸ்பிஐ இணைப்பியை உருவாக்குவது எப்படி

இப்போது இந்த விஷயத்தில் கொஞ்சம் ஆழமாகச் சென்று நிரலாக்க உலகத்தை விசாரிக்க வேண்டிய நேரம் வந்துவிட்டது.

சில்லுடன் ஒரு நிரல் ஏற்றுதல் நடைமுறையில் ஈடுபடுவதற்கு முன், எம்.சி.யு உடன் எஸ்பிஐ (சீரியல் பெரிஃபெரல் இன்டர்ஃபேஸ்) இணைப்பியை ஒருங்கிணைக்க சரியான வழியைக் கண்டுபிடிக்க வேண்டும் என்று கூறினார்.

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

ஆகையால், விஷயங்களை முற்றிலும் பாவம் செய்ய முடியாத வகையில், ஒரு சிறிய வெரோபோர்டு வழியாக நாங்கள் நடைமுறைகளைச் செய்கிறோம், அதில் தேவையான தலைப்பு உலோக ஊசிகளை “தலைப்பு” சாலிடர் என்றும் அழைக்கிறோம். இந்த தலைப்பு ஊசிகளை இப்போது SPI இணைப்பியுடன் இணைக்க பயன்படுத்தலாம். இந்த தலைப்பிலிருந்து இணைப்புகள் ப்ரெட்போர்டு இணைப்புகளுக்குப் பயன்படுத்தப்படக்கூடிய மற்றொரு இணையான தலைப்பு ஊசிகளுடன் நிறுத்தப்படலாம்.

ஆகவே மேற்கண்ட சட்டசபை இப்போது எஸ்பிஐக்கு எம்.சி.யு-க்கு ஒரு மென்மையான மற்றும் நம்பகமான இடைநிலை இணைக்கும் தளத்தை உருவாக்குகிறது.

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

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

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

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

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

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

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

தலைப்புகளுக்கு இடையில் கம்பிகளை ஒன்றோடொன்று இணைக்கும்போது நீங்கள் பின்பற்ற வேண்டிய இணைப்பு விவரங்களை மேலே உள்ள படம் காட்டுகிறது.

விஷயங்களை இன்னும் எளிமையாக்க, மேலே உள்ள படத்தைக் குறிப்பிடுவதன் மூலம் அதற்கான பின்வரும் இணைப்பு விவரங்களைப் பார்ப்போம்:

மேல் இடதுபுறத்தில் இருந்து தொடங்கும் SPI முள் “மாஸ்டர் IN, ஸ்லேவ் அவுட்” (MISO)

மைய இடமிருந்து SPI முள் கடிகார முள் (SCK) உடன் இணைகிறது

கீழ் இடதுபுறத்தில் உள்ள SPI முள் மீட்டமைப்போடு இணைகிறது. (பின்வரும் டுடோரியல்களில் இந்த முள் பற்றி விரிவாகக் கற்றுக்கொள்வோம்)

எம்.சி.யுவின் ஜி.என்.டி முள் உடன் கீழ் வலது கொக்கிகள் தொடர்பான எஸ்பிஐ, ஜிஎன்டி என்பது பூஜ்ஜிய விநியோக கோடு அல்லது விநியோகத்தின் எதிர்மறை (உறவினர்) ரெயிலை உருவாக்கும் முள் குறிக்கிறது.

நடுத்தர வலது தலைப்பிலிருந்து SPI நிறுத்தப்படுவது MCU இன் “மாஸ்டர் அவுட், ஸ்லேவ் இன்” (MOSI) முள்.

மேல் வலது தலைப்பில் இருந்து வரும் SPI MCU இன் (+) உடன் கம்பி செய்யப்படுகிறது, இது வெளிப்படையாக Vdd அல்லது MCU இன் நேர்மறை விநியோக முள் ஆகும்.

அவ்வளவுதான்.

விளக்கியபடி இரண்டு இணைப்பிகளையும் இணைக்கவும், தேவையான செயல்களுக்கு உங்கள் SPI இடைமுகக் குழு தயாராக உள்ளது.

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

முந்தைய டுடோரியலில் விளக்கப்பட்டுள்ளபடி நீங்கள் ஏற்கனவே SPI இடைமுகத்தை உருவாக்கியிருக்கலாம் என்று நம்புகிறேன், இப்போது பிசி மற்றும் எம்.சி.யு இடையே நாம் ஒருங்கிணைக்க வேண்டிய புரோகிராமரை எங்கள் கணினி ஏற்றுக்கொள்கிறதா என்பதை உறுதிப்படுத்த வேண்டிய நேரம் இது.

MCU க்கான எளிய நிரலாக்கக் குறியீட்டை உருவாக்குதல்

கணினியை மைக்ரோகண்ட்ரோலருடன் இணைப்பதற்காக, ஸ்பார்க்ஃபனிலிருந்து கிடைக்கும் யூ.எஸ்.பி டைனிஐஎஸ்பி அலகு எடுக்கிறோம்.

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

உங்கள் கணினி OS இல் இயக்கிகளை நிறுவ தேவையான நடைமுறைகளைப் பார்ப்போம், இங்கே விண்டோஸ் 7 OS இன் உதாரணத்தை 32-பிட் அல்லது 64-பிட் விவரக்குறிப்புகளுடன் எடுத்துக்கொள்கிறோம்.

Sparkfun.com ஐத் திறந்து “பாக்கெட் ஏவிஆர் புரோகிராமர் பக்கம்” என்பதைக் கிளிக் செய்க. இணைப்பை பக்கத்திற்குள் எளிதாகக் காணலாம்.

அடுத்து, ஆவணங்களின் கீழ் ”விண்டோஸ் இயக்கி” ஐக் கண்டுபிடித்து அதைக் கிளிக் செய்க.

இது உங்கள் கணினியில் உள்ள பாக்கெட் ப்ராக்- டிரைவர்.ஜிப் கோப்பை உங்களுக்கு வழங்கும்.

உங்கள் கணினிக்குச் சென்று, பதிவிறக்க இருப்பிடத்தைக் கண்டுபிடித்து, பதிவிறக்கிய கோப்பை ஒரு கோப்புறையில் அவிழ்த்து விடுங்கள்.

உங்கள் கணினி 64-பிட் OS ஆக இருந்தால், 32 பிட் OS உடன், இன்னும் சில படிகளைப் பின்பற்ற வேண்டும், நீங்கள் நேரடியாக நிறுவப்படாத கோப்பிலிருந்து நிறுவலைத் தொடங்கலாம்.

64-பிட் இவற்றைப் பின்தொடர, 32-பிட் வெறுமனே புறக்கணிக்க:

கூகிள் “லிபஸ் சோர்ஸ்ஃபோர்ஜ்” மற்றும் இந்த இணைப்புகளின் சமீபத்திய பதிப்பைக் கிளிக் செய்க.

நீங்கள் சில கூடுதல் கோப்புகளைக் காணலாம், இருப்பினும் நீங்கள் பிப் கோப்பைக் கண்டுபிடிக்க ஆர்வமாக இருப்பீர்கள், அதாவது: libusb-win32-bin - #. #. #. #. Zip

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

இந்த கோப்புறையில், பின் கோப்புறையில் செல்லவும், amd64 கோப்புறையில் தொடரவும்.

நீங்கள் இங்கே இரண்டு கோப்புறைகளைக் காண்பீர்கள்: ghcalled libusb0.dll மற்றும் libusb0.sys.

இவற்றை மறுபெயரிட விரும்புகிறீர்கள்: libusb0_x64.dll மற்றும் libusb0_x64.sys.

இப்போது நீங்கள் மேலே உள்ள கோப்புகளை பாக்கெட் ப்ரோக்-டிரைவர் கோப்புறையில் நகலெடுக்க வேண்டும், இருக்கும் பதிப்பில் உள்ள கோப்புகளை மேலெழுத வேண்டும்.

மேலே உள்ள இயக்கிகளை நிறுவ, அதன் வகை வழக்கத்திற்கு மாறான பின்வரும் முறை உங்களுக்கு ஆர்வமாக இருக்கும்:

இது “மரபு வன்பொருளைச் சேர்” பயன்முறையாகும்.

“தொடக்க மெனு” என்பதைக் கிளிக் செய்க

“கணினி” இல் வலது கிளிக் செய்வதன் மூலம் தொடரவும்

“நிர்வகி” என்பதைக் கிளிக் செய்து, இறுதியாக “சாதன நிர்வாகி” என்பதைக் கிளிக் செய்க

அடுத்து, மெனுவுக்குள், “மரபு வன்பொருளைச் சேர்” என்பதைத் தேர்வுசெய்க

வழிகாட்டி செருகப்படும் வரை “அடுத்து” ஐ அழுத்தவும்

வழிமுறைகளைப் பின்பற்றி, “மேம்பட்ட பட்டியலிலிருந்து நீங்கள் தேர்ந்தெடுக்க வேண்டிய வன்பொருளை நிறுவுக” என்பதைக் கிளிக் செய்க, இது குறிப்பிட்ட தேர்வில் ரேடியோ பொத்தான் ஐகானைத் தூண்டும். இது உண்மையில் ஒரு சாளரக் கட்டுப்பாட்டு பொத்தானாகும், இது இப்போது ஒரு சிறிய வட்டம் போல வட்டமான நீல நிற தாக்கல் கொண்டதாக தோன்றும்.

இப்போது “அடுத்து” என்பதைக் கிளிக் செய்க

நீங்கள் கிளிக் செய்ய வேண்டிய “எல்லா சாதனங்களையும் காட்டு” மெனுவை இது காண்பிக்கும்.

இதற்குப் பிறகு “வட்டு வைத்திரு” ஐகானைக் கிளிக் செய்க.

“உலாவு” ஐகானின் உதவியுடன், பாக்கெட் ப்ரோக்-டிரைவர் கோப்புறையின் இருப்பிடத்திற்குச் செல்லுங்கள். தேர்வு நீங்கள் சரியாக செய்திருந்தால், அந்த குறிப்பிட்ட கோப்புறையில் வைக்கப்பட்டுள்ள பாக்கெட் ப்ரோக்.இன் கோப்பை நீங்கள் காட்சிப்படுத்துவீர்கள்.

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

ஓவர் அவுட் !! அடுத்த பக்கத்தில் எங்கள் அடுத்த டுடோரியலைப் பெறுவோம்.

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

ஒரு திட்டத்தை மைக்ரோகண்ட்ரோலர் சில்லுக்கு மாற்றுவது எப்படி

அடுத்த கட்டமாக ஒரு பிரெட் போர்டு, எல்.ஈ.டி மற்றும் கணக்கிடப்பட்ட மின்தடை போன்ற சில கூறுகளை அழைக்கும்.

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

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

AVRdude என்பது சமீபத்திய WinAVR நிறுவலுடன் தொடர்புடைய நிரலாகும், இது இல்லாமல் MCU க்கு கோப்பின் உண்மையான பரிமாற்றம் சாத்தியமில்லை.

இந்த நிரல் ஒரு .hex கோப்பு வடிவமாகும், இது தேவையான மரணதண்டனைகளுக்கு MCU க்கு புரியும்.

சரிபார்ப்பு வெற்றிபெறாவிட்டால், கோப்பின் பரிமாற்றத்தை செய்ய புரோகிராமர் இயலாது.

பின்வரும் வழிமுறைகளின் உதவியுடன் சோதனை முறையை எவ்வாறு செயல்படுத்தலாம் என்பதை விரைவாகப் பார்ப்போம்:

கொடுக்கப்பட்ட தேடல் பெட்டியில் “தொடக்க மெனு” என்பதைக் கிளிக் செய்து cmd.exe எனத் தட்டச்சு செய்வதன் மூலம் DOS (வட்டு இயக்க முறைமை) வரியில் திறக்கவும்.

இப்போது AVRdude ஐச் செய்வது வெறுமனே DOS வரியில் avrdude –c usbtiny –p m32 எனத் தட்டச்சு செய்வதன் மூலம் செய்யப்படலாம். இது செயல்படுத்தப்பட்டவுடன், இணைப்பு வெற்றிகரமாக இருந்ததா என்பதை டாஸ் உடனடியாக ஒப்புக்கொள்வார்.

மேலே உள்ள கட்டளையில், “-c” என்பது அறிவிக்கும் கொடியாகும், இதில் “யூஸ்பைனி” புரோகிராமர் அளவுரு விவரக்குறிப்பு அடங்கும், அதே நேரத்தில் “-p” குறிச்சொல் மைக்ரோகண்ட்ரோலர் சாதனத்தை அடையாளம் காட்டுகிறது (“மீ 32 அட்மேகா 32 ஐ குறிக்கிறது).

நீங்கள் வேறு MCU ஐப் பயன்படுத்தினால், செயல்படுத்தலுக்கான முன்னொட்டுகளை நீங்கள் சேர்க்க வேண்டும்.

மேலே உள்ள செயல்முறை முடிந்ததும், நீங்கள் DOS வரியில் 'வெளியேறு' என்று தட்டச்சு செய்யலாம், அது உங்களை சாளரத்திற்கு வெளியே நகர்த்தும்.

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

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

பின்வரும் எளிய சூத்திரத்தைப் பயன்படுத்தி மின்தடையின் மதிப்பு கணக்கிடப்படலாம்:

R = (Ub - LEDfwd) / I.

Ub என்பது விநியோக மின்னழுத்தமாக இருக்கும் இடத்தில், LEDfwd என்பது எல்.ஈ.டி பயன்படுத்தப்பட்ட உகந்த இயக்க மின்னழுத்தமாகும், மேலும் நான் அதன் உகந்த ஆம்ப்ஸ்.

எல்.ஈ.டி முன்னோக்கி மின்னழுத்தம் = 2.5 வி மற்றும் தற்போதைய I = 20 எம்ஏ ஆகியவற்றைக் கொண்ட ஒரு சிவப்பு எல்.ஈ.டியைப் பயன்படுத்துகிறோம் என்று வைத்துக்கொள்வோம், மேலே உள்ள சமன்பாட்டை பின்வருமாறு தீர்க்க முடியும்:

MCU இலிருந்து மின்னழுத்தம் 5V ஆக இருப்பதால், இது இவ்வாறு வெளிப்படுத்தப்படலாம்:

ஆர் = (5 - 2.5) /. 02 = 125 ஓம்ஸ், ¼ வாட், அருகிலுள்ள மதிப்பு 120 ஓம்ஸ் செய்யும்.

இப்போது நம்மிடம் எல்.ஈ.டி, 120 ஓம் மின்தடை மற்றும் வெரோபோர்டு உள்ளது, வரைபடத்தில் கொடுக்கப்பட்டுள்ளபடி மேலே உள்ள கூறுகளை மைக்ரோகண்ட்ரோலருடன் இணைக்கவும்.

இது முடிந்ததும், மேலே உள்ள எல்.ஈ.டி அமைப்பில் MCU திட்டமிடப்பட்ட பதிலுக்காக திட்டமிடப்படலாம்.

அடுத்து, MCU இன் நிரலாக்க.

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

ஒரு நிரலாக்க சூழலை எவ்வாறு நிறுவுவது மற்றும் WinAVR ஐ விசாரிப்பது எப்படி

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

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

இறுதியில் இது WinAVR ஆல் ஆதரிக்கப்பட்டு சம்பந்தப்பட்ட MCU சில்லுக்கு மாற்றப்படும்.

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

WinAVR இன் நிறுவல் பாடநெறி மிகவும் விரைவானதாகவும் சிக்கலானதாகவும் இருக்கும். பின்வரும் புள்ளிகளுடன் விவரங்களுக்குள் நுழைவோம்:

WinAVR மூல ஃபோர்ஜ் கோப்புகள் கோப்புறையிலிருந்து சமீபத்திய பதிப்புகளை நீங்கள் பதிவிறக்க வேண்டும். இந்த பதிவிறக்கம் தொடர்பான சில பயனுள்ள தகவல்களை அதன் அதிகாரப்பூர்வ வலைத்தளத்திலிருந்து நீங்கள் காணலாம்.

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

கோப்பைப் பதிவிறக்கி, அதைக் கிளிக் செய்வதன் மூலம் செயல்படுத்தல் செயல்முறையைத் தொடங்கவும். நிறுவல் தொடங்கட்டும்.

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

இப்போது வரை நீங்கள் எல்லாவற்றையும் மிகவும் சாதாரணமாகவும் எளிதாகவும் கண்டுபிடிப்பீர்கள், மேலும் சில விருப்பங்களைக் கண்டுபிடிப்பேன், தொடக்க மெனு உங்களிடம் வீசப்படுகிறது. எந்த கவலையும் இல்லை, இவற்றில் சில மட்டுமே உண்மையில் “புரோகிராமர்கள் நோட்பேட்” என்ற பெயரில் ஒன்றைப் பயன்படுத்துகின்றன.

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

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

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

எல்.ஈ.டியை இயக்க MCU ஐ எவ்வாறு நிரல் செய்வது

இது உறுதிசெய்யப்பட்டவுடன், குறியீட்டு பரிமாற்றத்தின் செயல்முறை பிழைகள் ஏற்படாமல் இருப்பதை உறுதி செய்வதற்காக, ஒரு சிறிய “ஒன்றும் செய்யாதீர்கள்” குறியீட்டை உருவாக்குவோம்.

நிச்சயமாக நாங்கள் இப்போது MCU க்குள் எங்கள் முதல் திட்டத்தை செயல்படுத்தத் தயாராக உள்ளோம், ஆனால் அதற்கு முன்னர் எங்கள் முந்தைய பயிற்சிகளின் போக்கில் நாங்கள் செய்ததை விரைவாகச் சுருக்கமாகக் கூறுவது சுவாரஸ்யமாக இருக்கும்:

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

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

இதன் பிறகு 32 பிட் மற்றும் 64-ஆனால் இயக்க முறைமைக்கு இயக்கிகள் கணினியில் சரியாக நிறுவப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தினோம்.

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

இறுதியாக முந்தைய அத்தியாயத்தில் எல்.ஈ.டி / மின்தடைய சுற்று ஒன்றை உருவாக்கி அதை தொடர்புடைய எம்.சி.யு வெளியீடுகளுடன் இணைத்தோம்.

இது நிறைய வேலைகள் என்றாலும், சில உண்மையான நிரலாக்க விஷயங்களுக்கு இப்போதே செல்ல வேண்டிய நேரம் இது!

மைக்ரோகண்ட்ரோலரை மூன்று வகைகளாகப் பிரிக்க நாங்கள் விரும்புகிறோம், இது எங்கள் புரிதலை நிறைய எளிதாக்கும்:

கட்டுப்பாடு, கண்டறிதல் மற்றும் தொடர்பு

மேலே உள்ள செயல்பாடுகளை பல வழிகளில் திட்டமிட முடியும் என்பது சுவாரஸ்யமாக இருக்கும்.

எங்கள் முதல் திட்டத்தில், மைக்ரோகண்ட்ரோலரை வெளிப்புற அளவுருவை 'கட்டுப்படுத்த' ஆர்டர் செய்ய முயற்சிப்போம், ஆம் நீங்கள் சொல்வது சரிதான், நாங்கள் சமீபத்தில் கட்டிய எல்.ஈ.டி.

துல்லியமாகச் சொன்னால், இணைக்கப்பட்ட எல்.ஈ.யை இயக்க எம்.சி.யுவிடம் கூறுவோம், ஆம் இது மிகவும் பழமையானது என்று எனக்குத் தெரியும், ஆனால் தொடக்க கட்டம் எப்போதும் எளிதாக இருக்க வேண்டும்.

தற்போதைய வேலையுடன் முன்னேறி, எம்.சி.யு கட்டுப்பாட்டை எல்.ஈ.டி கட்டுப்படுத்துவது உண்மையில் மிகவும் எளிது:

இதற்காக எல்.ஈ.டிக்கு தேவையான 5 வி தயாரிக்க PORT B ​​இல் முள் # 0 ஐ அறிவுறுத்துகிறோம்.

முந்தைய டுடோரியலில் இருந்து நினைவுகூருங்கள், எல்.ஈ.டி யின் அனோடை MCU இன் மேலே குறிப்பிட்ட முள் உடன் இணைத்தோம்.

MCU இன் இந்த முனைக்கு இரண்டு அத்தியாவசிய விஷயங்கள் தேவை: 1) வெளியீடு மற்றும் 2) 5 வோல்ட்

MCU இன் வெளியீடாக மாற குறிப்பிட்ட முள் கட்டளையிடும் வழியைக் கற்றுக்கொள்வோம்.

இது சிப்பின் வெளியீடாக அமைக்கப்பட்டவுடன், ஒரு பயன்பாட்டிற்கு விரும்பியபடி “உயர்” (5 வி) அல்லது “குறைந்த” (0 வி) ஆக இருக்குமாறு அறிவுறுத்தலாம்.

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

உள்ளீடு மற்றும் வெளியீட்டு முள் பணிகளைப் பொறுத்தவரை, உள்ளீடுகள் வெளிப்புற அனலாக் நிலைகளிலிருந்து சமிக்ஞைகளை ஏற்றுக்கொள்வதற்கு நிலைநிறுத்தப்படும், அதே நேரத்தில் குறிப்பிட்ட தருக்க நிலைகளில் அல்லது ஒரு அதிர்வெண்ணில் அவற்றை விளக்குவதற்கு வெளியீடுகள் பொறுப்பாகும்.

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

எவ்வாறாயினும், இப்போது நாம் மற்ற ஊசிகளைப் பற்றி அதிகம் கவலைப்பட மாட்டோம், மேலும் சில நீட்டிப்புகளில் உள்ள சிக்கல்களைத் தவிர்த்து, தொடர்புடைய ஆர்வமுள்ள ஊசிகளை மட்டுமே பயன்படுத்துவோம்.

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

டி.டி.ஆரைப் பயன்படுத்தி, “வெளியீடு” போன்ற தரவை அனுப்புவதற்கு முள் அமைக்கலாம் அல்லது “உள்ளீடு” வடிவத்தில் உள்ள தரவை ஏற்கலாம்.

இருப்பினும் இந்த வார்த்தையைப் பற்றி நீங்கள் குழப்பமடையக்கூடும், இது எதைக் குறிக்கிறது? லாஜிக் பூஜ்ஜியம் (0 வி) அல்லது லாஜிக் ஹை (5 வி) இல் தொடர்ச்சியாக ஒதுக்கப்படக்கூடிய ஊசிகளுக்கு ஒரு தரவு மூன்றாவது பரிமாணத்தை சேர்க்கிறது, ஆனால் பருப்பு வகைகளின் அதிர்வெண் போன்ற விரைவாக மாறுபடும் சமிக்ஞைகளைப் பற்றி என்ன. ஒரு குறிப்பிட்ட அதிர்வெண் அல்லது குறிப்பிட்ட கால இடைவெளிகளுடன் ஊசலாடும் உயர் மற்றும் குறைந்த தர்க்கங்களுடன் (5 வி மற்றும் 0 வி) ஒரு அதிர்வெண் இருக்கும், இதனால் இது நேரத்தை அடிப்படையாகக் கொண்டது மற்றும் நேரத்தை பொறுத்து சரிசெய்யப்படலாம், அதனால்தான் 'தரவு' என்று நாம் அடையாளம் காண்கிறோம் மற்றொரு செயல்பாட்டுடன் தொடர்புடைய ஒரு செயல்பாடு (தர்க்க நிலைகள் மற்றும் நேரம்).

பின் குறியீட்டை வெளியீடாக ஒதுக்குவதற்கான ஒரு முறை பின்வரும் குறியீட்டை எழுதுவதன் மூலம்:

டி.டி.ஆர்.பி = 0 பி 00000001

மேலே உள்ள நிரலில், டி.டி.ஆர்.பி PORT B ​​0b க்கான தரவு திசை பதிவேட்டை குறிக்கிறது, ஒரு எண்ணின் பின்வரும் பைனரி வெளிப்பாடு குறித்து தொகுப்பாளருக்கு அறிவுறுத்துகிறது, அதே நேரத்தில் வெளிப்பாட்டின் முடிவில் “1” பின் 0 இன் நிலையைக் குறிக்கிறது, அது வடிவத்தில் இருக்கும் இடம் PORT B ​​இன் முதல் முள்.

PORT B ​​அதனுடன் 8 ஊசிகளை (0 முதல் pin7 வரை) இணைக்கிறது என்பதை நாங்கள் நினைவில் வைத்திருந்தால், மேலே உள்ள குறியீட்டிலும் 8 இலக்கங்கள் இருப்பதை நீங்கள் கவனித்தால், ஒவ்வொரு இலக்கமும் இந்த 8 PORT PORT B ​​ஐ குறிக்கிறது.

இப்போது அடுத்த செயல்முறை இந்த முள் (பின் 0) க்கு 5 வி ஒதுக்க வேண்டும். பின்வரும் பைனரி குறியீடு மூலம் மேலே வெளிப்படுத்தப்பட்டுள்ளபடி செயல்பாட்டின் கொள்கை டி.டி.ஆருக்கு ஒத்ததாக இருக்கிறது:

PORTB = 0b00000001

மேலே உள்ள குறியீட்டிற்கும் முந்தைய குறியீட்டிற்கும் உள்ள ஒரே வித்தியாசம் என்னவென்றால், இந்த குறியீட்டில் நாங்கள் PORT பதிவேட்டைப் பயன்படுத்தினோம். இந்த பதிவேடு அந்த குறிப்பிட்ட துறைமுகத்தின் முள் பணிகளை குறிப்பாக கையாளுகிறது, அதற்காக அது MCU க்குள் நிலைநிறுத்தப்பட்டுள்ளது. இதனால் அந்த பின்அவுட்களுக்கான உண்மையான தரவு தர்க்கங்களை (0 அல்லது 1) ஒதுக்க இது நமக்கு உதவுகிறது.

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

இங்குள்ள “பிரதான” செயல்பாடு ஒவ்வொரு சி / சி ++ நிரல்களும் செயல்படுத்தலைத் தொடங்கும் இடமாகும். எனவே முக்கியமானது இவ்வாறு உருவாக்கப்படலாம்:

int main (வெற்றிடத்தை)
{
}

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

#சேர்க்கிறது
int main (வெற்றிடத்தை)
{
}

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

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

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

int main (வெற்றிடத்தை)

{

DDRB = 0b00000001 // தரவு திசை வெளியீட்டுக்கு pin0 அமைப்பையும் மீதமுள்ள ஊசிகளை உள்ளீடாகவும் பதிவுசெய்க

PORTB = 0b00000001 // pin0 ஐ 5 வோல்ட்டுகளாக அமைக்கவும்

}

மேலே உள்ளவை 00 இன் வெளியீட்டை வெளியீடாக சரிசெய்கிறது, இது 5V அளவைக் கொண்டுள்ளது. இருப்பினும், இந்த முள் தீர்மானிக்கப்படாத ஒரு சிக்கல் இன்னும் உள்ளது, அதாவது MCU இயங்கும் வரை காலவரையின்றி இயக்க இந்த முள் இன்னும் அறிவுறுத்தப்படவில்லை. இந்த எல்லையற்ற பின்னூட்ட வளையமானது MCU இலிருந்து இந்த முள் முடக்கப்படுவதை உறுதி செய்யும், மாறாக 5V வெளியீட்டை காலவரையின்றி தொடர்கிறது.

ஒரு முள் ஒரு லூப் அறிவுறுத்தலைப் பயன்படுத்துவதற்கு பல வேறுபட்ட முறைகள் இருந்தாலும், இங்கே “போது” சுழற்சியைப் பயன்படுத்த முயற்சிப்போம். பெயர் குறிப்பிடுவது போல, “போது” வளையம் மைக்ரோகண்ட்ரோலரிடம் “சக்தி” கிடைக்கும்போது, ​​ஒதுக்கப்பட்ட பின்அவுட்டுக்கு ஒதுக்கப்பட்ட 5 வி உடன் நீங்கள் தொடர்ந்து செயல்பட வேண்டும் என்று கூறுகிறது.

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

int main (வெற்றிடத்தை)

{

DDRB = 0b00000001 // தரவு திசை வெளியீட்டுக்கு pin0 அமைப்பையும் மீதமுள்ள ஊசிகளை உள்ளீடாகவும் பதிவுசெய்க

PORTB = 0b00000001 // pin0 ஐ 5 வோல்ட்டுகளாக அமைக்கவும்

போது (1)

{

// குறியீடு இங்கு மீண்டும் மீண்டும் இயங்க வேண்டியிருந்தால் ... முடிவில்லாமல் இருக்கும்

}

}

‘0’ தவிர எல்லாவற்றையும் தர்க்கரீதியான “உண்மை” என்று கருதலாம் என்பதால், இங்கே “1” ஐ “போது” வளையத்திற்கான வாதத்தின் வடிவத்தில் பயன்படுத்தியுள்ளோம் என்பதை நீங்கள் கவனிக்க விரும்பலாம்.

இது ஒரு தர்க்கரீதியான “உண்மை” என்பதைத் தவிர “எதற்கும்” லூப் கருத்தில் ஒருபோதும் பொறுப்பேற்காது, அதாவது குறிப்பிட்ட முள் குறிப்பிட்ட மாநிலத்துடன் காலவரையின்றி இணைக்கும்.

எம்.சி.யு அதன் வி.டி.டி மற்றும் வி.எஸ்.எஸ் முழுவதும் சக்தியைப் பெறும் வரை எல்.ஈ.டி ஒதுக்கப்பட்ட முள் முழுவதும் நிரந்தரமாக இயங்குவதைக் காணலாம்.

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

அடுத்த டுடோரியல்களுக்குள், மேலே உள்ள எல்.ஈ.டிக்கு ஒரு “நேர” பரிமாணத்தை எவ்வாறு சேர்ப்பது என்பதைக் கற்றுக்கொள்வோம், அதாவது குறிப்பிட்ட குறிப்பிட்ட விகிதத்தில் அதை ஒளிரச் செய்வது எப்படி.

உண்மையில், மேலே செயல்படுத்தப்பட்டதில், எல்.ஈ.டி உண்மையில் ஒளிரும், ஆனால் லூப் வீதம் மிக விரைவானது, இது எல்.ஈ.டி வெளிச்சத்தின் மீது நிரந்தர சுவிட்ச் ஆன் போன்றது.

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

ஏ.வி.ஆர் மைக்ரோகண்ட்ரோலரைப் பயன்படுத்தி எல்.ஈ.டி சிமிட்டுவது எப்படி

கடந்த கலந்துரையாடலில், மைக்ரோகண்ட்ரோலர் மூலம் எல்.ஈ.டி சுவிட்சை எவ்வாறு இயக்குவது என்பதை நாங்கள் கற்றுக்கொண்டோம், அது நிலுவையில் இருந்தது அல்லவா? அவ்வளவு இல்லாமல் இருக்கலாம்!

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

இதைப் பார்ப்போம்:

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

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

int main (வெற்றிடத்தை)

{

டி.டி.ஆர்.பி | = 1<< PINB0

போது (1)

{

PORTB ^ = 1<< PINB0

_ தாமத_எம்எஸ் (100)

}

}

மேற்கண்ட வெளிப்பாட்டில் பயன்படுத்தப்படும் (&, ^, | போன்றவை) விசித்திரமான சின்னங்களுடன் (மற்றும் இல்லை, ஆனால் இதே போன்ற பிற குறியீடுகளில் பயன்படுத்தப்படலாம்) நீங்கள் குழப்பமடைகிறீர்கள் எனில், இவற்றைப் பற்றி அறிய நீங்கள் விரும்பும் தொடர்புடைய தகவல்கள் இங்கே :

இது மேலே உள்ள குறியீட்டில் பொதுவாகப் பயன்படுத்தப்படும் AND, OR, NOT மற்றும் XOR போன்ற பல நிலையான தருக்க வழிமுறைகளை உள்ளடக்கியது.

இந்த தருக்க செயல்பாடு குறிப்பாக ஒதுக்கப்பட்ட உண்மை அட்டவணைகளின்படி “1” மற்றும் “0” ஆகிய இரண்டு பிட்களை ஒப்பிடுகிறது.

பின்வரும் பிட் ஏற்பாட்டை பகுப்பாய்வு செய்வதன் மூலம் எங்களுக்கு ஒரு யோசனை கிடைக்கும்:

01001011 &
10001101
சமம்
00001001

மேலே உள்ள குறியீட்டில் & சி நிரலாக்கத்தில் பயன்படுத்தப்படுவதைக் குறிக்கிறது.

வரிசைகளை செங்குத்தாகப் படிக்கும்போது, ​​0 மற்றும் 1 0, 1 மற்றும் 0 சமம் 0, 0 மற்றும் 0 சமம் 0, 1 மற்றும் 1 சமம் 1 என்று கூறுகிறது. அதைப் படிப்பது அவ்வளவு எளிது. இவை ஒரு AND ஆபரேட்டரின் உண்மை அட்டவணையின்படி.

பின்வரும் அட்டவணையை மதிப்பீடு செய்தால், அது “|” என்ற குறியீட்டைக் குறிக்கிறது “அல்லது” செயல்பாட்டின் பயன்பாட்டைக் குறிக்கிறது, “|” உங்கள் கணினி விசைப்பலகையில் “பேக்ஸ்பேஸின்” இடதுபுறத்தில் காணலாம்:

01001011 |
10001101
சமம்
11001111

OR தர்க்க செயல்பாட்டின் இந்த உண்மை அட்டவணை 0 அல்லது 1 பிட்கள் 1, 1 அல்லது 0 சமம் 1, 0 அல்லது 0 சமம் 0, அதே சமயம் 1 அல்லது 1 1 க்கு சமம் என்பதைக் குறிக்கிறது.

பின்வரும் பிட் சேர்க்கை XOR ஆல் குறிக்கப்படும் XOR லாஜிக் ஆபரேட்டருக்கானது, மேலும் நாம் AND, அல்லது உண்மை அட்டவணைகளுடன் செய்ததைப் போலவே ஆய்வு செய்யப்படலாம்:

01001011 ^
10001101
சமம்
11000110

இப்போது முதல் நிரலைத் தொடரலாம், அதில் பின்வரும் வரி எதைக் குறிக்கிறது என்பதைக் கற்றுக்கொள்வோம்:

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

எங்கள் முந்தைய டுடோரியல்களின் மூலம், வெளிப்பாடு எவ்வாறு செயல்படுகிறது என்பதை நாங்கள் அறிவோம், எனவே நாங்கள் அதை மீண்டும் வலியுறுத்த மாட்டோம், இருப்பினும் அவை # அடங்கும் ஒரு புதிய “அடங்கும்” என்று தோன்றுகிறது, இது விசாரிக்கப்பட வேண்டும்.

இந்த 'அடங்கும்' இல் delay.h சில எளிதான செயலாக்க முறைகளை அனுமதிக்கிறது.

பெயர் குறிப்பிடுவது போல delay.h குறிப்பிட்ட நிரலில் தாமதத்தைத் தூண்ட உதவுகிறது.

எங்கள் முந்தைய இடுகைகளில் இதை ஏற்கனவே உள்ளடக்கியுள்ளதால், அடுத்த வெளிப்பாடு int main (வெற்றிடத்தை) தற்போதைய விவாதத்திலிருந்து தவிர்க்கலாம்.

அடுத்து மாற்றப்பட்ட டி.டி.ஆர்.பி.

0 முதல் 7 வரையிலான அனைத்து ஊசிகளும் உள்ளீடுகளை உருவாக்குவதற்கு மாற்றப்பட்டதால், பின்ஸை ஒதுக்குவதற்கான சிறந்த வழி அல்ல முந்தைய படிவத்தை பின்வருபவை காட்டுகிறது. ஆனால் வேறு சில செயல்பாடுகளுக்கு அந்த ஊசிகள் தேவைப்படும் ஒரு நீண்ட நிரலை உருவாக்க விரும்பினால் நிலைமை என்னவாக இருக்கும் என்று கற்பனை செய்து பாருங்கள்? உதாரணமாக, ஒரு சாதனத்தின் தொலைநிலை மாறுதலைப் பயன்படுத்துவதற்கு pin2 தேவைப்படலாம். அவ்வாறான நிலையில், சோதனை மற்றும் பிழை மூலம் உள்ளீட்டைப் போலவே ஒதுக்குவதை நாங்கள் பாராட்ட மாட்டோம். தொலைநிலை டிரான்ஸ்மிட்டரிலிருந்து பயன்பாட்டு பெறுநருக்கு தவறான பதிலை இது குறிக்கலாம்.

டி.டி.ஆர்.பி = 0 பி 00000001

நாம் ஒரு பிட், தொப்பி பின் 0 பிட், “அல்லது” செயல்பாட்டைப் பார்த்து ஒரு பைனரி மறைத்தல் மூலம் செயல்படுத்த முடியும்.

டி.டி.ஆர்.பி = டி.டி.ஆர்.பி | 0b00000001

இங்கே இது “OR” முகமூடியுடன் மறைக்கப்பட்டுள்ளது: 0b00000001, இது ஒரு உண்மையான பைனரி எண்ணாகத் தோன்றினாலும், முந்தைய டி.டி.ஆர்.பி உதாரணமாக: 0b01001010, பின்னர் முகமூடி மூலம் OR ஐப் பயன்படுத்தினால் கொடுக்கலாம்: 0b01001010 | 0b00000001 = 0b01001011.

இதன் விளைவாக காணக்கூடிய வேறுபாடு பின் 0 உடன் மட்டுமே உள்ளது, அதன் பிட்கள் மாறிவிட்டன!

மேற்கண்ட கூற்றை சி ++ வழியாக மேலும் சுருக்கினால்:

டி.டி.ஆர்.பி | = 0 பி 00000001

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

எனவே “DDRB | = 1 என்றால்<< PINBO, why it’s like that?

1<< PINBO is implemented for applying the masking effect. The “1” indicates what may be introduced inside the mask, while the < < is simply the left shift functionality. It executes exactly as it’s named, and PINBO is the number of locations that the “1” would sequence across the left hand side. To be precise PINBO may be equivalent of a 0.

எனவே நாம் 0b00000000 உடன் தொடங்கி, 0b0000001 ஐ உருவாக்க “1” ஐ வைத்து, அதை இடது 0 நிலைகளுக்கு மாற்றுவோம், இது மேலே 0b00000001 ஐ ஒத்ததாக இருக்கும்.

இப்போது, ​​இது PINB4 என்று கருதினால், அந்த அறிக்கையை 1 ஆக வெளிப்படுத்தலாம்<< PINB4. I this case the “1” would be pushed to the left 4 locations producing: 0b00010000.

“1” க்குப் பிறகு நான்கு பூஜ்ஜியங்கள் உள்ளன என்பதன் அர்த்தம் பூஜ்ஜிய குறியீட்டைப் பயன்படுத்துகிறோம் என்பதில் ஜாக்கிரதை.

இப்போது 'எல்லையற்ற வளையத்தில்' நாம் முன்னர் குறிப்பிட்டிருந்த 'போது' வளையத்திற்கு செல்கிறோம். ஆனால் இப்போது மைக்ரோகண்ட்ரோலர் விரும்பிய சில மரணதண்டனைகளை செயல்படுத்த வேண்டும் என்று நாங்கள் விரும்புகிறோம். கொடுக்கப்பட்ட வளையத்திற்குள் மட்டுமே இது சாத்தியமாகும். குறிப்பிட்ட வரிசை மீண்டும் மீண்டும் மீண்டும் நிகழும் வளையம் இது.

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

எவ்வாறாயினும், எல்.ஈ.டி காலவரையின்றி ஒளிரச் செய்ய, PINB0 ஐ மாறி மாறி சுழற்சியில் ஆன் / ஆஃப் செய்ய வேண்டும். அறிமுகப்படுத்தப்பட்ட தாமதங்களையும் இங்கே காண்கிறோம், இது இல்லாமல் எல்.ஈ.டி ஒளிரும் சாத்தியமற்றது. ஆனால் இது எல்.ஈ.டி ஐ மிக விரைவான விகிதத்தில் நிர்வாணக் கண்ணால் அடையாளம் காண கடினமாக இருக்கும், இது நம் கண்களால் அடையாளம் காணப்படுவதற்கு சற்று மெதுவாக தேவை.

பைனரி எண்ணில் ஒரு குறிப்பிட்ட பிட்டின் நடைமுறையை அமைப்பதை நாங்கள் அறிவோம், ஆனால் இது ஒரு “1” ஆக இருந்தால் ஒரு குறிப்பிட்ட பிட் “0” ஐப் பயன்படுத்துவதற்கான முறை நிச்சயமாகத் தெரியவில்லை.

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

ஆரம்ப இரண்டு அறிக்கைகள் பிட்டை “1” (5 வி, எல்இடி விளக்குகள்) ஆக மாற்றுகின்றன, பின்னர் 100 எம்எஸ்ஸுக்கு இடைநிறுத்தம் அறிமுகப்படுத்தப்படுகிறது.

அடுத்த இரண்டு வரிகள் PINB0 பிட்டை “0” ஆக மாற்றும் (பூஜ்ஜிய மின்னழுத்தம், எல்.ஈ.டி நிறுத்தப்பட்டது), ஆனால் மன்னிக்கவும், ஒப்பிட்டுப் பார்த்தால் பிட்டிலிருந்து “0” ஐ இயக்க முடியாது, ஆனால் நாம் “~” ஐப் பயன்படுத்தாவிட்டால் பைனரி முகமூடிக்கு அது அனைத்து 0 களையும் 1 வி ஆக மாற்றலாம் மற்றும் நேர்மாறாகவும் இருக்கும்.

இது PINB0 பிட்டை மட்டுமே பாதிக்கும் மற்றும் அதை “0” க்கு புரட்ட உதவும். முகமூடி மரணதண்டனை அடங்குவதற்காக அடைப்புக்குறிப்பு சேர்க்கப்பட்டுள்ளது, அதாவது முழு முகமூடிகளுக்கும் NOT செயல்பாடு பயன்படுத்தப்படாது, இடது மாற்றத்திற்கு முன் “1” க்கு மேல் அல்ல.<<”.

PORTB | = 1<< PINB0
_ தாமத_எம்எஸ் (100)
PORTB & = ~ (1<< PINB0)
_ தாமத_எம்எஸ் (100)

ஆன் ஆஃப் தாமதங்கள் அல்லது சம கால காலங்களை உருவாக்க, முந்தைய நான்கு வரிகளை இரண்டாகக் குறைத்து, எக்ஸ்ஓஆர் செயல்பாட்டை எங்கள் நன்மைக்காகப் பயன்படுத்தலாம். ஒரு XOR மரணதண்டனை 1 க்கு ஒதுக்கப்பட்ட முள் 0 மற்றும் அதற்கு நேர்மாறாக இருந்தால் அதைக் கவனிக்க வேண்டும். இந்த மரணதண்டனை PINB0 ஐ மட்டுமே பாதிக்கும். கட்டளை பயன்படுத்தப்பட்ட நேரங்களைப் போல, இது பிட்டை ஏற்கனவே இருக்கும் தர்க்கத்திற்கு நேர்மாறாக மாற்றிவிடும்.

PORTB ^ = 1<< PINB0
_ தாமத_எம்எஸ் (100)

முடிந்தது! நிர்ணயிக்கப்பட்ட விகிதத்தின் படி உங்கள் எல்.ஈ.டி இப்போது ஒளிரும்… .சிறிய, இல்லையா?




முந்தைய: பல உபகரணங்கள் தொலை கட்டுப்பாட்டு சுற்று அடுத்து: ஏசி கட்டம், நடுநிலை, பூமி தவறு காட்டி சுற்று