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

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

இதில் இரண்டு வகைகள் உள்ளன (EEPROM பொதுவாக ஒரு புறம் என்பதால் கணக்கிடப்படாது, ஆனால் அதைப் பற்றி பின்னர் மேலும்):

  • ரேம் - ரேம்
  • ROM - ROM, ஃபிளாஷ், நிரல் நினைவகம்

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

உடனடியாக முகவரிகளில் கவனம் செலுத்துங்கள்! RON மற்றும் புற பதிவேடுகள், அதே போல் ரேம் ஆகியவை ஒரே முகவரி இடத்தில் அமைந்துள்ளன. அந்த. 0000 முதல் 001F வரையிலான முகவரிகள் எங்கள் பதிவேடுகளை ஆக்கிரமித்துள்ளன, பின்னர் 005F முகவரி வரை I/O செல்கள் - போர்ட்கள் உள்ளன. துறைமுகங்கள் மூலம், கன்ட்ரோலரில் உள்ள அனைத்தும் கட்டமைக்கப்பட்டுள்ளன. அதன்பிறகுதான், முகவரி 0060 இலிருந்து நமது ரேம் வருகிறது, அதை நாம் அதன் நோக்கத்திற்காகப் பயன்படுத்தலாம்.

மேலும், I/O பதிவேடுகளுக்கும் அவற்றின் சொந்த முகவரி உள்ளது என்பதை நினைவில் கொள்ளவும் - I/O பதிவேடுகளின் முகவரி இடம் (00 முதல் 3F வரை), இது படத்தின் இடது பக்கத்தில் குறிப்பிடப்பட்டுள்ளது. IO/Register Block இந்த முகவரியானது அவுட் மற்றும் இன் வழிமுறைகளில் மட்டுமே செயல்படும். இது ஒரு சுவாரஸ்யமான அம்சத்திற்கு வழிவகுக்கிறது.

புற பதிவேடுகளை இரண்டு வெவ்வேறு வழிகளில் அணுகலாம்:

  • I/O முகவரி இடத்தில் உள்ள ஒரு குறுகிய முகவரியில் IN/OUT கட்டளைகள் வழியாக
  • ரேம் முகவரி இடத்தில் முழு முகவரியில் LOAD/STORE கட்டளைகளின் குழு மூலம்

உதாரணமாக. ஒத்திசைவற்ற டிரான்ஸ்ஸீவர் UDR இன் உள்ளீட்டுப் பதிவேட்டை எடுத்துக்கொள்வோம்; அதில் 0x0C (0x2C) என்ற முகவரி உள்ளது; பொது முகவரி இடத்தில் உள்ள முகவரி அடைப்புக்குறிக்குள் குறிக்கப்படுகிறது.

LDI R18.10; பதிவு R18 இல் 10 என்ற எண்ணை ஏற்றினோம். அது போலவே OUT UDR,R18 ; முதல் வழியில் கழிக்கப்பட்டது, தொகுப்பி தன்னை; UDR STS 0x2C,R18 க்கு பதிலாக 0x0C மதிப்பை மாற்றுகிறது ; அவர்கள் என்னை இரண்டாவது வழியில் அழைத்துச் சென்றனர். ஸ்டோர் கட்டளை வழியாக; முகவரியை நேரடியாக உள்ளிடுவதன் மூலம்.

இரண்டு முறைகளும் ஒரே மாதிரியான முடிவுகளைத் தருகின்றன. ஆனாலும்! உள்ளீடு/வெளியீட்டு இடத்தில் (OUT/IN) முகவரி மூலம் வேலை செய்பவை இரண்டு பைட்டுகள் குறைவாக இருக்கும். இது புரிந்துகொள்ளத்தக்கது - அவர்கள் தன்னிச்சையான நினைவக கலத்தின் இரட்டை-பைட் முகவரியைச் சேமிக்கத் தேவையில்லை, மேலும் உள்ளீடு-வெளியீட்டு இடத்தின் குறுகிய முகவரி இரட்டை-பைட் அறிவுறுத்தல் குறியீட்டில் பொருந்துகிறது.

உண்மை, இங்கே மற்றொரு நகைச்சுவை உள்ளது. உண்மை என்னவென்றால், ஒவ்வொரு ஆண்டும் ஏ.வி.ஆரில் இருந்து அதிகமான கற்கள் தோன்றும் மற்றும் அவற்றில் அதிக இறைச்சி உள்ளது. மேலும் ஒவ்வொரு கிராக்லிங்கிற்கும் அதன் சொந்த புற I/O பதிவேடுகள் தேவை. இப்போது, ​​ATMega88 (இது Mega8 க்கு பதிலாக) ஏற்கனவே பல சாதனங்களைக் கொண்டுள்ளது என்ற முடிவுக்கு வந்துள்ளோம், அதன் I/O பதிவுகள் 3F முகவரி இட வரம்பிற்குள் பொருந்தாது.

அச்சச்சோ, அவர்கள் வந்துவிட்டார்கள். பழைய கற்களிலிருந்து புதிய கற்களுக்கு மாறுபவர்கள் இங்குதான் குழப்பமான வெளிப்பாடுகளை வெளிப்படுத்தத் தொடங்குகிறார்கள் - ஏன் OUT/IN கட்டளைகள் சில புறப் பதிவேடுகளில் வேலை செய்கின்றன, ஆனால் மற்றவற்றில் இல்லை?

இது எளிதானது - போதுமான பிட் திறன் இல்லை.

ஆனால் மையமானது ஒன்று, அதை இனி ரீமேக் செய்ய முடியாது. இங்கே ATMEL நபர்கள் தந்திரமாக செயல்பட்டனர் - அவர்கள் நினைவக வரைபட பதிவுகள் என்று அழைக்கப்படுவதை அறிமுகப்படுத்தினர். அந்த. 3F வரம்பிற்குள் பொருந்தாத அனைத்து பதிவேடுகளும் இப்போது ஒரே ஒரு வழியில் மட்டுமே கிடைக்கின்றன - லோட்/ஸ்டோர் மூலம்.

என்ன ஒரு நகைச்சுவை. நீங்கள் சில m88def.inc ஐத் திறந்தால், I/O பதிவேடுகளில் எது “சரியானது” மற்றும் நினைவக மேப் செய்யப்பட்டவை என்பதை நீங்கள் பார்க்கலாம்.

இது போன்ற ஒன்று இருக்கும்:

; ***** I/O பதிவு வரையறைகள் ******************************************* ******** * ; குறிப்பு: ; "MEMORY MAPPED" எனக் குறிக்கப்பட்ட வரையறைகள் நீட்டிக்கப்பட்ட I/O போர்ட்கள் ; மற்றும் IN/OUT வழிமுறைகளுடன் பயன்படுத்த முடியாது .equ UDR0 = 0xc6 ; மெமரி மேப் செய்யப்பட்ட .equ UBRR0L = 0xc4 ; மெமரி மேப் செய்யப்பட்ட .equ UBRR0H = 0xc5 ; மெமரி மேப் செய்யப்பட்ட .equ UCSR0C = 0xc2 ; மெமரி மேப் செய்யப்பட்ட .equ UCSR0B = 0xc1 ; மெமரி மேப் செய்யப்பட்ட .equ UCSR0A = 0xc0 ; மெமரி மேப் செய்யப்பட்ட ப்ளா ப்ளா ப்ளா, மேலும் பல.equ OSCCAL = 0x66 ; மெமரி மேப் செய்யப்பட்ட .equ PRR = 0x64 ; மெமரி மேப் செய்யப்பட்ட .equ CLKPR = 0x61 ; மெமரி மேப் செய்யப்பட்ட .equ WDTCSR = 0x60 ; மெமரி மேப் செய்யப்பட்ட .equ SREG = 0x3f ;<------ А тут пошли обычные.equ SPL = 0x3d .equ SPH = 0x3e .equ SPMCSR = 0x37 .equ MCUCR = 0x35 .equ MCUSR = 0x34 .equ SMCR = 0x33 .equ ACSR = 0x30

இவை பைகள்.

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

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

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

சரி, நான் என்ன பேசுகிறேன்... RAM பற்றி.

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

எங்கள் குறியீட்டில் ரேம் கட்டளையுடன் தொடங்குகிறது.DSEG எங்கள் டெம்ப்ளேட்டை நினைவில் கொள்கிறீர்களா?

"m16def.inc" ; நாங்கள் ATMega16 ஐப் பயன்படுத்துகிறோம் ;= Start macro.inc ============================= ; மேக்ரோக்கள் இங்கே;= முடிவு macro.inc =============================== ; ரேம் ===================================================== ============ .DSEG ; ரேம் பிரிவு; ஃப்ளாஷ் ==================================================== ========== .CSEG ; குறியீடு பிரிவு; EEPROM ====================================================== ======== .ESEG ; EEPROM பிரிவு

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

எனவே, நாங்கள் ஒரு லேபிளை எடுத்து அமைப்போம்

0x0060 ## ;மாறிகள் 0x0061 ## 0x0062 ## 0x0063 ## ;மாறிகள்2 0x0064 ## 0x0065 ## ;மாறிகள்4 இங்கே தொடங்கலாம்

## எந்த பைட்டாக. இயல்பாக FF. நிச்சயமாக, மாறிகள், ஆரம்ப துவக்கம், வழிதல் கட்டுப்பாடு மற்றும் பிற முதலாளித்துவ மகிழ்ச்சிகள் பற்றி பேச வேண்டிய அவசியமில்லை. இது ஸ்பார்டா! அதாவது, அசெம்பிளர். அனைத்தும் கையால்.
நாம் C உடன் ஒரு ஒப்புமையை வரைந்தால், அது வெற்றிட சுட்டிகள் மூலம் நினைவகத்துடன் வேலை செய்வது போன்றது. சிஷ்னிக்களுக்குப் புரியும். புரிந்து கொண்டு திகிலடைவார்கள். ஏனெனில் இந்த உலகம் கொடூரமானது மற்றும் துரோகமானது. நான் குறியீட்டை சிறிது தவறாகக் கணக்கிட்டேன் மற்றும் பிற தரவை இழந்தேன். இந்த பிழை உடனடியாக பாப்-அப் செய்யவில்லை என்றால், அடடா.

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

.ORG கட்டளையானது தரவுப் பிரிவிலும் வேலை செய்கிறது. இது அதே வழியில் வேலை செய்கிறது - இது முகவரிகளை, இந்த விஷயத்தில் குறிகளை, இங்கிருந்து நினைவகத்தின் இறுதிக்கு மாற்றுகிறது. ஒரு நுணுக்கம் - ORG 0000 ரேமின் ஆரம்பத்தை நமக்குத் தரும், இது R0 மற்றும் பிற பதிவேடுகள். மேலும் மெகா16 ஐ உதாரணமாகப் பயன்படுத்தி பூஜ்ஜிய கிலோமீட்டர் ரேம் ORG 0x0060 ஐக் கொடுக்கும். மற்ற கட்டுப்படுத்திகளில் வேறு சில மதிப்புகள் உள்ளன. ஒவ்வொரு முறையும் டேட்டாஷீட்டிற்குச் செல்வது சோம்பேறித்தனமானது, எனவே SRAM_START போன்ற ஒரு மேக்ரோ வரையறை உள்ளது, இது ஒரு குறிப்பிட்ட MKக்கான RAM இன் தொடக்கத்தைக் குறிக்கிறது.

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

1 2 3 4 .DSEG .ORG SRAM_START+100 மாறிகள்: .பைட் 3

DSEG .ORG SRAM_START+100 மாறிகள்: .பைட் 3

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

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

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

ஸ்டோர் (ST**) கட்டளைகள் RAM இல் எழுதப்படுகின்றன, மேலும் Load (LD**) கட்டளைகள் படிக்கப்படுகின்றன.

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

DSEG மாறிகள்: .பைட் 3 மாறிகள்2: .பைட் 1 .CSEG ; மாறி நினைவகத்தில் உள்ளது; முதலில் நீங்கள் அதைப் பெற வேண்டும். LDS R16, மாறிகள் ; R16 LDS R17 இல் முதல் மாறிகள் பைட்டைப் படிக்கவும், மாறிகள்+1 ; R17 LDS R18, மாறிகள்+2 இல் இரண்டாவது மாறிகள் பைட்டைப் படிக்கவும்; சரி, R18 இல் மூன்றாவது பைட்; இப்போது அதனுடன் 1 ஐ சேர்ப்போம், ஏனெனில் AVR ஒரு மாறிலியுடன் மட்டும் சேர்க்க முடியாது; கழிக்க, நீங்கள் சிதைக்க வேண்டும். இருப்பினும், இது எந்த குறிப்பிட்ட சிக்கலையும் ஏற்படுத்தாது. SUBI R16,(-1) ; பொதுவாக, SUBI என்பது ஒரு கழித்தல், ஆனால் -(- கொடுக்கிறது + SBCI R17,(-1) ; மற்றும் இங்கே பரிமாற்றம் கணக்கில் எடுத்துக்கொள்ளப்படுகிறது. ஆனால் அது பின்னர். SBCI R18,(-1) ; அசெம்பிளரில் உள்ள கணிதம் ஒரு வெவ்வேறு கதை STS மாறிகள், R16 ; எல்லாவற்றையும் அப்படியே சேமிக்கவும். STS மாறிகள்+1,R17 STS மாறிகள்+2,R18

அல்லது நீங்கள் வேறு முறையைப் பயன்படுத்தலாம். குறியீட்டு பதிவு மூலம் மறைமுக பதிவு.

DSEG மாறிகள்: .பைட் 3 மாறிகள்2: .பைட் 1 .CSEG ; எங்கள் மாறி LDI YL, குறைந்த (மாறிகள்) LDI YH, உயர் (மாறிகள்) முகவரியை எடுத்துக் கொள்ளுங்கள்; மாறி நினைவகத்தில் உள்ளது; முதலில் நீங்கள் அதைப் பெற வேண்டும். LD R16, Y+ ; R16 LD R17, Y+ இல் முதல் மாறிகள் பைட்டைப் படிக்கவும்; R17 LD R18, Y+ இல் இரண்டாவது மாறிகள் பைட்டைப் படிக்கவும்; சரி, R18 இல் மூன்றாவது பைட்; இப்போது அதனுடன் 1 ஐ சேர்ப்போம், ஏனெனில் AVR ஒரு மாறிலியுடன் மட்டும் சேர்க்க முடியாது; கழிக்க, நீங்கள் சிதைக்க வேண்டும். இருப்பினும், இது எந்த குறிப்பிட்ட சிக்கலையும் ஏற்படுத்தாது. SUBI R16,(-1) ; உண்மையில் SUBI என்பது ஒரு கழித்தல், ஆனால் -(- கொடுக்கிறது + SBCI R17,(-1) ; இங்கே பரிமாற்றம் கணக்கில் எடுத்துக்கொள்ளப்படுகிறது. ஆனால் அது பற்றி மேலும் பின்னர். SBCI R18,(-1) ; அசெம்பிளரில் கணிதம் என்பது வேறு கதை ST -Y,R18 ; எல்லாவற்றையும் அப்படியே வைத்திருக்கிறோம். ST -Y,R17 ; ஆனால் தலைகீழ் வரிசையில் ST -Y,R16

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

நினைவகம் அல்லது அட்டவணையில் உள்ள வரிசைகள் மூலம் மீண்டும் மீண்டும் செய்ய இதுபோன்ற அதிகரிக்கும் கட்டளைகளைப் பயன்படுத்துவது வசதியானது.
மேலும் மூன்று வகையான குறியீடுகளுக்கும் (X,Y,Z) மறைமுகமான எழுத்து/வாசிப்பு LDD/STD மற்றும் பிற விருப்பங்களும் உள்ளன. பொதுவாக, டேட்டாஷீட் மற்றும் கட்டளை அமைப்பை புகைபிடிக்கவும்.

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

நான் ஏன் உன்னை காதலிக்கவேண்டும்? சரி, C என்பது ஒரு முட்டாள் கைவினை, வேகமான மற்றும் பயனுள்ளது என்றால், சட்டசபை ஒரு ஃபிலிக்ரீ கலை. ஜிம் போன்ற வெறி பிடித்தவர்கள் காகிதத்தில் இருந்து தலைசிறந்த படைப்புகளை எவ்வாறு உருவாக்குகிறார்கள் மற்றும் காகிதத்திலிருந்து மட்டுமே, உங்கள் சொந்த மகிழ்ச்சிக்காக நீங்கள் ஒரு ஆயத்த ஆயத்த மாதிரி மற்றும் பசை வாங்கலாம் என்று தோன்றுகிறது. எனவே இங்கேயும் - செயல்முறையே மிகப்பெரியது. பிழைத்திருத்தத்தின் தொந்தரவு உட்பட :))))

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

அடுக்கில் ஒரு சுட்டி உள்ளது, அது அடுக்கின் மேற்புறத்தை சுட்டிக்காட்டுகிறது. ஸ்டாக் பாயிண்டருக்கு ஒரு சிறப்பு பதிவு SP பொறுப்பு, அல்லது அது ஒரு பதிவு ஜோடி SPL மற்றும் SPH ஆகும். ஆனால் சிறிய அளவிலான ரேம் கொண்ட மைக்ரோகண்ட்ரோலர்களில், எடுத்துக்காட்டாக, டினி2313 இல், எஸ்பிஎல் மட்டுமே உள்ளது.

கன்ட்ரோலர் தொடங்கும் போது, ​​வழக்கமாக அவர்கள் செய்யும் முதல் விஷயம், ஸ்டேக்கை துவக்கி, அதன் அடிப்பகுதியின் முகவரியை SP இல் எழுதுவது, அது எங்கிருந்து வளரும். பொதுவாக இது ரேமின் முடிவாகும், மேலும் இது ஆரம்பத்தை நோக்கி வளரும்.

நிரலின் ஆரம்பத்தில் இது இவ்வாறு செய்யப்படுகிறது:

1 2 3 4 5 LDI R16, குறைந்த(RAMEND) OUT SPL,R16 LDI R16,High(RAMEND) OUT SPH,R16

LDI R16, குறைந்த(RAMEND) OUT SPL,R16 LDI R16,High(RAMEND) OUT SPH,R16

RAMEND என்பது தற்போதைய MK இல் ரேமின் முடிவைக் குறிக்கும் மேக்ரோ வரையறை ஆகும்.

அவ்வளவுதான், ஸ்டாக் செல்ல தயாராக உள்ளது. PUSH Rn கட்டளையைப் பயன்படுத்தி தரவு அடுக்கில் தள்ளப்படுகிறது, மேலும் POP Rn வழியாக மீட்டெடுக்கப்படுகிறது.
Rn என்பது RON இல் ஏதேனும் ஒன்று.

CALL, RCALL, ICALL, RET, RETI மற்றும் ஒரு குறுக்கீட்டை அழைப்பது போன்ற கட்டளைகளும் ஸ்டேக்குடன் வேலை செய்கின்றன, ஆனால் அது பின்னர் மேலும்.

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

பின்வரும் குறியீட்டை ஸ்டுடியோவில் உள்ளிடவும்:

CSEG ; LDI குறியீடு பிரிவு R16, குறைந்த (RAMEND) ; ஸ்டாக் துவக்கம் OUT SPL,R16 LDI R16,High(RAMEND) OUT SPH,R16 LDI R17,0 ; ஏற்றுதல் மதிப்புகள் LDI R18.1 LDI R19.2 LDI R20.3 LDI R21.4 LDI R22.5 LDI R23.6 LDI R24.7 LDI R25.8 LDI R26.9 புஷ் R17 ; புஷ் ஆர் 18 புஷ் ஆர் 19 புஷ் ஆர் 20 புஷ் ஆர் 21 புஷ் ஆர் 22 புஷ் ஆர் 23 புஷ் ஆர் 24 புஷ் ஆர் 25 புஷ் ஆர் 26 பாப் ஆர் 0 ஸ்டேக்கில் மதிப்புகளை வைக்கிறோம்; POP R1 POP R2 POP R3 POP R4 POP R5 POP R6 POP R7 POP R8 POP R9 அடுக்கிலிருந்து பாப் மதிப்புகள்

இப்போது ஸ்டுடியோவை படிப்படியாக இயக்கவும் மற்றும் SP எவ்வாறு மாறுகிறது என்பதைப் பார்க்கவும். ஸ்டாக் பாயிண்டரை ஸ்டுடியோவில் ப்ரோக்ராம் கவுண்டர் இருக்கும் இடத்தில் காணலாம்.

முதலில், நாங்கள் அடுக்கைத் துவக்கி, தரவுகளுடன் பதிவேடுகளை ஏற்றுவோம். இதன் விளைவாக பின்வரும் படம் இருக்கும்:

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

புஷ் R16 புஷ் R17 POP R16 POP R17

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

மேக்ரோவைப் பயன்படுத்தி சிக்கல் தீர்க்கப்படுகிறது. நான் அதை LDIL - LDI குறைவு என்று அழைத்தேன்

மேக்ரோ எல்டில் புஷ் R17; உயர் பதிவேடுகளில் ஒன்றின் மதிப்பை அடுக்கில் சேமிப்போம். LDI R17,@1 ; நமது உடனடி மதிப்பான MOV @0,R17ஐ அதில் ஏற்றுவோம்; குறைந்த குழுவின் பதிவேட்டில் மதிப்பை மாற்றுவோம். POP R17; ஸ்டேக்கிலிருந்து மிக உயர்ந்த பதிவேட்டின் மதிப்பை மீட்டெடுப்போம். .ENDM

இப்போது நீங்கள் எங்கள் வீட்டில் தயாரிக்கப்பட்ட கட்டளையை எளிதாகப் பயன்படுத்தலாம்.

1 LDIL R0.18

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

அடுக்கு பிழைகள்
ஸ்டேக் தரவை நோக்கி வளர்கிறது, இப்போது நினைவகத்தில் ஒரு மாநில மாறி இருப்பதை கற்பனை செய்து பாருங்கள், அது முகவரியில் அமைந்துள்ளது, எடுத்துக்காட்டாக, 0x0450. ஸ்டேக்கின் மேற்பகுதிக்கு ஆபத்தான முறையில் நெருக்கமாக உள்ளது. மாறி ஸ்டோர்கள், எடுத்துக்காட்டாக, நிரலின் மேலும் தர்க்கம் சார்ந்திருக்கும் வரையறுக்கப்பட்ட நிலை இயந்திரத்தின் நிலை. 3 இருந்தால், நாம் ஒரு காரியத்தைச் செய்கிறோம், 4 இருந்தால் வேறு ஏதாவது, 5 இருந்தால் வேறு ஏதாவது என்று 255 நிலைகள் வரை இருக்கும். வேலையின் தர்க்கத்தின் படி, 3 க்குப் பிறகு 4re இருக்க வேண்டும், ஆனால் 10 அல்ல

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

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

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

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

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

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

வக்கிரங்களை அடுக்கவும்
எனக்கு பிடித்த தலைப்பு. =)))) PUSH மற்றும் POP கட்டளைகளின் போது ஸ்டாக் பாயிண்டரே கணக்கிடப்பட்டாலும், SP இலிருந்து அதைத் தேர்ந்தெடுத்து அதன் மதிப்புகளைப் பயன்படுத்தி தரவுகளின் முகவரியை கைமுறையாகக் கணக்கிடுவதை யாரும் தடுக்கவில்லை. அடுக்கு. அல்லது ஸ்டாக் தரவை நாங்கள் விரும்பியபடி திருத்தவும்.
எதற்காக? சரி, மூளையை கஷ்டப்படுத்தி, வெளியே யோசிக்க ஆரம்பித்தால் நிறைய அப்ளிகேஷன்களைக் காணலாம் :))))

கூடுதலாக, x86 கட்டமைப்பில் கிளாசிக் C மற்றும் பாஸ்கலில் உள்ள ஸ்டாக் வழியாக அளவுருக்கள் அனுப்பப்படுகின்றன மற்றும் உள்ளூர் மாறிகள் வேலை செய்கின்றன. அந்த. ஒரு செயல்பாட்டை அழைப்பதற்கு முன், முதலில் அனைத்து மாறிகளும் அடுக்கின் மீது தள்ளப்படும், பின்னர், செயல்பாட்டை அழைத்த பிறகு, எதிர்கால உள்ளூர் மாறிகளின் பைட்டுகள் அடுக்கின் மீது தள்ளப்படும்.

பின்னர், SP ஐ ஒரு குறிப்பு புள்ளியாகப் பயன்படுத்தி, இந்த மாறிகளை நாம் விரும்பியபடி கையாளலாம். POP கட்டளையுடன் அடுக்கு விடுவிக்கப்படும் போது, ​​அவை அழிக்கப்பட்டு, நினைவகத்தை விடுவிக்கின்றன.

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

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

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

ஃபிளாஷ் மெமரி

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

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

DB ஆபரேட்டர் என்பது ஒவ்வொரு மாறிலிக்கும் ஒரு பைட்டைப் பயன்படுத்துவதாகும். இரட்டை பைட் மாறிலிகள் DW (அத்துடன் DD மற்றும் DQ) குறிப்பிடும் ஆபரேட்டர்களும் உள்ளனர்.

1 தரவு: .db 12,34,45,23

தரவு: .db 12,34,45,23

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

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

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

நிரல் நினைவகத்திலிருந்து தரவை ஏற்ற, சுமை நிரல் நினைவக குழுவிலிருந்து கட்டளையைப் பயன்படுத்தவும்

எடுத்துக்காட்டாக, LPM Rn,Z

இது பதிவு ஜோடி Z மூலம் சுட்டிக்காட்டப்பட்ட கலத்திலிருந்து பதிவு Rn எண்ணில் நுழைகிறது. Z என்பது R30 (ZL) மற்றும் R31 (ZH) ஆகிய இரண்டு பதிவேடுகள் என்பதை உங்களுக்கு நினைவூட்டுகிறேன். முகவரியின் குறைந்த பைட் R30 ஆகவும், அதிக பைட் R31 ஆகவும் உள்ளிடப்படுகிறது.

குறியீட்டில் இது போல் தெரிகிறது:

LDI ZL, குறைந்த (தரவு*2) ; நாங்கள் முகவரியின் குறைந்த பைட்டை பதிவு ஜோடி Z LDI ZH,high(data*2) இல் உள்ளிடுகிறோம் ; பதிவு ஜோடி Z இல் முகவரியின் உயர் பைட்டை உள்ளிடுகிறோம்; இரண்டால் பெருக்கல் என்பது முகவரி குறிப்பிடப்பட்டிருப்பதன் காரணமாகும்; இரட்டை பைட் வார்த்தைகளில், ஆனால் நமக்கு அவை பைட்டுகளில் தேவை. ; எனவே, நாம் இரண்டால் பெருக்குகிறோம்; முகவரியை ஏற்றிய பிறகு, LPM R16, Z நினைவகத்திலிருந்து எண்ணை ஏற்றலாம்; இந்த கட்டளைக்குப் பிறகு R16 பதிவேட்டில் எண் 12, ; நிரல் நினைவகத்திலிருந்து எடுக்கப்பட்டது. ; நிரலின் முடிவில் எங்காவது, ஆனால் .CSEG தரவுப் பிரிவில்: .db 12,34,45,23

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


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

ஒரு நிரலை எழுதுவதற்கான அமைப்பு மற்றும் வரிசை

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

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


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

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

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

ஒரு நிரலை தொகுத்தல்

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

MK firmware ஐ ப்ளாஷ் செய்ய, ஒரு சாதனம் அழைக்கப்படுகிறது புரோகிராமர். புரோகிராமரின் வகையைப் பொறுத்து, அதன் உள்ளீடு COM அல்லது USB போர்ட்டுடன் இணைக்கப்பட்டுள்ளது, மேலும் அதன் வெளியீடு மைக்ரோகண்ட்ரோலரின் சில பின்களுடன் இணைக்கப்பட்டுள்ளது.


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


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

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


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

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

தேவையான நிரல்களின் தொகுப்பு

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

1) அட்மெல் ஸ்டுடியோ

2) CodeVisionAVR

3) WinAVR

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

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

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

நிலைபொருள் மற்றும் நிரல் பிழைத்திருத்தம்

கூடுதல் நிரலைப் பயன்படுத்தி மைக்ரோகண்ட்ரோலர்களை ப்ளாஷ் செய்வோம்.

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

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

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

கிசெலெவ் ரோமன், மே 2007 கட்டுரை மே 26, 2014 அன்று புதுப்பிக்கப்பட்டது

எனவே, மைக்ரோகண்ட்ரோலர் என்றால் என்ன (இனி MK என குறிப்பிடப்படுகிறது)? இது, ஒப்பீட்டளவில், ஒரு ஒருங்கிணைந்த மின்சுற்றில் உள்ள ஒரு சிறிய கணினி ஆகும். இது ஒரு செயலி (எண்கணித லாஜிக் யூனிட், அல்லது ALU), ஃபிளாஷ் நினைவகம், EEPROM நினைவகம், பல பதிவுகள், I/O போர்ட்கள், அத்துடன் கூடுதல் மணிகள் மற்றும் விசில்களான டைமர்கள், கவுண்டர்கள், ஒப்பீட்டாளர்கள், USARTகள் போன்றவை. மின்சாரம் பயன்படுத்தப்பட்ட பிறகு , மைக்ரோகண்ட்ரோலர் துவங்குகிறது மற்றும் அதன் ஃபிளாஷ் நினைவகத்தில் சேமிக்கப்பட்ட நிரலை இயக்கத் தொடங்குகிறது. அதே நேரத்தில், இது I/O போர்ட்கள் வழியாக பல்வேறு வகையான வெளிப்புற சாதனங்களைக் கட்டுப்படுத்த முடியும்.

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

AVRகள் 8-பிட் மைக்ரோகண்ட்ரோலர்கள், அதாவது அவற்றின் ALU ஆனது ஒரு கடிகார சுழற்சியில் 8-பிட் எண்களை மட்டுமே கொண்டு எளிய செயல்பாடுகளைச் செய்ய முடியும். இப்போது நாம் எந்த MK ஐப் பயன்படுத்துவோம் என்பதைப் பற்றி பேச வேண்டிய நேரம் இது. நான் ATMega16 MK உடன் பணிபுரிகிறேன். இது மிகவும் பொதுவானது மற்றும் கிட்டத்தட்ட எந்த வானொலி பாகங்கள் கடையிலும் சுமார் 100 ரூபிள் வாங்கலாம். நீங்கள் அதைக் கண்டுபிடிக்கவில்லை என்றால், நீங்கள் MEGA தொடரின் வேறு எந்த MK ஐயும் வாங்கலாம், ஆனால் இந்த விஷயத்தில் நீங்கள் அதற்கான ஆவணங்களைத் தேட வேண்டும், ஏனெனில் வெவ்வேறு MK களின் அதே "கால்கள்" வெவ்வேறு செயல்பாடுகளைச் செய்ய முடியும். இணைக்கும்போது, ​​எல்லா முடிவுகளும் சரியாக இருந்தால், நீங்கள் ஒரு வேலை செய்யும் சாதனத்தைப் பெறலாம் அல்லது துர்நாற்றம் வீசும் புகை மேகமாக இருக்கலாம். ATMega16 ஐ வாங்கும் போது, ​​அது ஒரு பெரிய 40-pin DIP தொகுப்பில் வருகிறது என்பதை உறுதி செய்து கொள்ளவும், மேலும் அதைச் செருகக்கூடிய ஒரு சாக்கெட்டையும் வாங்கவும். அதனுடன் வேலை செய்ய, உங்களுக்கு கூடுதல் சாதனங்களும் தேவைப்படும்: LED கள், பொத்தான்கள், இணைப்பிகள் போன்றவை.

ATMega16 பலதரப்பட்ட செயல்பாடுகளைக் கொண்டுள்ளது. அதன் சில பண்புகள் இங்கே:

  • அதிகபட்ச கடிகார அதிர்வெண் - 16 மெகா ஹெர்ட்ஸ் (ATMega16L க்கு 8 மெகா ஹெர்ட்ஸ்)
  • பெரும்பாலான கட்டளைகள் ஒரு கடிகார சுழற்சியில் செயல்படுத்தப்படுகின்றன
  • 32 8-பிட் வேலைப் பதிவேடுகள்
  • 4 முழு 8-பிட் I/O போர்ட்கள்
  • இரண்டு 8-பிட் டைமர்/கவுண்டர்கள் மற்றும் ஒரு 16-பிட்
  • 10-பிட் அனலாக்-டு-டிஜிட்டல் மாற்றி (ADC)
  • 1 மெகா ஹெர்ட்ஸ் உள்ள உள் கடிகார ஜெனரேட்டர்
  • அனலாக் ஒப்பீட்டாளர்
  • இடைமுகங்கள் SPI, I2C, TWI, RS-232, JTAG
  • சுற்று நிரலாக்கம் மற்றும் சுய நிரலாக்கம்
  • துடிப்பு அகல பண்பேற்றம் (PWM) தொகுதி

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

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

இதற்கு உங்களுக்கு என்ன தேவைப்படும்?

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

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

இப்போது நாம் எந்த கால்களில் ஆர்வமாக உள்ளோம் என்பதை விளக்குவோம்.

  • VCC - மின்சாரம் இங்கு (4.5 - 5.5 V) உறுதிப்படுத்தப்பட்ட மூலத்திலிருந்து வழங்கப்படுகிறது.
  • GND - தரை
  • ரீசெட் - மீட்டமை (குறைந்த மின்னழுத்த அளவில்)
  • XTAL1, XTAL2 - குவார்ட்ஸ் ரெசனேட்டர் இங்கே இணைக்கப்பட்டுள்ளது
  • PA, PB, PC, PD - உள்ளீடு/வெளியீட்டு போர்ட்கள் (முறையே A, B, C மற்றும் D).

7-11 V DC உற்பத்தி செய்யும் எதையும் சக்தி மூலமாகப் பயன்படுத்தலாம். MK இன் நிலையான செயல்பாட்டிற்கு, ஒரு உறுதிப்படுத்தப்பட்ட மின்சாரம் தேவைப்படுகிறது. ஒரு நிலைப்படுத்தியாக, நீங்கள் 7805 தொடர் மைக்ரோ சர்க்யூட்களைப் பயன்படுத்தலாம், இவை நேரியல் ஒருங்கிணைந்த நிலைப்படுத்திகள், இதன் உள்ளீடு 7-11 V நேரடி நிலையற்ற மின்னோட்டத்துடன் வழங்கப்படுகிறது, மேலும் வெளியீடு 5 V நிலைப்படுத்தப்பட்ட மின்னோட்டமாகும். 7805 க்கு முன்னும் பின்னும், நீங்கள் வடிகட்டி மின்தேக்கிகளை நிறுவ வேண்டும் (குறைந்த அதிர்வெண் குறுக்கீட்டை வடிகட்டுவதற்கு மின்னாற்பகுப்பு மற்றும் உயர் அதிர்வெண்களுக்கு பீங்கான்). நீங்கள் ஒரு நிலைப்படுத்தியைக் கண்டுபிடிக்க முடியாவிட்டால், நீங்கள் 4.5 V பேட்டரியை சக்தி மூலமாகப் பயன்படுத்தலாம். MK அதிலிருந்து நேரடியாக இயக்கப்பட வேண்டும்.

MK இணைப்பின் வரைபடம் கீழே உள்ளது:

இங்கே என்ன இருக்கிறது என்பதை இப்போது கண்டுபிடிப்போம்.

BQ1 என்பது குவார்ட்ஸ் ரெசனேட்டர் ஆகும், இது MK இன் இயக்க அதிர்வெண்ணை அமைக்கிறது. நீங்கள் 16 மெகா ஹெர்ட்ஸ் வரை எதையும் அமைக்கலாம், ஆனால் எதிர்காலத்தில் COM போர்ட்டுடன் வேலை செய்ய நாங்கள் திட்டமிட்டுள்ளதால், பின்வரும் அதிர்வெண்களுக்கு ரெசனேட்டர்களைப் பயன்படுத்த பரிந்துரைக்கிறேன்: 14.7456 MHz, 11.0592 MHz, 7.3725 MHz, 3.6864 MHz அல்லது 1 ,8432 MHz ( ஏன் என்பது தெளிவாகிவிடும்). நான் 11.0592 மெகா ஹெர்ட்ஸ் பயன்படுத்தினேன். அதிக அதிர்வெண், சாதனத்தின் அதிக வேகம் என்பது தெளிவாகிறது.

R1 என்பது ரீசெட் உள்ளீட்டில் 5 V மின்னழுத்தத்தை பராமரிக்கும் புல்-அப் மின்தடையமாகும். இந்த உள்ளீட்டில் குறைந்த மின்னழுத்த நிலை மீட்டமைப்பைக் குறிக்கிறது. மீட்டமைத்த பிறகு, MK துவங்குகிறது (10 - 15 ms) மற்றும் நிரலை மீண்டும் இயக்கத் தொடங்குகிறது. இது உயர் மின்மறுப்பு உள்ளீடு என்பதால், நீங்கள் அதை "காற்றில் தொங்கவிட முடியாது" - அதில் ஒரு சிறிய பிக்கப் MK இன் எதிர்பாராத மீட்டமைப்புக்கு வழிவகுக்கும். R1 என்பது இதுதான். நம்பகத்தன்மைக்காக, மின்தேக்கி C6 (20 μF க்கு மேல் இல்லை) நிறுவவும் பரிந்துரைக்கிறேன்.

SB1 - மீட்டமை பொத்தான்.

குவார்ட்ஸ் ரெசனேட்டர் மற்றும் வடிகட்டி மின்தேக்கி C3 ஆகியவை MK க்கு முடிந்தவரை நெருக்கமாக இருக்க வேண்டும் (5-7 செமீக்கு மேல் இல்லை), இல்லையெனில் கம்பிகளில் குறுக்கீடு ஏற்படலாம், இது MK இன் செயலிழப்புகளுக்கு வழிவகுக்கும்.

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

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

AVR நிரலாக்கத்திற்கான பல வளர்ச்சி சூழல்கள் உள்ளன. முதலாவதாக, இது AVR ஸ்டுடியோ - Atmel வழங்கும் அதிகாரப்பூர்வ நிரலாக்க அமைப்பு. அசெம்பிளி, சி மற்றும் சி++ ஆகியவற்றில் எழுதப்பட்ட அசெம்பிளர் மற்றும் டிபக் புரோகிராம்களில் எழுத இது உங்களை அனுமதிக்கிறது. IAR என்பது C, C++ மற்றும் அசெம்பிளி மொழியில் உள்ள ஒரு வணிக நிரலாக்க அமைப்பாகும். WinAVR ஒரு ஓப்பன் சோர்ஸ் கம்பைலர். AtmanAVR என்பது AVR க்கான நிரலாக்க அமைப்பாகும், இது கிட்டத்தட்ட விஷுவல் C++ 6 போன்ற இடைமுகத்துடன் உள்ளது. AtmanAVR ஆனது நிரல்களை பிழைத்திருத்தம் செய்ய உங்களை அனுமதிக்கிறது மற்றும் குறியீட்டை எழுதுவதை எளிதாக்கும் பல உதவி செயல்பாடுகளையும் கொண்டுள்ளது. இந்த நிரலாக்க அமைப்பு வணிகமானது, ஆனால், உரிமத்தின் படி, நீங்கள் அதை ஒரு மாதத்திற்கு இலவசமாகப் பயன்படுத்தலாம்.

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

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

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

இங்கே நாம் ஒரு குறிப்பிட்ட MK க்காக கம்பைலரை உள்ளமைப்போம். முதலில், நீங்கள் இலக்கு தாவலில் ATMega16 செயலி வகையைத் தேர்ந்தெடுக்க வேண்டும், நூலக கட்டமைப்பு தாவலில் உள்ள I/O-include files தேர்வுப்பெட்டியில் உள்ள Enable bit வரையறைகளை சரிபார்க்கவும் (இதன் மூலம் நிரல் குறியீட்டில் பல்வேறு MK பதிவேடுகளின் பிட் பெயர்களைப் பயன்படுத்தலாம். ), மற்றும் அங்கு C நூலக வகையைத் தேர்ந்தெடுக்கவும் /EU++. ICCAVR பிரிவில், மொழித் தாவலில் உள்ள மல்டிபைட் ஆதரவை இயக்கு தேர்வுப்பெட்டியை நீங்கள் சரிபார்க்க வேண்டும், மேலும் தேர்வுமுறை தாவலில் தேர்வுமுறையை முடக்கவும் (இல்லையெனில் அது எங்கள் முதல் நிரலை அழித்துவிடும்).

அடுத்து, XLINK வகையைத் தேர்ந்தெடுக்கவும். இங்கே நீங்கள் தொகுக்கப்பட்ட கோப்பின் வடிவமைப்பை தீர்மானிக்க வேண்டும். தலைப்பில் விவரிக்கப்பட்டுள்ளபடி, பிழைத்திருத்த பயன்முறைக்கான விருப்பங்களை நாங்கள் இப்போது அமைப்பதால், பிழைத்திருத்தக் கோப்பை வெளியீட்டாகப் பெற வேண்டும். பின்னர் அதை ஏவிஆர் ஸ்டுடியோவில் திறப்போம். இதைச் செய்ய, நீங்கள் extension.cof ஐத் தேர்ந்தெடுக்க வேண்டும், மேலும் கோப்பு வகை ubrof 7 ஆகும்.

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

மீண்டும் விருப்பங்களுக்குச் செல்லவும், XLINK தவிர அனைத்து அளவுருக்களும் ஒரே மாதிரியாக அமைக்கப்படும். XLINK இல், நீட்டிப்பை .hex ஆகவும், கோப்பு வடிவத்தை intel-standart ஆகவும் மாற்றவும்.

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

#சேர்க்கிறது"iom16.h" குறுகிய கையொப்பமிடாத முழு எண்ணாக நான்; வெற்றிடமானதுமுக்கிய( வெற்றிடமானது) (DDRB = 255; PORTB = 0; போது(1) { என்றால்(PORTB == 255) PORTB = 0; வேறுபோர்ட்பி++; க்கான(i=0; i

கோப்பு "iom16.h" கோப்புறையில் உள்ளது (C:\Program Files)\IAR Systems\Embedded Workbench 3.2\avr\inc. நீங்கள் மற்றொரு MK ஐப் பயன்படுத்துகிறீர்கள் என்றால், எடுத்துக்காட்டாக, ATMega64, பின்னர் "iom64.h" கோப்பைத் தேர்ந்தெடுக்கவும். இந்த தலைப்புக் கோப்புகள் MK பற்றிய தகவல்களைச் சேமிக்கின்றன: பதிவேடுகளின் பெயர்கள், பதிவேடுகளில் உள்ள பிட்கள் மற்றும் குறுக்கீடுகளின் பெயர்கள். போர்ட் A, B, C அல்லது D இன் ஒவ்வொரு தனி முள் ஒரு உள்ளீடாகவோ அல்லது வெளியீட்டாகவோ செயல்பட முடியும். இது தரவு திசைப் பதிவேட்டால் (DDR) தீர்மானிக்கப்படுகிறது. 1 காலை ஒரு வெளியீட்டாக ஆக்குகிறது, 0 ஒரு உள்ளீடு. எனவே, அமைப்பதன் மூலம், எடுத்துக்காட்டாக, DDRA = 13, நாம் "கால்கள்" PB0, PB2, PB3 வெளியீடுகளை உருவாக்குகிறோம், மீதமுள்ளவை - உள்ளீடுகள், ஏனெனில் பைனரியில் 13 என்பது 00001101 ஆகும்.

PORTB என்பது போர்ட் பின்களின் நிலையை தீர்மானிக்கும் ஒரு பதிவேடு ஆகும். அங்கு 0 என்று எழுதி, அனைத்து வெளியீடுகளிலும் உள்ள மின்னழுத்தத்தை 0 V ஆக அமைக்கிறோம். பிறகு முடிவில்லாத வளையம் உள்ளது. MK ஐ நிரலாக்கும்போது, ​​அவை எப்போதும் ஒரு முடிவற்ற சுழற்சியை உருவாக்குகின்றன, அதில் MK அதை மீட்டமைக்கும் வரை அல்லது குறுக்கீடு ஏற்படும் வரை சில செயல்களைச் செய்கிறது. இந்த சுழற்சியில் அவர்கள் "பின்னணி குறியீடு" என்று எழுதுகிறார்கள், இது MK கடைசியாக செயல்படுத்துகிறது. இது, எடுத்துக்காட்டாக, ஒரு காட்சியில் தகவலைக் காட்டுவதாக இருக்கலாம். எங்கள் விஷயத்தில், PORTB பதிவேட்டின் உள்ளடக்கங்கள் நிரம்பும் வரை அதிகரிக்கப்படும். அதன் பிறகு எல்லாம் மீண்டும் தொடங்குகிறது. இறுதியாக, சுழற்சிக்கான பத்தாயிரம் சுழற்சி. போர்ட் B இன் நிலையை மாற்றுவதில் ஒரு புலப்படும் தாமதத்தை உருவாக்க இது தேவைப்படுகிறது.



இப்போது இந்த கோப்பை Prog1.c என திட்ட கோப்புறையில் சேமித்து, iom16.h கோப்பை திட்ட கோப்புறையில் நகலெடுத்து, Project/Add Files என்பதைத் தேர்ந்தெடுத்து, "iom16.h" மற்றும் "Prog1.c" ஐச் சேர்க்கவும். வெளியீட்டைத் தேர்ந்தெடுத்து, F7 ஐ அழுத்தவும், நிரல் தொகுக்கிறது மற்றும் செய்தி தோன்றும்:


பிழைகளின் மொத்த எண்ணிக்கை: 0
எச்சரிக்கைகளின் மொத்த எண்ணிக்கை: 0

எனது புரோகிராமரின் புகைப்படம் இதோ:

AVReal புரோகிராமரைப் பதிவிறக்கவும். Prog1.hex கோப்பு இருக்கும் Release/exe கோப்புறையில் அதை (AVReal32.exe) நகலெடுக்கவும். நாங்கள் MK க்கு மின்சாரம் வழங்குகிறோம், நிரலாக்க கேபிளை இணைக்கிறோம். தூர மேலாளரைத் திறக்கவும் (MK ஐ ப்ளாஷ் செய்வது மிகவும் வசதியானது), இந்த கோப்புறைக்குச் சென்று, Ctrl + O ஐ அழுத்தவும். எங்களிடம் முற்றிலும் புதிய எம்.கே இருப்பதால், நாங்கள் திணிக்கிறோம்

avreal32.exe +MEGA16 -o11.0592MHZ -p1 -fblev=0,jtagen=1,cksel=F,sut=1 –w

நீங்கள் 11059200 ஹெர்ட்ஸ் பயன்படுத்தவில்லை என்றால் சரியான அதிர்வெண்ணை உள்ளிட மறக்காதீர்கள்! அதே நேரத்தில், அழைக்கப்படும் உருகிகள் - அதன் செயல்பாட்டைக் கட்டுப்படுத்தும் பதிவுகள் (உள் ஜெனரேட்டர், Jtag, முதலியன பயன்பாடு). இதற்குப் பிறகு, அது முதல் நிரலைப் பெற தயாராக உள்ளது. புரோகிராமருக்கு பயன்படுத்தப்பட்ட LPT போர்ட், அதிர்வெண், கோப்பு பெயர் மற்றும் பிற அளவுருக்கள் கொடுக்கப்பட்டுள்ளன (அவை அனைத்தும் AVReal இன் விளக்கத்தில் பட்டியலிடப்பட்டுள்ளன). நாங்கள் டயல் செய்கிறோம்:

Avreal32.exe +Mega16 -o11.0592MHz -p1 -e -w -az -% Prog1.hex

இணைப்பு சரியாக இருந்தால், புரோகிராமர் வெற்றிகரமான நிரலாக்கத்தைப் புகாரளிப்பார். இது முதல் முறையாக வேலை செய்யும் என்பதற்கு எந்த உத்தரவாதமும் இல்லை (முதல் முறையாக நீங்கள் நிரலை அழைக்கும் போது). நானே சில சமயங்களில் இரண்டாவது முறை நிரலாக்கப்படுகிறேன். ஒருவேளை LPT போர்ட் தவறாக இருக்கலாம் அல்லது கேபிளில் குறுக்கீடு இருக்கலாம். சிக்கல்கள் ஏற்பட்டால், உங்கள் கேபிளை கவனமாக சரிபார்க்கவும். எனது சொந்த அனுபவத்திலிருந்து, 60% செயலிழப்புகள் சரியான இடத்தில் தொடர்பு இல்லாததால், 20% தேவையற்ற ஒன்றின் இருப்புடன், மற்றொரு 15% தவறான விஷயத்திற்கு தவறான சாலிடரிங் மூலம் தொடர்புடையது என்பதை நான் அறிவேன். மற்ற அனைத்தும் தோல்வியுற்றால், புரோகிராமரின் விளக்கத்தைப் படித்து, பைட் பிளாஸ்டரை உருவாக்க முயற்சிக்கவும்.

எல்லாம் உங்களுக்காக வேலை செய்கிறது என்று வைத்துக்கொள்வோம். நீங்கள் இப்போது MK இன் போர்ட் B உடன் எட்டு LED களை இணைத்தால் (MK அணைக்கப்பட்ட நிலையில் இதைச் செய்யுங்கள், மேலும் LED களுடன் தொடரில் 300-400 Ohm மின்தடையங்களைச் சேர்ப்பது நல்லது) மற்றும் சக்தியைப் பயன்படுத்தினால், ஒரு சிறிய அதிசயம் நடக்கும் - ஒரு " அலை” அவர்கள் மூலம் ஓடும்!

© Kiselev ரோமன்
மே 2007

டிசம்பர் 2015

1. முன்மொழியப்பட்ட முறையின் நன்மைகள்

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

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

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

ஒரு புரோகிராமர் இல்லாமல் MK இல் ஒரு நிரலை எழுத, நமக்கு USB-RS232TTL போர்ட் மாற்றியும் தேவை. USB-RS232TTL மாற்றி, "உண்மையான" ஒன்றிலிருந்து வேறுபட்ட COM போர்ட்டை உருவாக்க USB போர்ட்டைப் பயன்படுத்த உங்களை அனுமதிக்கிறது, அதன் உள்ளீடுகள் மற்றும் வெளியீடுகள் TTL தருக்க நிலைகளைப் பயன்படுத்துகின்றன, அதாவது 0 முதல் 5 வோல்ட் வரையிலான மின்னழுத்தம் ( நீங்கள் "" கட்டுரையில் மேலும் படிக்கலாம்). எப்படியிருந்தாலும், அத்தகைய மாற்றி உங்கள் "வீட்டில்" வைத்திருப்பது பயனுள்ளதாக இருக்கும், எனவே உங்களிடம் ஏற்கனவே இல்லையென்றால், அது நிச்சயமாக வாங்குவதற்கு மதிப்புள்ளது. தருக்க நிலைகளைப் பொறுத்தவரை, எங்கள் விஷயத்தில் TTL என்பது வழக்கமான COM போர்ட்டை விட ஒரு நன்மையாகும், ஏனெனில் அத்தகைய போர்ட்டின் உள்ளீடுகள் மற்றும் வெளியீடுகள் ATtiny மற்றும் ATmega உட்பட 5 V ஆல் இயக்கப்படும் எந்த மைக்ரோகண்ட்ரோலருடன் நேரடியாக இணைக்கப்படலாம். ஆனால் வழக்கமான COM போர்ட்டைப் பயன்படுத்த முயற்சிக்காதீர்கள் - அவை -12 முதல் +12 V (அல்லது -15...+15V) வரையிலான மின்னழுத்தங்களைப் பயன்படுத்துகின்றன. இந்த வழக்கில், மைக்ரோகண்ட்ரோலருடன் நேரடி இணைப்பு ஏற்றுக்கொள்ள முடியாதது !!!

புரோகிராமரின் செயல்பாடுகளைச் செயல்படுத்தும் பெர்பெடியம் எம் திட்டத்திற்கான ஸ்கிரிப்டை உருவாக்கும் யோசனை, எம்.கே ஃபார்ம்வேருக்கான சில தீர்வுகளை வழங்கும் இணையத்தில் பல வெளியீடுகளைப் படித்த பிறகு எழுந்தது. ஒவ்வொரு சந்தர்ப்பத்திலும், கடுமையான குறைபாடுகள் அல்லது அதிகப்படியான சிரமங்கள் கண்டுபிடிக்கப்பட்டன. மைக்ரோகண்ட்ரோலரைக் கொண்ட புரோகிராமர் சர்க்யூட்களை நான் அடிக்கடி கண்டேன், அதே நேரத்தில், இதுபோன்ற ஆலோசனைகள் மிகவும் தீவிரமாக வழங்கப்பட்டன: “... இந்த புரோகிராமருக்கான மைக்ரோகண்ட்ரோலரை நிரல் செய்ய நமக்குத் தேவைப்படும்... அது சரி - மற்றொரு புரோகிராமர்!” அடுத்து, ஒரு நண்பரிடம் செல்லவும், கட்டண சேவையைப் பார்க்கவும் பரிந்துரைக்கப்பட்டது. இந்த நோக்கங்களுக்காக நெட்வொர்க்கில் விநியோகிக்கப்பட்ட மென்பொருளின் தரமும் சுவாரஸ்யமாக இல்லை - செயல்பாடு மற்றும் பயனர் இடைமுகத்தின் "மேகம்" ஆகிய இரண்டிலும் பல சிக்கல்கள் கவனிக்கப்பட்டன. ஒரு நிரலை எவ்வாறு பயன்படுத்துவது என்பதைப் புரிந்துகொள்வதற்கு இது பெரும்பாலும் நிறைய நேரம் எடுக்கும் - எளிமையான செயல்களைச் செய்வதற்கு கூட அது படிக்கப்பட வேண்டும். மற்றொரு நிரல் நீண்ட நேரம் மற்றும் விடாமுயற்சியுடன் ஏதாவது செய்ய முடியும், ஆனால் முழு ஃபார்ம்வேரும் முழுவதுமாக முடிக்கப்பட்டு, அடுத்தடுத்த சோதனை வாசிப்புக்குப் பிறகுதான் MK க்கு எதுவும் எழுதப்படவில்லை என்பதை பயனர் அறிந்துகொள்கிறார். பின்வரும் பிரச்சனையும் ஏற்படுகிறது: பயனர் தனது MK ஐ ஆதரிக்கும் படிகங்களின் பட்டியலிலிருந்து தேர்ந்தெடுக்க முயற்சிக்கிறார், ஆனால் அது பட்டியலில் இல்லை. இந்த வழக்கில், நீங்கள் நிரலைப் பயன்படுத்த முடியாது - காணாமல் போன MK களின் பட்டியலில் சேர்ப்பது, ஒரு விதியாக, வழங்கப்படவில்லை. கூடுதலாக, பட்டியலிலிருந்து ஒரு கட்டுப்படுத்தியை கைமுறையாகத் தேர்ந்தெடுப்பது விசித்திரமாகத் தெரிகிறது, பல சந்தர்ப்பங்களில் புரோகிராமர் MK வகையை தீர்மானிக்க முடியும் என்பதைக் கருத்தில் கொண்டு. இவை அனைத்தும் ஏற்கனவே உள்ள தயாரிப்புகளில் சேற்றை வீசுவதற்காக அல்ல, ஆனால் இந்த கட்டுரையில் விவரிக்கப்பட்டுள்ள Perpetuum M திட்டத்திற்கான ஸ்கிரிப்ட் தோன்றுவதற்கான காரணத்தை விளக்குவதற்காக. சிக்கல் உண்மையில் உள்ளது, மேலும் இது முதன்மையாக மைக்ரோகண்ட்ரோலர்களின் உலகில் தங்கள் முதல் படியை எடுப்பதற்காக இந்த "சுவரை" கடக்க எப்போதும் நிர்வகிக்காத தொடக்கநிலையாளர்களைப் பற்றியது. முன்மொழியப்பட்ட ஸ்கிரிப்ட் மற்ற திட்டங்களில் காணப்படும் குறைபாடுகளை கணக்கில் எடுத்துக்கொள்கிறது. அல்காரிதத்தின் செயல்பாட்டின் அதிகபட்ச "வெளிப்படைத்தன்மை" செயல்படுத்தப்பட்டுள்ளது, கற்றல் தேவையில்லாத மிகவும் எளிமையான பயனர் இடைமுகம் மற்றும் குழப்பம் மற்றும் "தவறான விஷயத்தை கிளிக்" செய்ய வாய்ப்பில்லை. தேவையான MK ஆதரிக்கப்படுபவற்றில் இல்லை என்றால், MK டெவலப்பரின் இணையதளத்தில் இருந்து பதிவிறக்கம் செய்யப்பட்ட ஆவணங்களிலிருந்து தேவையான தரவை எடுத்து, அதன் விளக்கத்தை நீங்களே சேர்க்கலாம். மேலும், மிக முக்கியமாக, ஸ்கிரிப்ட் ஆய்வு மற்றும் மாற்றத்திற்காக திறக்கப்பட்டுள்ளது. எவரும் அதை டெக்ஸ்ட் எடிட்டரில் திறக்கலாம், தங்கள் விருப்பப்படி படிக்கலாம் மற்றும் திருத்தலாம், ஏற்கனவே உள்ள செயல்பாடுகளை தங்கள் சுவைக்கு மாற்றலாம் மற்றும் விடுபட்டவற்றைச் சேர்க்கலாம்.

ஸ்கிரிப்ட்டின் முதல் பதிப்பு ஜூன் 2015 இல் உருவாக்கப்பட்டது. இந்த பதிப்பு Atmel இன் ATtiny மற்றும் ATmega தொடர் மைக்ரோகண்ட்ரோலர்களுக்கு மட்டுமே ஆதரவு அளிக்கிறது : EEPROM எழுதுதல் மற்றும் படித்தல், PIC கன்ட்ரோலர்களுக்கான ஆதரவை செயல்படுத்துதல் போன்றவற்றைச் சேர்க்கவும். இந்த காரணத்திற்காக, ஸ்கிரிப்ட் இன்னும் வெளியிடப்படவில்லை, ஆனால் நேரமின்மை காரணமாக, திட்டத்தை செயல்படுத்துவதில் தாமதம் ஏற்பட்டது, அதனால் சிறந்ததாக மாறாது நன்மையின் எதிரி, ஏற்கனவே உள்ள பதிப்பை வெளியிட முடிவு செய்யப்பட்டது. ஏற்கனவே செயல்படுத்தப்பட்ட செயல்பாடுகள் போதுமானதாக இல்லை என்றால், வருத்தப்பட வேண்டாம். இந்த விஷயத்தில், நீங்கள் விரும்பிய செயல்பாட்டை நீங்களே சேர்க்க முயற்சி செய்யலாம். நான் மறைக்க மாட்டேன்: இந்த ஸ்கிரிப்டை உருவாக்கும் யோசனைக்கு ஆரம்பத்தில் ஒரு கல்வி அர்த்தம் உள்ளது.அல்காரிதத்தைப் புரிந்துகொண்டு, அதில் உங்களுக்கென ஏதாவது ஒன்றைச் சேர்த்தால், நிரலாக்க பயன்முறையில் MK இன் செயல்பாட்டை நீங்கள் நன்றாகப் புரிந்து கொள்ள முடியும். எதிர்காலத்தில், உடைந்த காரின் முன் ஒரு பெண்ணின் நிலையை நீங்கள் காண மாட்டீர்கள், சிந்தனையுடன் அதன் உட்புறத்தைப் பார்த்து, அது ஏன் "வேலை செய்யாது" என்று புரியவில்லை.

2. நிரலாக்க முறையில் MK இடைமுகம்

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

ஆனால், SPI ஐ உருவாக்க தேவையான சிக்னல்களை நாங்கள் பரிசீலிக்கத் தொடங்கும் முன், நாங்கள் பல முன்பதிவுகளைச் செய்வோம். மைக்ரோகண்ட்ரோலரில் உள்ளமைவு பிட்கள் உள்ளன. இவை மாற்று சுவிட்சுகள் போன்றவையாகும், இது திட்டத்தின் தேவைகளுக்கு ஏற்ப மைக்ரோ சர்க்யூட்டின் சில பண்புகளை மாற்ற உங்களை அனுமதிக்கிறது. உடல் ரீதியாக, இவை ஒரு நிரல் எழுதப்பட்டதைப் போன்ற நிலையற்ற நினைவக செல்கள். வித்தியாசம் என்னவென்றால், அவற்றில் மிகக் குறைவு (ATmega க்கு மூன்று பைட்டுகள் வரை), மேலும் அவை எந்த நினைவகத்தின் முகவரி இடத்தின் பகுதியாக இல்லை. MK நிரலாக்க பயன்முறையில் உள்ளமைவுத் தரவை எழுதுதல் மற்றும் படிப்பது தனித்தனி கட்டளைகளால் செய்யப்படுகிறது. இப்போது சில கட்டமைப்பு பிட்கள் SPI ஐப் பயன்படுத்துவதற்கான திறனைப் பாதிக்கின்றன என்பதைக் கவனத்தில் கொள்ள வேண்டும். அவற்றின் சில மதிப்புகளுடன், SPI ஐப் பயன்படுத்த முடியாது என்று மாறிவிடும். அத்தகைய மைக்ரோகண்ட்ரோலரை நீங்கள் கண்டால், இந்த கட்டுரையில் முன்மொழியப்பட்ட முறை உதவாது. இந்த வழக்கில், நீங்கள் புரோகிராமரில் உள்ள உள்ளமைவு பிட்களின் அமைப்புகளை மாற்ற வேண்டும், இது வேறுபட்ட நிரலாக்க பயன்முறையை ஆதரிக்கிறது அல்லது வேறு மைக்ரோகண்ட்ரோலரைப் பயன்படுத்தவும். ஆனால் இந்த சிக்கல் பயன்படுத்தப்பட்ட MK களுக்கு மட்டுமே பொருந்தும், அல்லது யாரோ ஏற்கனவே தோல்வியுற்றவர்களுடன் "விளையாடினார்". உண்மை என்னவென்றால், புதிய MCUக்கள் SPI ஐப் பயன்படுத்துவதைத் தடுக்காத கட்டமைப்பு பிட் அமைப்புகளுடன் வருகின்றன. Perpetuum M நிரலுக்கான புரோகிராமர் ஸ்கிரிப்ட்டின் சோதனை முடிவுகளால் இது உறுதிப்படுத்தப்படுகிறது, இதன் போது நான்கு வெவ்வேறு MKகள் (ATmega8, ATmega128, ATtiny13, ATtiny44) வெற்றிகரமாக ஒளிரப்பட்டன. அவர்கள் அனைவரும் புதியவர்கள். கட்டமைப்பு பிட்களின் ஆரம்ப அமைப்பு ஆவணங்களுடன் ஒத்துப்போனது மற்றும் SPI பயன்பாட்டில் தலையிடவில்லை.

மேலே கொடுக்கப்பட்ட, நீங்கள் பின்வரும் பிட்கள் கவனம் செலுத்த வேண்டும். SPIEN பிட் SPI இன் பயன்பாட்டை வெளிப்படையாக அனுமதிக்கிறது அல்லது மறுக்கிறது, எனவே எங்கள் விஷயத்தில் அதன் மதிப்பு செயல்படுத்தப்பட வேண்டும். RSTDISBL பிட் மைக்ரோ சர்க்யூட்டின் (முன்பே தீர்மானிக்கப்பட்ட) வெளியீடுகளில் ஒன்றை "ரீசெட்" சிக்னலின் உள்ளீடாக மாற்றும் திறன் கொண்டது, அல்லது அதைத் திருப்பாமல் (இந்த பிட்டில் எழுதப்பட்ட மதிப்பைப் பொறுத்து). எங்கள் விஷயத்தில், "மீட்டமை" உள்ளீடு அவசியம் (அது இல்லாவிட்டால், SPI வழியாக MK ஐ நிரலாக்க பயன்முறைக்கு மாற்ற முடியாது). கடிகார சமிக்ஞையின் மூலத்தைக் குறிப்பிடும் CKSEL குழுவின் பிட்களும் உள்ளன. அவை SPI ஐப் பயன்படுத்துவதைத் தடுக்காது, ஆனால் அவை நினைவில் கொள்ளப்பட வேண்டும், ஏனென்றால் கடிகார துடிப்புகள் இல்லாவிட்டால் அல்லது கொடுக்கப்பட்ட SPI வேகத்திற்கு ஏற்றுக்கொள்ளக்கூடியதை விட அவற்றின் அதிர்வெண் குறைவாக இருந்தால், நல்லது எதுவும் நடக்காது. பொதுவாக, உள் RC ஆஸிலேட்டரைக் கொண்ட புதிய MCUகள், CKSEL குழு பிட்களைப் பயன்படுத்தக் கட்டமைக்கப்பட்டிருக்கும். இது எங்களுக்கு மிகவும் பொருத்தமானது - எங்கள் பங்கில் கூடுதல் முயற்சி இல்லாமல் கடிகாரம் வழங்கப்படுகிறது. குவார்ட்ஸ் ரெசனேட்டரை சாலிடர் செய்யவோ அல்லது வெளிப்புற ஜெனரேட்டரை இணைக்கவோ தேவையில்லை. குறிப்பிட்ட பிட்கள் வேறு அமைப்பைக் கொண்டிருந்தால், அமைப்பிற்கு ஏற்ப கடிகாரத்தை நீங்கள் கவனித்துக் கொள்ள வேண்டும். இந்த வழக்கில், ஒரு குவார்ட்ஸ் ரெசனேட்டர் அல்லது வெளிப்புற கடிகார ஜெனரேட்டரை MCU உடன் இணைப்பது அவசியமாக இருக்கலாம். ஆனால் இது எவ்வாறு செய்யப்படுகிறது என்பதை இந்த கட்டுரையில் நாம் கருத்தில் கொள்ள மாட்டோம். இந்த கட்டுரையில் உள்ள நிரலாக்கத்திற்கான MK ஐ இணைப்பதற்கான எடுத்துக்காட்டுகள் எளிமையான வழக்குக்காக வடிவமைக்கப்பட்டுள்ளன.

அரிசி. 1. நிரலாக்க முறையில் SPI வழியாக தரவு பரிமாற்றம்

இப்போது ATmega128A MKக்கான ஆவணத்திலிருந்து எடுக்கப்பட்ட படம் 1 க்கு வருவோம். இது MK க்கு ஒரு பைட்டை அனுப்பும் மற்றும் MK இலிருந்து ஒரு பைட்டை ஒரே நேரத்தில் பெறும் செயல்முறையைக் காட்டுகிறது. இந்த இரண்டு செயல்முறைகளும், நாம் பார்ப்பது போல், புரோகிராமரிலிருந்து மைக்ரோகண்ட்ரோலருக்கு அதன் SCK உள்ளீட்டில் வழங்கப்பட்ட அதே கடிகார பருப்புகளைப் பயன்படுத்துகின்றன - மைக்ரோ சர்க்யூட்டின் ஊசிகளில் ஒன்று, அத்தகைய பங்கு SPI நிரலாக்க பயன்முறையில் ஒதுக்கப்பட்டுள்ளது. மேலும் இரண்டு சிக்னல் கோடுகள் தரவு வரவேற்பு மற்றும் பரிமாற்றத்தை ஒரு கடிகார சுழற்சிக்கு ஒரு பிட் வழங்குகிறது. MOSI உள்ளீடு மூலம், தரவு மைக்ரோகண்ட்ரோலரில் நுழைகிறது, மேலும் MISO வெளியீட்டில் இருந்து படிக்கப்பட்ட தரவு எடுக்கப்படுகிறது. SCK இலிருந்து MISO மற்றும் MOSI வரை வரையப்பட்ட இரண்டு புள்ளியிடப்பட்ட கோடுகளைக் கவனியுங்கள். MOSI உள்ளீட்டில் அமைக்கப்பட்ட தரவு பிட்டை மைக்ரோகண்ட்ரோலர் எந்த நேரத்தில் "விழுங்குகிறது" என்பதையும், எந்த நேரத்தில் அது MISO வெளியீட்டிற்கு அதன் சொந்த தரவு பிட்டை அமைக்கிறது என்பதையும் அவை காட்டுகின்றன. எல்லாம் மிகவும் எளிமையானது. ஆனால் MK ஐ நிரலாக்க பயன்முறையில் உள்ளிட, எங்களுக்கு இன்னும் ரீசெட் சிக்னல் தேவை. பொதுவான GND கம்பி மற்றும் VCC மின்சாரம் பற்றி மறந்துவிடக் கூடாது. மொத்தத்தில், SPI வழியாக அதன் ஃபார்ம்வேரை ப்ளாஷ் செய்ய 6 கம்பிகள் மட்டுமே மைக்ரோகண்ட்ரோலருடன் இணைக்கப்பட வேண்டும் என்று மாறிவிடும். கீழே இதை இன்னும் விரிவாக பகுப்பாய்வு செய்வோம், ஆனால் SPI வழியாக நிரலாக்க பயன்முறையில் MK உடன் தரவு பரிமாற்றம் 4 பைட்டுகளின் பாக்கெட்டுகளில் செய்யப்படுகிறது என்பதை இப்போது சேர்ப்போம். ஒவ்வொரு பாக்கெட்டின் முதல் பைட் அடிப்படையில் முற்றிலும் அறிவுறுத்தல் குறியாக்கத்திற்கு அர்ப்பணிக்கப்பட்டுள்ளது. இரண்டாவது பைட், முதல் பைட்டைப் பொறுத்து, கட்டளைக் குறியீட்டின் தொடர்ச்சியாகவோ அல்லது முகவரியின் ஒரு பகுதியாகவோ இருக்கலாம் அல்லது தன்னிச்சையான மதிப்பைக் கொண்டிருக்கலாம். மூன்றாவது பைட் முகவரிகளை அனுப்புவதற்கு முதன்மையாகப் பயன்படுத்தப்படுகிறது, ஆனால் பல வழிமுறைகளில் தன்னிச்சையான மதிப்பைக் கொண்டிருக்கலாம். நான்காவது பைட் பொதுவாக தரவை அனுப்புகிறது அல்லது தன்னிச்சையான மதிப்பைக் கொண்டுள்ளது. நான்காவது பைட்டின் பரிமாற்றத்துடன், சில கட்டளைகள் மைக்ரோகண்ட்ரோலரிலிருந்து வரும் தரவைப் பெறுகின்றன. ஒவ்வொரு கட்டளைக்கான விவரங்களையும் "SPI சீரியல் புரோகிராமிங் இன்ஸ்ட்ரக்ஷன் செட்" எனப்படும் அட்டவணையில் உள்ள கட்டுப்பாட்டு ஆவணத்தில் காணலாம். இப்போதைக்கு, கன்ட்ரோலருடனான முழு பரிமாற்றமும் 32-பிட் பாக்கெட்டுகளின் வரிசையிலிருந்து கட்டமைக்கப்பட்டுள்ளது என்பதை மட்டுமே நாங்கள் கவனிக்கிறோம், ஒவ்வொன்றிலும் பயனுள்ள தகவல்கள் ஒன்றுக்கு மேற்பட்ட பைட்டுகள் அனுப்பப்படவில்லை. இது மிகவும் உகந்ததல்ல, ஆனால் ஒட்டுமொத்தமாக இது நன்றாக வேலை செய்கிறது.

3. நிரலாக்கத்திற்காக MK ஐ இணைக்கிறது

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

இணையத்தில் நீங்கள் அடிக்கடி இத்தகைய மாற்றிகள் தாழ்வானவை மற்றும் தீவிரமான எதுவும் செய்ய முடியாது என்ற தகவலைக் காணலாம். ஆனால் பெரும்பாலான மாற்றி மாதிரிகள் குறித்து, இந்த கருத்து தவறானது. ஆம், நிலையான COM போர்ட்டுடன் (உதாரணமாக, TXD மற்றும் RXD மட்டும்) அனைத்து உள்ளீடுகளும் வெளியீடுகளும் இல்லாத மாற்றிகள் விற்பனையில் உள்ளன, அதே சமயம் பிரிக்க முடியாத வடிவமைப்பு (மைக்ரோ சர்க்யூட் பிளாஸ்டிக்கால் நிரப்பப்பட்டுள்ளது - இது அதன் ஊசிகளை அடைய இயலாது). ஆனால் இவை வாங்கத் தகுதியானவை அல்ல. சில சந்தர்ப்பங்களில், வயரிங் நேரடியாக சிப்பில் சாலிடரிங் செய்வதன் மூலம் காணாமல் போன போர்ட் உள்ளீடுகள் மற்றும் வெளியீடுகளைப் பெறலாம். அத்தகைய "மேம்படுத்தப்பட்ட" மாற்றியின் எடுத்துக்காட்டு படம் 2 இல் காட்டப்பட்டுள்ளது (சிப் PL-2303 - "" கட்டுரையில் அதன் ஊசிகளின் நோக்கம் பற்றிய கூடுதல் விவரங்கள்). இது மலிவான மாடல்களில் ஒன்றாகும், ஆனால் வீட்டில் வடிவமைப்புகளில் பயன்படுத்தும்போது அதன் சொந்த நன்மைகள் உள்ளன. COM போர்ட் போன்ற முடிவில் நிலையான ஒன்பது-முள் இணைப்பியுடன் கூடிய முழு அம்சமான அடாப்டர் கயிறுகளும் பரவலாக உள்ளன. அவை வழக்கமான COM போர்ட்டிலிருந்து TTL நிலைகளில் மட்டுமே வேறுபடுகின்றன மற்றும் மரபு மென்பொருள் மற்றும் சில பழைய வன்பொருளுடன் பொருந்தாதவை. PL-2303 இல் உள்ள மாற்றிகளுடன் ஒப்பிடும்போது CH34x சிப்பில் உள்ள வடங்கள் பல்வேறு தீவிர சோதனைகளில் தங்களை மிகவும் நம்பகமானதாகவும் நிலையானதாகவும் காட்டுகின்றன என்பதையும் கவனத்தில் கொள்ளலாம். இருப்பினும், சாதாரண பயன்பாட்டின் போது வேறுபாடு கவனிக்கப்படாது.

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

ATtiny13, ATtiny44, ATmega8 மற்றும் ATmega128 ஆகிய நான்கு வெவ்வேறு MK மாடல்களின் உதாரணத்தைப் பயன்படுத்தி மைக்ரோகண்ட்ரோலர் மற்றும் USB-RS232TTL மாற்றியை இணைக்கும் கொள்கையை இன்னும் விரிவாகப் பார்ப்போம். அத்தகைய இணைப்பின் பொதுவான வரைபடத்தை படம் 3 காட்டுகிறது. RS232 சிக்னல்கள் (RTS, TXD, DTR மற்றும் CTS) பொருத்தமற்ற முறையில் பயன்படுத்தப்படுகின்றன என்பது உங்களுக்கு ஆச்சரியமாக இருக்கலாம். ஆனால் அதைப் பற்றி கவலைப்பட வேண்டாம்: Perpetuum M நிரல் அவர்களுடன் நேரடியாக வேலை செய்ய முடியும் - வெளியீட்டு மதிப்புகளை அமைக்கவும் மற்றும் உள்ளீட்டு நிலைகளைப் படிக்கவும். எப்படியிருந்தாலும், CH34x மற்றும் PL-2303 சில்லுகளில் பரவலாகப் பயன்படுத்தப்படும் USB-RS232TTL மாற்றிகள் இந்தத் திறனை வழங்குகின்றன - இது சரிபார்க்கப்பட்டது. போர்ட்டை அணுக நிலையான விண்டோஸ் செயல்பாடுகள் பயன்படுத்தப்படுவதால், பிற பிரபலமான மாற்றிகளிலும் எந்த பிரச்சனையும் இருக்கக்கூடாது.

பொது வரைபடத்தில் காட்டப்பட்டுள்ள மின்தடையங்கள், கொள்கையளவில், நிறுவப்படாது, ஆனால் அவற்றை நிறுவுவது இன்னும் சிறந்தது. அவர்களின் நோக்கம் என்ன? மாற்றியின் TTL உள்ளீடுகள் மற்றும் வெளியீடுகள் மற்றும் மைக்ரோகண்ட்ரோலரின் ஐந்து வோல்ட் மின்சாரம் ஆகியவற்றைப் பயன்படுத்தி, தருக்க நிலைகளை ஒருங்கிணைக்க வேண்டிய அவசியத்திலிருந்து விடுபடுகிறோம் - எல்லாம் ஏற்கனவே சரியாக உள்ளது. இதன் பொருள் இணைப்புகள் நேரடியாக இருக்க முடியும். ஆனால் சோதனைகளின் போது , எதுவும் நடக்கலாம் உதாரணத்திற்கு, ஸ்க்ரூடிரைவர் விழ முடியாத இடத்தில் மட்டும் விழலாம், மேலும் ஷார்ட் சர்க்யூட் என்றால் ஷார்ட் சர்க்யூட் ஆகக்கூடாது. ஒரு "ஸ்க்ரூடிரைவர்" ஆக மாறுகிறது.இந்த நிலையில் உள்ள மின்தடையங்கள் சில நேரங்களில் விளைவுகளை குறைக்கின்றன. அவற்றின் நோக்கங்களில் ஒன்று சாத்தியமான வெளியீட்டு மோதலை அகற்றுவதாகும்.உண்மை என்னவென்றால், நிரலாக்கம் முடிந்ததும், மைக்ரோகண்ட்ரோலர் இயல்பான செயல்பாட்டு பயன்முறையில் செல்கிறது, மேலும் அது இருக்கலாம். MK இல் பதிவுசெய்யப்பட்ட நிரலின் படி, மாற்றியின் (RTS, TXD அல்லது DTR) வெளியீட்டில் இணைக்கப்பட்ட அதன் முள் ஒரு வெளியீட்டாகவும் மாறும். இந்த விஷயத்தில், நேரடியாக இணைக்கப்பட்ட இரண்டு வெளியீடுகள் "சண்டை" செய்தால் அது மிகவும் மோசமாக இருக்கும் - வெவ்வேறு தருக்க நிலைகளை அமைக்க முயற்சிக்கவும். அத்தகைய "போராட்டத்தில்," யாராவது "இழக்கலாம்", ஆனால் நாங்கள் அதை விரும்பவில்லை.

மூன்று மின்தடையங்களின் மதிப்புகள் 4.3 KOhm அளவில் தேர்ந்தெடுக்கப்படுகின்றன. மாற்றி வெளியீடு மற்றும் மைக்ரோகண்ட்ரோலர் உள்ளீடு ஆகியவற்றுக்கு இடையேயான இணைப்புகளுக்கு இது பொருந்தும். மின்தடையங்களின் துல்லியம் ஒரு பொருட்டல்ல: நீங்கள் அவற்றின் எதிர்ப்பை 1 KOhm ஆகக் குறைக்கலாம் அல்லது 10 KOhm ஆக அதிகரிக்கலாம் (ஆனால் இரண்டாவது வழக்கில், MK க்கு செல்லும் வழியில் நீண்ட கம்பிகளைப் பயன்படுத்தும் போது குறுக்கீடு ஏற்படும் ஆபத்து அதிகரிக்கிறது). மாற்றி உள்ளீடு (CTS) மற்றும் மைக்ரோகண்ட்ரோலர் வெளியீடு (MISO) ஆகியவற்றுக்கு இடையேயான தொடர்பைப் பொறுத்தவரை, 100 ஓம் மின்தடை இங்கே பயன்படுத்தப்படுகிறது. பயன்படுத்தப்படும் மாற்றியின் உள்ளீட்டின் தனித்தன்மையால் இது விளக்கப்படுகிறது. சோதனைகளின் போது, ​​PL-2303 மைக்ரோ சர்க்யூட்டில் ஒரு மாற்றி பயன்படுத்தப்பட்டது, இதன் உள்ளீடுகள், ஒப்பீட்டளவில் குறைந்த எதிர்ப்புடன் (பல நூறு ஓம்ஸ் வரிசையின்) நேர்மறை மின்வழங்கலுடன் இணைக்கப்பட்டுள்ளன. "புல்-அப் உடைக்க" நான் அத்தகைய சிறிய எதிர்ப்பைக் கொண்ட மின்தடையத்தை நிறுவ வேண்டியிருந்தது. இருப்பினும், நீங்கள் அதை நிறுவ வேண்டியதில்லை. மாற்றியில் இது எப்போதும் உள்ளீடு ஆகும். இது ஒரு வழியாக மாற முடியாது, அதாவது நிகழ்வுகளின் எந்தவொரு வளர்ச்சியிலும் வெளியேறும் மோதல்கள் இருக்காது.

அனலாக்-டு-டிஜிட்டல் மாற்றி (உதாரணமாக, ATmega8 அல்லது ATmega128) இயக்குவதற்கு சிப்பில் தனி AVCC முள் இருந்தால், அது பொதுவான VCC பவர் பின்னுடன் இணைக்கப்பட வேண்டும். சில ஐசிகள் ஒன்றுக்கு மேற்பட்ட விசிசி பவர் பின் அல்லது ஒன்றுக்கு மேற்பட்ட ஜிஎன்டிகளைக் கொண்டுள்ளன. எடுத்துக்காட்டாக, ATmega128 இல் 3 GND பின்கள் மற்றும் 2 VCC பின்கள் உள்ளன. நிரந்தர வடிவமைப்பில், ஒரே பெயரின் ஊசிகளை ஒருவருக்கொருவர் இணைப்பது நல்லது. எங்கள் விஷயத்தில், நிரலாக்கத்தின் போது, ​​நீங்கள் ஒவ்வொன்றும் ஒரு VCC மற்றும் GND பின்னைப் பயன்படுத்தலாம்.

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


இது தீவிரமானது அல்ல என்று சிலர் கூறலாம் - வயரிங் மீது இணைப்புகள். ஆனால் நீங்களும் நானும் விவேகமானவர்கள். மைக்ரோகண்ட்ரோலரை நிரல் செய்வதே எங்கள் குறிக்கோள், அதில் குறைந்தபட்ச நேரத்தையும் பிற வளங்களையும் செலவிடுவது, யாரோ ஒருவர் முன் காட்டுவது அல்ல. தரம் பாதிக்கப்படுவதில்லை. இந்த வழக்கில் "ஒயர்களில்" முறை மிகவும் பயனுள்ள மற்றும் நியாயமானது. கன்ட்ரோலரின் ஃபார்ம்வேரை ஒளிரச் செய்வது ஒரு முறை செயல்முறையாகும், எனவே அதை ரைன்ஸ்டோன்களால் மூடுவதில் எந்த அர்த்தமும் இல்லை. சர்க்யூட்டில் இருந்து (முடிக்கப்பட்ட தயாரிப்பில்) கட்டுப்படுத்தியை அகற்றாமல் எதிர்காலத்தில் ஃபார்ம்வேரை மாற்றும் நோக்கம் இருந்தால், சாதனத்தின் உற்பத்தியின் போது நிறுவலின் போது இது கணக்கில் எடுத்துக்கொள்ளப்படுகிறது. வழக்கமாக இந்த நோக்கத்திற்காக ஒரு இணைப்பான் (RESET, SCK, MOSI, MISO, GND) நிறுவப்பட்டுள்ளது, மேலும் பலகையில் நிறுவிய பின்னரும் MK ஐ ஒளிரச் செய்யலாம். ஆனால் இவை படைப்பு மகிழ்ச்சிகள். நாங்கள் எளிமையான வழக்கைக் கருத்தில் கொள்கிறோம்.

இப்போது ATtiny44 MK க்கு செல்லலாம். இங்கே எல்லாம் கிட்டத்தட்ட ஒரே மாதிரியாக இருக்கிறது. வரைதல் மற்றும் புகைப்படத்தின் அடிப்படையில், ஒரு தொடக்கக்காரருக்கு கூட இணைப்பைக் கண்டுபிடிப்பதில் சிரமம் இருக்காது. ATtiny44 ஐப் போலவே, நீங்கள் ATtiny24 மற்றும் ATtiny84 மைக்ரோகண்ட்ரோலர்களை இணைக்கலாம் - இந்த மூன்றின் பின் பணிகள் ஒன்றே.


நிரலாக்கத்திற்கான கட்டுப்படுத்தியை தற்காலிகமாக இணைப்பதற்கான மற்றொரு எடுத்துக்காட்டு ATmega8 ஆகும். இங்கே அதிக ஊசிகள் உள்ளன, ஆனால் கொள்கை ஒன்றே - ஒரு சில கம்பிகள், இப்போது கட்டுப்படுத்தி அதில் தகவலை "நிரப்ப" தயாராக உள்ளது. பின் 13 இலிருந்து வரும் புகைப்படத்தில் உள்ள கூடுதல் கருப்பு கம்பி நிரலாக்கத்தில் பங்கேற்காது. MK நிரலாக்க பயன்முறையிலிருந்து வெளியேறிய பிறகு, அதிலிருந்து ஒரு ஒலி சமிக்ஞையை அகற்ற இது வடிவமைக்கப்பட்டுள்ளது. "Perpetuum M" க்கான ஸ்கிரிப்ட் பிழைத்திருத்தத்தின் போது இசை பெட்டி நிரல் MK க்கு பதிவிறக்கம் செய்யப்பட்டதே இதற்குக் காரணம்.


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

படத்தை முடிக்க, MK மைக்ரோ சர்க்யூட்டை அதிக எண்ணிக்கையிலான "கால்களுடன்" இணைப்பதைப் பார்ப்போம். பின் 15 இலிருந்து வரும் புகைப்படத்தில் உள்ள கூடுதல் கருப்பு கம்பியின் நோக்கம் ATmega8 இன் விஷயத்தைப் போலவே உள்ளது.


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

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

4. ஸ்கிரிப்ட் - "Perpetuum M" க்கான புரோகிராமர்

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

ஸ்கிரிப்ட் கொண்ட காப்பகம் perpetuum.exe நிரல் அமைந்துள்ள அதே கோப்புறையில் திறக்கப்பட வேண்டும். இந்த வழக்கில், நீங்கள் perpetuum.exe கோப்பை இயக்கும் போது, ​​நிறுவப்பட்ட ஸ்கிரிப்ட்களின் பட்டியலுடன் ஒரு மெனு திரையில் காட்டப்படும், அதில் "AVR MK புரோகிராமர்" (அது மட்டுமே இருக்கலாம்) என்ற வரி இருக்கும். இது நமக்கு தேவையான வரி.

ஸ்கிரிப்ட் "MK புரோகிராமர் AVR.pms" கோப்பில் உள்ள PMS கோப்புறையில் அமைந்துள்ளது. விண்டோஸ் நோட்பேட் போன்ற வழக்கமான டெக்ஸ்ட் எடிட்டரில் இந்தக் கோப்பைப் பார்க்கலாம், படிக்கலாம் மற்றும் தேவைப்பட்டால் திருத்தலாம். ஸ்கிரிப்டைப் பயன்படுத்துவதற்கு முன், போர்ட் அமைப்புகளுடன் தொடர்புடைய உரையில் நீங்கள் மாற்றங்களைச் செய்ய வேண்டியிருக்கும். இதைச் செய்ய, Windows Device Manager இல் பயன்படுத்தப்படும் போர்ட்டின் பெயரைச் சரிபார்த்து, தேவைப்பட்டால், "PortName="COM4" என்ற வரியில் பொருத்தமான திருத்தத்தைச் செய்யுங்கள்; - எண் 4 க்கு பதிலாக மற்றொரு எண் இருக்கலாம். மேலும், வேறு USB-RS232TTL மாற்றி மாதிரியைப் பயன்படுத்தும் போது, ​​நீங்கள் சிக்னல் தலைகீழ் அமைப்புகளை மாற்ற வேண்டியிருக்கும் (ஸ்கிரிப்ட் வரிகள் "உயர்" என்ற வார்த்தையுடன் தொடங்கும்). Perpetuum M நிரலுக்கான (போர்ட்டுடன் பணிபுரியும் செயல்பாடுகளின் பிரிவு) வழிமுறைகளில் உள்ள எடுத்துக்காட்டுகளில் ஒன்றைப் பயன்படுத்தி USB-RS232TTL மாற்றி மூலம் சமிக்ஞைகளின் தலைகீழ் மாற்றத்தை நீங்கள் சரிபார்க்கலாம்.

MK_AVR துணைக் கோப்புறையானது ஆதரிக்கப்படும் கட்டுப்படுத்திகளின் விளக்கங்களைக் கொண்ட கோப்புகளைக் கொண்டுள்ளது. உங்களுக்குத் தேவையான கட்டுப்படுத்தி அவற்றில் இல்லை என்றால், ஒரு ஒப்புமையைப் பின்பற்றி உங்களுக்குத் தேவையானதை நீங்களே சேர்க்கலாம். கோப்புகளில் ஒன்றை மாதிரியாக எடுத்து, உரை எடிட்டரைப் பயன்படுத்தி, தேவையான தரவை உள்ளிடவும், அதை உங்கள் மைக்ரோகண்ட்ரோலருக்கான ஆவணத்திலிருந்து எடுக்கவும். முக்கிய விஷயம், கவனமாக இருக்க வேண்டும், பிழைகள் இல்லாமல் தரவை உள்ளிடவும், இல்லையெனில் MK திட்டமிடப்படாது, அல்லது தவறாக திட்டமிடப்படும். அசல் பதிப்பு 6 மைக்ரோகண்ட்ரோலர்களை ஆதரிக்கிறது: ATtiny13, ATtiny24, ATtiny44, ATtiny84, ATmega8 மற்றும் ATmega128. இணைக்கப்பட்ட கட்டுப்படுத்தியின் தானியங்கி அங்கீகாரத்தை ஸ்கிரிப்ட் செயல்படுத்துகிறது - அதை கைமுறையாகக் குறிப்பிட தேவையில்லை. MK இலிருந்து படிக்கப்பட்ட அடையாளங்காட்டி கிடைக்கக்கூடிய விளக்கங்களில் இல்லை என்றால், கட்டுப்படுத்தியை அடையாளம் காண முடியவில்லை என்று ஒரு செய்தி காட்டப்படும்.

ஸ்கிரிப்ட் கொண்ட காப்பகத்தில் கூடுதல் தகவல்களும் உள்ளன. AVR கன்ட்ரோலர் இன்க் கோப்புகள் கோப்புறையில் மிகவும் பயனுள்ள மற்றும் விரிவான கன்ட்ரோலர் வரையறை கோப்புகளின் தொகுப்பு உள்ளது. MK க்காக உங்கள் சொந்த நிரல்களை எழுதும்போது இந்த கோப்புகள் பயன்படுத்தப்படுகின்றன. மேலும் நான்கு கோப்புறைகள் "MusicBox_..." ஆனது ATtiny13, ATtiny44, ATmega8 மற்றும் ATmega128 ஆகியவற்றிற்கு தனித்தனியாக MK இல் பதிவிறக்கம் செய்யத் தயாராக உள்ள அசெம்பிளி மொழி மற்றும் ஃபார்ம்வேரில் ஒரு நிரலைக் கொண்ட கோப்புகளைக் கொண்டுள்ளது. இந்த கட்டுரையில் பரிந்துரைக்கப்பட்டுள்ளபடி, நிரலாக்கத்திற்காக இந்த MK களில் ஒன்றை நீங்கள் ஏற்கனவே இணைத்திருந்தால், அதை இப்போதே ப்ளாஷ் செய்யலாம் - நீங்கள் ஒரு இசை பெட்டியைப் பெறுவீர்கள். இதைப் பற்றி மேலும் கீழே.

ஸ்கிரிப்ட் மெனுவில் "MK AVR புரோகிராமர்" என்ற வரியைத் தேர்ந்தெடுக்கும்போது, ​​ஸ்கிரிப்ட் செயல்படுத்தப்படத் தொடங்குகிறது. அதே நேரத்தில், இது போர்ட்டைத் திறக்கிறது, நிரலாக்க பயன்முறைக்கு மாறுவதற்கு MK க்கு ஒரு கட்டளையை அனுப்புகிறது, வெற்றிகரமான மாற்றம் குறித்து MK இலிருந்து உறுதிப்படுத்தலைப் பெறுகிறது, MK அடையாளங்காட்டியைக் கோருகிறது மற்றும் கிடைக்கக்கூடியவற்றில் அதன் அடையாளங்காட்டி மூலம் இந்த MK இன் விளக்கத்தைத் தேடுகிறது. விளக்கங்களுடன் கோப்புகள். தேவையான விளக்கத்தை அது கண்டுபிடிக்கவில்லை என்றால், அது தொடர்புடைய செய்தியைக் காட்டுகிறது. ஒரு விளக்கம் கண்டுபிடிக்கப்பட்டால், புரோகிராமரின் பிரதான மெனு திறக்கும். நீங்கள் அதன் ஸ்கிரீன்ஷாட்டை படம் 8 இல் காணலாம். மேலும் புரிந்துகொள்வது கடினம் அல்ல - மெனு மிகவும் எளிமையானது.

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

சில செயல்பாட்டு வரம்புகள் ஸ்கிரிப்ட் உரையில் நேரடியாக விவரிக்கப்பட்டுள்ளன:
//பூஜ்ஜிய முகவரியிலிருந்து மட்டுமே பதிவுசெய்தல் செயல்படுத்தப்பட்டது (விரிவாக்கப்பட்ட பிரிவு முகவரிப் பதிவு புறக்கணிக்கப்பட்டது, LOAD OFFSET - கூட)
//HEX கோப்பில் உள்ள பதிவுகளின் வரிசை மற்றும் தொடர்ச்சி சரிபார்க்கப்படவில்லை
//செக்சம் சரிபார்க்கப்படவில்லை
MK க்கான ஃபார்ம்வேர் குறியீடு எடுக்கப்பட்ட HEX கோப்புடன் பணிபுரிவதற்கு இது பொருந்தும். இந்த கோப்பு சிதைக்கப்படாவிட்டால், செக்சம் சரிபார்ப்பதால் எந்த விளைவையும் ஏற்படுத்தாது. சிதைக்கப்பட்டிருந்தால், ஸ்கிரிப்டைப் பயன்படுத்தி அதைக் கண்டறிய முடியாது. பெரும்பாலான சந்தர்ப்பங்களில், மீதமுள்ள கட்டுப்பாடுகள் காயப்படுத்தாது, ஆனால் நீங்கள் இன்னும் அவற்றை மனதில் கொள்ள வேண்டும்.

5. இசை பெட்டி - ஆரம்பநிலைக்கு ஒரு எளிய கைவினை

உங்களிடம் இந்த மைக்ரோகண்ட்ரோலர்களில் ஒன்று இருந்தால்: ATtiny13, ATtiny44, ATmega8 அல்லது ATmega128, அதை எளிதாக மியூசிக் பாக்ஸ் அல்லது மியூசிக் கார்டாக மாற்றலாம். இதைச் செய்ய, தொடர்புடைய ஃபார்ம்வேரை MK இல் எழுதினால் போதும் - ஸ்கிரிப்டுடன் அதே காப்பகத்தில் உள்ள "MusicBox_..." கோப்புறைகளில் அமைந்துள்ள நான்கில் ஒன்று. நிலைபொருள் குறியீடுகள் ".hex" நீட்டிப்புடன் கோப்புகளில் சேமிக்கப்படும். அத்தகைய கைவினைக்கு ATmega128 ஐப் பயன்படுத்துவது, ATmega8 ஐப் போலவே "கொழுப்பு" ஆகும். ஆனால் இது சோதனை அல்லது பரிசோதனைக்கு பயனுள்ளதாக இருக்கும், வேறுவிதமாகக் கூறினால், கல்வி நோக்கங்களுக்காக. அசெம்பிளரில் உள்ள நிரல்களின் உரைகளும் இணைக்கப்பட்டுள்ளன. நிரல்கள் புதிதாக உருவாக்கப்படவில்லை - ஏ.வி.பெலோவின் புத்தகமான “AVR மைக்ரோகண்ட்ரோலர்ஸ் இன் அமெச்சூர் ரேடியோ பிராக்டீஸில்” இருந்து இசை பெட்டி நிகழ்ச்சி ஒரு அடிப்படையாக எடுக்கப்பட்டது. அசல் நிரல் பல குறிப்பிடத்தக்க மாற்றங்களுக்கு உட்பட்டுள்ளது:
1. நான்கு MKகள் ஒவ்வொன்றிற்கும் ஏற்றது: ATtiny13, ATtiny44, ATmega8 மற்றும் ATmega128
2. பொத்தான்கள் அகற்றப்பட்டன - சக்தி மற்றும் ஒலி உமிழ்ப்பான் தவிர வேறு எதுவும் கட்டுப்படுத்தியுடன் இணைக்கப்பட வேண்டியதில்லை (மெல்லிசைகள் முடிவில்லாத சுழற்சியில் ஒன்றன் பின் ஒன்றாக இசைக்கப்படுகின்றன)
3. இசை தாளத்தில் உள்ள இடையூறுகளை நீக்குவதற்கு ஒவ்வொரு குறிப்பின் காலமும் குறிப்புகளுக்கு இடையில் இடைநிறுத்தப்படும் கால அளவு குறைக்கப்படுகிறது
4. எட்டாவது மெல்லிசை இணைக்கப்பட்டுள்ளது, புத்தக பதிப்பில் பயன்படுத்தப்படவில்லை
5. அகநிலையிலிருந்து: சில "மேம்பாடுகள்" மேம்படுத்தவும், அல்காரிதத்தை எளிதாக புரிந்து கொள்ளவும்

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

ATtiny13 இல், 16-பிட் கவுண்டர் இல்லாததால், குறிப்புகளை மீண்டும் உருவாக்க 8-பிட் கவுண்டரைப் பயன்படுத்த வேண்டியிருந்தது, இது குறிப்புகளின் துல்லியத்தில் சிறிது குறைவுக்கு வழிவகுத்தது. ஆனால் இது காதுகளால் கவனிக்கப்படுவதில்லை.

கட்டமைப்பு பிட்கள் பற்றி. அவற்றின் அமைப்புகள் புதிய மைக்ரோகண்ட்ரோலரின் நிலைக்கு ஒத்திருக்க வேண்டும். உங்கள் MK ஏற்கனவே எங்காவது பயன்படுத்தப்பட்டிருந்தால், அதன் உள்ளமைவு பிட்களின் நிலையை நீங்கள் சரிபார்க்க வேண்டும், தேவைப்பட்டால், அவற்றை புதிய மைக்ரோகண்ட்ரோலரின் அமைப்புகளுடன் இணைக்கவும். புதிய மைக்ரோகண்ட்ரோலரின் உள்ளமைவு பிட்களின் நிலையை இந்த எம்.கே (பிரிவு "ஃப்யூஸ் பிட்ஸ்") ஆவணத்திலிருந்து நீங்கள் அறிந்து கொள்ளலாம். விதிவிலக்கு ATmega128 ஆகும். இந்த MCU இல் M103C பிட் உள்ளது, இது பழைய ATmega103 உடன் இணக்க பயன்முறையை செயல்படுத்துகிறது. M103C பிட்டை செயல்படுத்துவது ATmega128 இன் திறன்களை வெகுவாகக் குறைக்கிறது, மேலும் இந்த பிட் புதிய MK இல் செயலில் உள்ளது. நீங்கள் M103C ஐ செயலற்ற நிலைக்கு மீட்டமைக்க வேண்டும். உள்ளமைவு பிட்களைக் கையாள, புரோகிராமர் ஸ்கிரிப்ட் மெனுவின் தொடர்புடைய பகுதியைப் பயன்படுத்தவும்.

இசைப் பெட்டியின் வரைபடத்தைக் கொடுப்பதில் எந்தப் பயனும் இல்லை: இதில் மைக்ரோகண்ட்ரோலர், பவர் சப்ளை மற்றும் பைசோ-ஒலி உமிழ்ப்பான் மட்டுமே உள்ளன. MK ஐ நிரலாக்கும்போது நாம் செய்ததைப் போலவே மின்சாரம் வழங்கப்படுகிறது. ஒலி உமிழ்ப்பான் பொதுவான கம்பி (கண்ட்ரோலரின் GND முள்) மற்றும் MK பின்களில் ஒன்றிற்கு இடையே இணைக்கப்பட்டுள்ளது, இதன் எண்ணிக்கை நிரல் சட்டசபை குறியீட்டுடன் (*.asm) கோப்பில் காணலாம். ஒவ்வொரு MK க்கும் நிரல் உரையின் தொடக்கத்தில் கருத்துரைகளில் ஒரு வரி உள்ளது: "ஒலி சமிக்ஞை பின் XX இல் உருவாக்கப்படுகிறது." புரோகிராமர் ஸ்கிரிப்ட் முடிந்ததும், மைக்ரோகண்ட்ரோலர் நிரலாக்க பயன்முறையிலிருந்து வெளியேறி இயல்பான செயல்பாட்டிற்குச் செல்லும். மெல்லிசைகளின் பிளேபேக் உடனடியாகத் தொடங்குகிறது. ஒலி எமிட்டரை இணைப்பதன் மூலம், இதை நீங்கள் சரிபார்க்கலாம். SPI இல் பயன்படுத்தப்படாத பின்னிலிருந்து ஒலி எடுக்கப்பட்டால் மட்டுமே, படிகத்தை நிரலாக்கத்தின் போது ஒலி உமிழ்ப்பானை இணைக்க முடியும், இல்லையெனில் பின்னில் உள்ள கூடுதல் கொள்ளளவு நிரலாக்கத்தில் குறுக்கிடலாம்.