ዝርዝር ሁኔታ:

የንባብ መቀየሪያዎች በ ATtiny2313: 9 ደረጃዎች
የንባብ መቀየሪያዎች በ ATtiny2313: 9 ደረጃዎች

ቪዲዮ: የንባብ መቀየሪያዎች በ ATtiny2313: 9 ደረጃዎች

ቪዲዮ: የንባብ መቀየሪያዎች በ ATtiny2313: 9 ደረጃዎች
ቪዲዮ: Riding China's Cross-Sea sleeper train, in a first-class seat 4K 2024, ሀምሌ
Anonim
ከ ATtiny2313 ጋር የንባብ መቀየሪያዎች
ከ ATtiny2313 ጋር የንባብ መቀየሪያዎች

ከ ATtiny2313 እና ከተመሳሳይ የ AVR መሣሪያዎች ውጤቶች ጋር የሚነጋገሩ በርካታ አስተማሪዎች ነበሩ። ለምሳሌ ፣ https://www.instructables.com/id/Ghetto-Programming%3a-Getting-started-with-AVR-micro/ ፣ https://www.instructables.com/id/Drive-a-Stepper- ሞተር-በ-ኤኤንአር-ማይክሮፕሮሰሰር/። የእንፋሎት ሞተሮችን እንዴት እንደሚቆጣጠሩ ከሚያሳየው ከእውነተኛው ኤሊዮት የቅርብ ጊዜ ላይ በመስራት ፣ እያንዳንዳችን ATtiny2313 ን እንደገና ማረም እንደሌለብኝ በተመሳሳይ ፕሮግራም ውስጥ የኮድን ተለዋጭ ክፍሎችን ማሄድ መቻል በጣም ጠቃሚ ሆኖ አግኝቼዋለሁ። ትንሽ የኮድ ልዩነት ለመሞከር ፈለግሁ (እንደ ግማሽ እርከን ወይም ደረጃውን በተቃራኒው መሮጥ)። ተለዋጭ ልዩነቶችን ለመምረጥ የመቀየሪያ/የጉዳይ መግለጫን በመጠቀም ኮድ መጻፍ ቀላል ቢሆንም ፣ ጉዳዩን የመምረጥ መንገድ ያስፈልጋል። ያ ማለት ጉዳዩን ለመቆጣጠር አንድ ዓይነት የግቤት መሣሪያ መነበብ አለበት። እንደ እድል ሆኖ ፣ ATtiny2313 ብዙ I/O ፒኖች ያሉት እና ከመቀየሪያዎች ግብዓቶችን ለማንበብ በጥሩ ሁኔታ የተነደፈ ነው። ይህ Instructable ግብዓቶችን እንዴት ማንበብ እና በግዛታቸው ላይ በመመርኮዝ ውሳኔዎችን ማድረግ እንደሚቻል ያሳያል። ያ ብቻ ቆንጆ አሰልቺ አስተማሪ ስለሚያደርግ ፣ ትንሽ ድምጽ ማጉያ እንደ ቢፐር ለመንዳት የ ATtiny2313 የሰዓት ቆጣሪ/ቆጣሪ ችሎታን በመጠቀም ቀለል ያለ መንገድን እገልጻለሁ። እንዲሁም በቀላል የማረም ዘዴዎች ላይ ትንሽ መፍጨት ይኖራል።

ደረጃ 1 - የግቤት መሣሪያ

የግቤት መሣሪያ
የግቤት መሣሪያ
የግቤት መሣሪያ
የግቤት መሣሪያ

ይህ አስተማሪ በእውነተኛ ኤሊዮት ግሩም ሥራ ላይ ይገነባል እና እሱ የገለፀውን ATtiny2313 የጌቶ ልማት ስርዓት ይጠቀማል። ከአትሜል የ ATtiny2313 የመረጃ ወረቀት ለሁሉም ተግባራት የመጨረሻው ማጣቀሻ ነው ፣ ግን ለማንበብ የግድ ቀላል አይደለም። https://www.atmel.com/dyn/products/datasheets.asp?family_id=607 (አገናኝ ሁሉም የ AVR የውሂብ ሉሆች አሉት ፣ 2313 ን ይፈልጉ) አሃዙ ቀላል የግብዓት መቀየሪያዎችን ያሳያል። ይህ በቀላሉ አራት ማብሪያ/ማጥፊያዎች ጥቅል ነው። ነጠላ ምሰሶ ፣ ነጠላ የመወርወሪያ መቀየሪያዎች (SPST) በመባልም ይታወቃል። በተለምዶ ፣ የእያንዳንዱ ማብሪያ / ማጥፊያ አንድ ግንኙነት ወይም ምሰሶ ከመሬት ጋር የተሳሰረ ሲሆን ሌላኛው ግንኙነት አሁን ባለው የመገደብ ተከላካይ (10 ኪ ወይም ከዚያ በላይ) በኩል ወደ ላይ ይጎትታል። የማይክሮ መቆጣጠሪያ ግብዓት ከተቃዋሚው ጋር ከዋልታ ጋር ተገናኝቷል። ማብሪያው ክፍት ከሆነ ማይክሮ መቆጣጠሪያው ግብዓቱን እንደ ኤችአይ ያነባል። ማብሪያው ከተዘጋ ማይክሮ መቆጣጠሪያው የመግቢያውን LO ያነባል። ለዝርዝሮች ንድፈ-ሐሳቡን ይመልከቱ። ATtiny2313 እንደ ግብዓቶች ሲዋቀሩ በ I/O ፒኖች ላይ በፕሮግራም ሊነዱ የሚችሉ መጎተቻ መቆጣጠሪያዎችን በማቅረብ ነገሮችን ያቃልላል። ይህ ማለት መቀያየሪያዎቹ በቀላሉ አንድ ምሰሶ ከመሬት (ሎ) ጋር የተሳሰረ እና ሌላኛው ዋልታ ከአቀነባባሪ ግብዓት ጋር የተገናኘ ሊሆን ይችላል። የመጀመሪያው ምሳሌ ሁለት መቀያየሪያዎችን ብቻ ያሳያል። መቀያየሪያዎቹ በሚከተለው ኮድ ተነብበው ተዋቅረዋል። መቀያየሪያዎቹን እንደ ግብዓት ያዋቅሩ ((ኮድ አያስፈልግም ፤ ይህ ነባሪ ነው።) የሚጎትቱ መቆጣጠሪያዎችን ያብሩ-PORTB = _BV (PB0) | _BV (PB1); ግብዓቶችን ያንብቡ but1 = ~ PINB & 0x03; ትክክለኛውን እሴት ለማግኘት የተገላቢጦሽ እና ጭምብል አጠቃቀምን ልብ ይበሉ።

ደረጃ 2 - ለምልክት ብልጭ ድርግም የሚሉ መብራቶች

በፕሮግራም ሊሠራ የሚችል ቁጥርን (LED) ብዙ ጊዜ እነዚህን ሁለት መቀያየሪያዎችን እንጠቀማለን። የምንጠቀምባቸው ኤልኢዲዎች እውነተኛው ኤሊዮት ታዋቂ ያደረገው ብልጭ ድርግም የሚሉ መብራቶች ይሆናሉ። መቀየሪያዎች 1 እና 2 እንደ ሁለት ሁለት አሃዞች ይቆጠራሉ ፣ ስለዚህ ጥምር ቁጥሩን 0 ፣ 1 ፣ 2 እና 3 ን ሊወክል ይችላል ፕሮግራማችን ሁለቱን መቀያየሪያዎች አንብቦ ተገቢውን የጊዜ ብዛት LED ን ብልጭ ድርግም ያደርጋል ፣ ግን ማብሪያው ብቻ ከሆነ ቅንጅቶች ተለውጠዋል። መቀያየሪያዎቹ ለ 500 ሚሊሰከንዶች (ያልተሻሻሉ) ናቸው። የ debounce ስልተ ቀመር በጣም ቀላል ነው። መቀያየሪያዎቹ ተነበዋል ንባቡም ተስተውሏል። ከድሮው ግን እሴት (የመጨረሻው የተቀመጠው እሴት) የተለየ ከሆነ ፕሮግራሙ ለ 500 ሚሊሰከንዶች ዘግይቷል እና መቀያየሪያዎቹ እንደገና ይነበባሉ። እሴቱ ከዚህ ቀደም ከተነበበው ጋር ተመሳሳይ ከሆነ ፣ የድሮው ግን ዋጋው ይዘምናል እና ኤልዲው በሁለቱ መቀያየሪያዎች የሁለትዮሽ እሴት የተጠቆሙትን ጊዜያት ብዛት ብልጭ ድርግም ይላል። ማብሪያ / ማጥፊያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማብሪያ / ማጥፊያ (ሎው) ስለሚያነብ የእሴቱን ተገላቢጦሽ ልብ ይበሉ። ለተጨማሪ ለውጦች መቀያየሪያዎቹ ያለማቋረጥ ይቃኛሉ። እባክዎን ስለ ብልጭጭጭጭጭጭጭጭጭጭጭጭጭጭጭጭጭጭራዎች መብራቶች የበለጠ ለማወቅ ቀደም ሲል የተማሩትን በ The Real Elliot ይመልከቱ። ስለ መቀያየር መቀያየሪያዎች የበለጠ ለማወቅ ይህንን https://www.ganssle.com/debouncing.pdf ይመልከቱ። ለዚህ ምሳሌ ATtiny2313 ኮድ እዚህ አለ። በስራ ላይ ፣ ይህ ፕሮግራም መነሳቱን ለማሳየት በ PB4 (አካላዊ ፒን 8) ላይ ሁለት ጊዜ ብልጭ ድርግም ይላል። ከዚያ አንድ እና ሁለት መቀያየሪያዎችን ያነባል ፣ እና በሚለወጡበት በማንኛውም የመቀየሪያ ቅንብር ላይ በመመስረት ከአንድ እስከ ሶስት ጊዜ ያንፀባርቃሉ። መቀያየሪያዎቹ በማይለወጡበት ጊዜ ፣ ኤል ዲው ቀስ ብሎ ብልጭ ድርግም ይላል። ይህንን ኮድ ለማስኬድ አዲስ ማውጫ ይፍጠሩ (ከፈለጉ “መሰረታዊ” ብለው ይደውሉ) እና የሚከተለውን የ C ኮድ ፋይል ያውርዱ እና በውስጡ ያስገቡት። Makefile1.txt ን ወደ Makefile ብቻ ይሰይሙ። WinAVR ን በመጠቀም ፕሮግራሙን አጠናቅቀው ወደ የእርስዎ ATtiny2313 ይጫኑ።

ደረጃ 3 - በማረም ላይ ትንሽ መፍጨት።

እርስዎ እንደ እኔ (እና በዓለም ውስጥ ያሉ ሌሎች ሁሉም የፕሮግራም አዘጋጆች) ከሆኑ እርስዎ በጥንቃቄ የተፃፉበት እና ያጠናቀሩት “ከስህተት ነፃ” ኮድ እርስዎ የሚጠብቁትን የማያደርግበት ጊዜ አጋጥሞዎት ይሆናል። ምናልባት በቀላሉ ምንም አያደርግም! ታዲያ ችግሩ ምንድነው? እርስዎ እንዴት ለማወቅ ይሄዳሉ? እንደ እድል ሆኖ ፣ ነገሮችን ወደ ሥራ ለማምጣት በርካታ አቀራረቦች አሉ። (ለማረም ርዕስ በጣም ጥሩ ሕክምና ለማግኘት ይህንን መጽሐፍ ያግኙ። https://www.debuggingrules.com/) የማይክሮ መቆጣጠሪያ መተግበሪያዎችን ማረም ርዕስን በተመለከተ ጥቂት ቀላል ምክሮችን ላቅርብ። ደረጃ አንድ መገንባት ነው የሚያውቁትን። አንድ ጊዜ ለመስራት ብልጭ ድርግም የሚል ብርሃን ካገኙ ከዚያ በፕሮግራምዎ ውስጥ የት እንዳሉ ለማየት እንደገና ይጠቀሙበት። የፕሮግራሙን አጀማመር ለማመልከት ኤልኢዲ ሁለት ጊዜ ብልጭ ድርግም ማለት እወዳለሁ። በፕሮግራምዎ መጀመሪያ ላይ ይህንን ለማድረግ መጀመሪያ ኮዱን ማስገባት ይችላሉ። በሃርድዌርዎ ላይ ምንም ስህተት እንደሌለ ካወቁ ፣ ብልጭ ድርግም ለማድረግ ተግባር ይፍጠሩ። እኔ የምጠቀምበት ተግባር እዚህ አለ//------------------------------------------ ------------------------------ ** ብልጭ ድርግም-PD4 ** PD4 ን በመጠቀም LED ን የማብራት ተግባር እንደ ውፅዓት መዋቀር አለበት። ** ---------------------------------------------- ---------------------*/ባዶነት ብልጭ ድርግም (uint8_t ቆጠራ) {ሳለ (ቆጠራ> 0) {PORTD = _BV (PD4); _ መዘግየት_ኤምኤስ (1000); PORTD = ~ _BV (PD4); _ መዘግየት_ኤምኤስ (1000); ቆጠራ--; }} አሁን ይህንን ተግባር በኮድዎ ውስጥ በተለያዩ ነጥቦች ኮዱ እስከዚያ ድረስ እንደፈጸመ ምልክት አድርጎ መጠቀም ይቻላል። ኮዱን እየሰራ መሆኑን ማወቅ ማለት ስህተቶችን ለማግኘት የሮጠውን ፣ ግን እርስዎ የጠበቁትን ያላደረገውን እያንዳንዱን ክፍል በጥንቃቄ መመርመር ይችላሉ ማለት ነው። አንድን ነገር በአንድ ጊዜ መለወጥ እንዲሁ ለማረም ቁልፍ ዘዴ ነው (ከላይ በተጠቀሰው ማጣቀሻ ውስጥ ተገል describedል)። ይህ ክላሲክ ዘዴ ከ “መከፋፈል እና ድል” ጋር አብሮ ይሠራል - ተግባራዊነትን በተጨባጭ ለመጨመር የሕፃናትን እርምጃዎች መውሰድ። ይህ ቀርፋፋ አቀራረብ ሊመስል ይችላል ፣ ነገር ግን የማይሰራ ኮድ አንድ ትልቅ ክፍልን በአንድ ጊዜ ለማረም እንደ መዘግየት አይደለም።

ደረጃ 4 - ተጨማሪ ማረም

በውስጡ ያሉትን አብዛኞቹን መስመሮች በመዝለል የኮድ ክፍልን ለመፈተሽ የምንፈልግበት ብዙ ጊዜ አለ ፣ ከዚያም እያንዳንዳችን እየሠራን ስናረጋግጥ አንድ በአንድ እናነቃቸዋለን። በተለምዶ እኛ ልንዘልላቸው የምንፈልጋቸውን መስመሮች “አስተያየት በመስጠት” ይህንን እናደርጋለን። የዚህ ዘዴ ማራዘሚያ የኮድ ብሎክን መቁረጥ እና መለጠፍ ፣ ዋናውን አስተያየት መስጠት (እኛ እንዳናጣው) እና ቅጂውን መጥለፍ ነው። መስመሮችን አስተያየት ለመስጠት አራት ቀላል መንገዶች አሉት። በመስመሩ ፊት “//” ን ማስቀመጥ ያንን መስመር አስተያየት ይሰጣል። አንድ ወይም ከዚያ በላይ መስመሮችን በ”/*” እና “*/” ውስጥ መዘጋቱ አንድ ሙሉ ክፍል አስተያየት ይሰጣል። ይህ ዘዴ ውጤታማ ሆኖ እንዲሠራ ፣ በኮድ ማገጃው ውስጥ ሌላ (*/”) መኖር የለበትም (ከማጠናቀቂያው ሌላ)። ስለዚህ ውጤታማ ተግሣጽ በኮድ ብሎኮች ውስጥ ለአስተያየቶች // መጠቀም እና / / * * / ግንባታውን ለአስተያየት ብሎኮች እና ለኮድ ክፍሎች አስተያየት መስጠት ነው። አስተያየት ለመስጠት ብሎክ ሲጀመር “#if 0” ን በማስቀመጥ ነው። እና ክፍሉን በ “#ኤንዲፍ” ያጠናቅቃል። በብሎክ መጀመሪያ ላይ “#ifdef (መለያ)” እና በመጨረሻው “#ኢኒዲፍ” በመጠቀም ተጨማሪ የምርጫ ቁጥጥር ማድረግ ይቻላል። እገዳው እንዲሰበሰብ ከፈለጉ በፕሮግራሙ ውስጥ ቀደም ሲል “#ገላጭ (መለያ)” ይጠቀሙ። የጥቅስ ምልክቶቹ ለአፅንዖት ብቻ የተካተቱ እና የማይካተቱ መሆናቸውን ልብ ይበሉ።እነዚህን ቴክኒኮች ማዋሃድ የእርስዎን ATtiny2313 ፕሮግራሞች ለማረም ጠቃሚ አቀራረብ ማቅረብ አለበት። በዚህ አስተማሪነት ስንቀጥል እነዚህ መሣሪያዎች ጠቃሚ ሆነው ሊያገ mayቸው ይችላሉ።

ደረጃ 5 ለቢፕስ ሰዓት ቆጣሪ/ቆጣሪ 0 ን መጠቀም

ለቢፕስ ሰዓት ቆጣሪ/ቆጣሪ 0 ን መጠቀም
ለቢፕስ ሰዓት ቆጣሪ/ቆጣሪ 0 ን መጠቀም

ATtiny2313 ሁለት ኃይለኛ ሰዓት ቆጣሪ/ቆጣሪ ሀብቶች አሉት-አንድ 8-ቢት እና አንድ 16-ቢት። እነዚህ እንደ ድግግሞሽ ጀነሬተሮች ፣ ተለዋዋጭ የ pulse ስፋት ማስተካከያ ተቆጣጣሪዎች እና የውጤት ማወዳደር መመዝገቢያዎች ሆነው ሊዋቀሩ ይችላሉ። የእነዚህ ሙሉ ተግባር በውሂብ ሉህ በ 49 ገጾች ውስጥ ተገል isል። ሆኖም ፣ እኛ ቀለል ያለ መያዣ እንጠቀማለን። ሰዓት ቆጣሪ/ቆጣሪ 0 (8-ቢት አንድ) ብቻ ጥቅም ላይ የሚውል ሲሆን እንደ ድግግሞሽ ጄኔሬተር በቀላሉ ጥቅም ላይ ይውላል። ቢፕ ለማምረት ድግግሞሽ ወደ ትንሽ ተናጋሪ ይተላለፋል። ሰዓት ቆጣሪ/ቆጣሪ 0 በ ATtiny2313 የመረጃ ወረቀት በገጽ 66 እስከ 83 ሙሉ በሙሉ ተገል describedል። የዚህን ጽሑፍ የቅርብ ንባብ አንድ ሰው ስለ ጊዜ/ቆጣሪ 0. የተሟላ ግንዛቤን ይሰጣል። ደስ የሚለው ፣ እኛ የምንፈልገውን የጩኸት ድምጽ ለማመንጨት የሚያስፈልገው በቂ ቀላል ሁናቴ ፣ ሰዓት ቆጣሪን በንጽጽር (ሲቲሲ) ያፅዱ።

እኛ ለምንጠቀምበት ሞድ ፣ የሰዓት ቆጣሪ/ቆጣሪ አሠራር ቀጥታ ወደ ፊት ነው። የሰዓት ምልክት ሲመረጥ ቆጣሪው በዜሮ ይጀምራል እና እያንዳንዱን የሰዓት ምት ይጨምራል። የውጤት ማነጻጸሪያ መመዝገቢያ (TOP) ውስጥ የቆጣሪው እሴት ወደ እሴቱ ሲደርስ ቆጣሪው ወደ ዜሮ ዳግም ይጀምራል እና መቁጠር እንደገና ይጀምራል። ከሰዓት ቆጣሪ/ቆጣሪ ጋር የተቆራኘው የውጤት ቢት የካሬ ሞገድ ውፅዓት ለማምረት ይቀየራል። ቢፕ ድምጽ እንዲሰማ ይህ በቀጥታ የድምፅ አስተላላፊውን ያንቀሳቅሳል። አንድ ትንሽ የቲዲኬ ኦዲዮ አስተላላፊ ቢፕ ያመርታል። ተስማሚ ክፍል ዲጂኬ 445-2530-ND ፣ TDK SD1209T3-A1 (የዚህን ቀደምት ስሪት እጠቀም ነበር)። ይህ 3 ቮልት ስሪት ነው; እኔ የምጠብቀው የ 5 ቮልት ስሪት እንዲሁ ይሠራል። ይህንን በቀጥታ ከአቲኒ 2323 የውጤት ወደብ አወጣዋለሁ እና ጥሩ የሚሰራ ይመስላል። Sparkfun ተመሳሳይ መሣሪያ አለው።

ደረጃ 6 ሰዓት ቆጣሪ/ቆጣሪን በማዋቀር ላይ 0

የሲ.ቲ.ሲ ሁኔታ ውፅዓት OC0A በፒን 2 ፣ ወደብ ቢ (አካላዊ ፒን 14) ላይ ለመቀየር ሊያገለግል ይችላል። በዚህ ሚስማር ላይ ውፅዓት ለማንቃት ፣ DDRB በተገቢው ሁኔታ መዘጋጀት አለበት። ለዚህ የ C ኮድ ልክ ለብልጭልጭ ብርሃን ውፅዓት እንደማዋቀር ነው። DDRB = _BV (PB2); // ወደብ ቢ 2 ውፅዓት ነው። ቀጣዩ ደረጃ የሞገድ ቅርፅን እንደ ድግግሞሽ ለማምረት የሰዓት ምልክትን ማቅረብ እና የውጤት ማወዳደሪያ መዝገቡን መጫን ነው። ለተፈጠረው ድግግሞሽ ቀመር በውሂብ ሉህ (ገጽ 72) ውስጥ ተሰጥቷል። በቀመር ውስጥ ያሉት ውሎች ከዚህ በታች ይብራራሉ። ቀመር ይኸውና: fOC0A = fclk_I/O/2*N*(1+OCR0A) የት fOC0A: = የውጤት ድግግሞሽ fclk_I/O: = የሰዓት ምንጭ ድግግሞሽ N: ቆጣሪ 0 ኤ. የሰዓት ምንጭ ድግግሞሽ ፣ fclk_I/OT ይህ የስርዓት ሰዓት ድግግሞሽ ነው። ነባሪው እሴት 1 ሜኸ ነው። ቢት CS00 ፣ CS01 እና CS02 የ TCCR0B ይህንን ምርጫ ይቆጣጠራሉ። እነዚህ ቢቶች እንዲሁ የ N እሴትን ስለሚመርጡ ፣ ቀጥሎ ይገለፃል። የቅድመ -ተቆጣጣሪ እሴት ፣ ኤንኤን የስርዓት ሰዓቱን ለመከፋፈል ወይም ለመገመት የሚያገለግል እሴት ነው። ቢት CS00 ፣ CS01 እና CS02 የ TCCR0B ይህንን ምርጫ ይቆጣጠራሉ። በ ATtiny2313 የመረጃ ወረቀት ገጽ 81 ላይ ሠንጠረዥ 41 ጥምረቶቹን ይገልፃል። 1kHz አቅራቢያ ድግግሞሽ ስለሚፈለግ ፣ የ TCCR0B ቢት CS00 እና CS01 ይዘጋጃሉ። ልብ ይበሉ ፣ ሦስቱን ቢት ወደ 0 ማቀናበር ፣ ስለሆነም ምንም የሰዓት ምንጭ መምረጥ ፣ ውጤቱን በብቃት ያቆማል። ቢፕውን ለመጀመር እና ለማቆም የሚጠቀሙበት ዘዴ ይህ ነው። የቶፒ እሴት ፣ OCR0 ይህ እሴት በውጤት ማነጻጸሪያ መመዝገቢያ ለ ሰዓት ቆጣሪ/ቆጣሪ 0 ሀ ውስጥ ለተጫነው ቆጣሪ TOP እሴት ነው። ይህ እሴት ሲደርስ ቆጣሪው ወደ ዜሮ ዳግም ይጀመራል እና TOP እስኪደርስ እና ዑደቱ እስኪደጋገም ድረስ እንደገና መቁጠር ይጀምራል። TOP በቀላሉ ተስተካክሏል ፣ ስለዚህ የ beeper ድግግሞሽ ለመለወጥ ቀላል ነው። 1kHz አቅራቢያ ያለው ድግግሞሽ ስለሚፈለግ ፣ TOP ወደ 7 ተቀናብሯል (ማስታወሻ -ተቆጣጣሪው ወደ 8 ሊቀናበር እንደሚችል ልብ ይበሉ ፣ እና TOP ወደ 63. ተመሳሳይ ውጤት - የእርስዎ ምርጫ) የውጤት ድግግሞሽ ፣ fOC0A የውጤት ድግግሞሽ ውጤቶችን ለማስላት ቀመር በመጠቀም በ: fOC0A = 1, 000, 000 /2 * 64 * (1+7) fOC0A = 977Hz በቂ ቅርብ ነው! የውጤት ንፅፅር ምዝገባን እና የሰዓት ቆጣሪ መቆጣጠሪያ መቆጣጠሪያ 0B ን ለመጫን ኮዱ እዚህ አለ። እነዚህ እንዴት ጥቅም ላይ እንደሚውሉ ለመረዳት እባክዎን ትክክለኛውን የፕሮግራም ኮድ ይመልከቱ። OCR0A = 7; // የጊዜ እሴት TCCR0B = _BV (CS01) | _BV (CS00); // የውስጥ ሰዓት ምረጥ & prescale = 8 TCCR0B = 0; // ምንም የሰዓት ምንጭ ድምፁን አያጠፋም/ጊዜን/አጸፋዊ ሁነታን ማቀናበር እንደመጨረሻ ዝርዝር ፣ እኛ በሰዓት ቆጣሪ/በተቆጣጣሪ ቁጥጥር መዝገብ 0 ሀ ውስጥ ተገቢውን ቢት በማቀናበር የምንፈልገውን የሰዓት ቆጣሪ/ቆጣሪ ሁኔታ እንገልፃለን። የውሂብ ሉህ በሰንጠረዥ 40 ፣ ገጽ 79 ላይ እንደተገለፀው ቢት WGM01 ን በማቀናበር የ CTC ሁኔታ ይመረጣል። ውጤቱን እያንዳንዱን ዑደት እንዲቀይር ስለምንፈልግ ፣ ቢት COM0A0 በገጽ 77 ላይ በተገለፀው መሠረት መዋቀር አለበት። _BV (WGM01); // CTC መቀያየሪያ ሁነታን

ደረጃ 7 - አራት መቀያየሪያዎችን መጠቀም

ድምፃችንን ተግባራዊ ስናደርግ አራት መቀያየሪያዎችን ለማስተናገድ የእኛን ሃርድዌር እና ሶፍትዌር እናራዘም። የሰዓት ቆጣሪ ቆጣሪ 0A ውፅዓት በፖርት ቢ ፣ ፒን 2 ላይ ስለሆነ ፣ በቀላሉ ተጨማሪ መቀያየሪያዎችን በቅደም ተከተል ወደ ፖርት ቢ ማያያዝ አንችልም። ቀላል መፍትሔ ፖርት ዲን መጠቀም ነው ፣ ግን ያንን ወደብ ለሌሎች ተግባራት እንዲቆይ እናድርገው (ምናልባት የእርከን ሞተር)። ስለዚህ ተጨማሪ መቀያየሪያዎቹን ወደ PB3 እና PB4 እናያይዘው። መቀያየሪያዎቹን ማንበብ በአብዛኛው አልተለወጠም። ጭምብል እሴቱ ወደ 0x1B (00011011 ሁለትዮሽ) ወደ ቢት 2 ወደ 5 ፣ 6 እና 7 ተለውጧል። ቢት 3 እና 4 ን በቀኝ አንድ ቢት እና ከ 0 እና 1 ቢት ጋር ወደ 4 ቢት ሁለትዮሽ ቁጥር ያዋህዷቸው። ይህ ቢት ለመለወጥ እና ለማጣመር መደበኛ ሲ አገባብ ነው ፣ ግን ለጀማሪው በደንብ ላይታወቅ ይችላል። but1a = (but1 & 0x03) | ((ግን 1 እና 0x18) >> 1); // but1 የመቀየሪያ ንባብ አለው በስራ ላይ ፣ መርሃግብሩ ሁለት ጊዜ ብልጭ ድርግም ይላል እና መነቃቃትን ሁለት ጊዜ ያሰማል። ማብሪያ / ማጥፊያዎቹ በሚለወጡበት በማንኛውም ጊዜ የሚወክሉት ቁጥር ይነጫል። መቀያየሪያዎቹ በማይለወጡበት ጊዜ ኤልኢዲ ብልጭ ድርግም ይላል። ይህንን ኮድ ለማስኬድ አዲስ ማውጫ ይፍጠሩ (ቢፕ ቢደውሉት) እና የሚከተለውን የ C ኮድ ፋይል ያውርዱ እና በውስጡ ያስገቡት። Makefile2.txt ን ወደ Makefile ብቻ ይሰይሙ። WinAVR ን በመጠቀም ፕሮግራሙን ያጠናቅሩ እና በአቲኒ 2323 ውስጥ ይጫኑት።

ደረጃ 8 የመቀየሪያ/መያዣ ግንባታን በመጠቀም

የመጨረሻው ደረጃ “ልክ ሶፍትዌር” ነው - ቃል በገባነው መሠረት የመቀየሪያ/መያዣ ግንባታውን እንተገብራለን። ምንም እንኳን ይህ ምሳሌ ሁለት ተለዋጭ እርምጃዎችን ብቻ የሚያሳየ ቢሆንም ፣ ከብዙ ተለዋጭ የኮድ ክፍሎች አንዱን ለመምረጥ ይህንን ግንባታ እንዴት እንደሚጠቀሙበት በጣም ግልፅ መሆን አለበት። በስራ ላይ ፣ ይህ ፕሮግራም መቀያየሪያዎችን ይከታተላል እና ለውጥ ካለ ፣ ያልተለመደ ከሆነ ተገቢውን ቁጥር ያሰማል ፣ ቁጥሩ እኩል ከሆነ ብልጭ ድርግም ይላል። መቀየሪያ ካልተለወጠ በስተቀር ምንም አያደርግም።

ይህንን ኮድ ለማስኬድ አዲስ ማውጫ ይፍጠሩ (ከፈለጉ ቀይር ብለው ይደውሉ) እና የሚከተለውን የ C ኮድ ፋይል ያውርዱ እና በውስጡ ያስገቡት። Makefile3.txt ን ወደ Makefile ብቻ ይሰይሙ። WinAVR ን በመጠቀም ፕሮግራሙን ያጠናቅሩ እና በአቲኒ 2323 ውስጥ ይጫኑት።

ደረጃ 9 መደምደሚያ

መደምደሚያ
መደምደሚያ

ስለዚህ በቃ! አሁን እነሱን በማንበብ እና በመቀየሪያ ቅንብሩ ላይ የተመሠረተ እርምጃ በመምረጥ የፕሮግራምዎን አፈፃፀም ለመቆጣጠር መቆጣጠሪያዎችን እንዴት እንደሚጠቀሙ ያውቃሉ። እንዲሁም የ ‹ቢፕ ቶን› እንዴት እንደሚፈጥሩ ያውቃሉ እና አንዳንድ የማረሚያ ስትራቴጂንም ተምረዋል።

ግንዛቤዎን ለመፈተሽ ከፈለጉ ፣ ከፍ ባለ ድምፅ ላይ ለመጮህ የመጨረሻውን መርሃ ግብር ለመቀየር ይሞክሩ ፣ እንግዳ ከሆነ ዝቅተኛ ማስታወሻ ቢፕ ያድርጉ ፣ እና በማዞሪያዎቹ ላይ ምንም ለውጥ ከሌለ LED ን ያለማቋረጥ ያብሩት። ምናልባት መመልከት ይፈልጉ ይሆናል ለእርዳታ ማረም ወደሚለው ክፍል ይመለሱ።

የሚመከር: