ዝርዝር ሁኔታ:

AVR ሰብሳቢ መማሪያ 7: 12 ደረጃዎች
AVR ሰብሳቢ መማሪያ 7: 12 ደረጃዎች

ቪዲዮ: AVR ሰብሳቢ መማሪያ 7: 12 ደረጃዎች

ቪዲዮ: AVR ሰብሳቢ መማሪያ 7: 12 ደረጃዎች
ቪዲዮ: Как отремонтировать SMPS || Ремонт ИИП шаг за шагом || Импульсный источник питания 2024, ሀምሌ
Anonim
AVR ሰብሳቢ መማሪያ 7
AVR ሰብሳቢ መማሪያ 7

ወደ መማሪያ 7 እንኳን በደህና መጡ!

ዛሬ እኛ የቁልፍ ሰሌዳውን እንዴት ማቃለል እንደሚቻል እናሳያለን እና ከዚያ የአናሎግ ግብዓት ወደቦችን ከቁልፍ ሰሌዳው ጋር ለመገናኘት እንዴት እንደምንችል እናሳያለን። ማቋረጫዎችን እና አንድ ነጠላ ሽቦን እንደ ግብዓት በመጠቀም ይህንን እናደርጋለን። እያንዳንዱ የቁልፍ መጫኛ ቁልፍን በተጫነበት ቮልቴጅ ለመለየት ያስችለናል ወደሚለው የአናሎግ ግቤት ልዩ ቮልቴጅን እንዲልክ የቁልፍ ሰሌዳውን ሽቦ እናደርጋለን። ከዚያ ሁሉም ነገር በሚፈለገው ሁኔታ እየተከናወነ መሆኑን ለማሳየት ወደ እኛ የመመዝገቢያ ተንታኝ የተጫነውን ቁጥር እናወጣለን። በ ATmega328p ውስጥ አናሎግን ወደ ዲጂታል መለወጫ (ADC) ሲጠቀሙ ሊገቡባቸው የሚችሉ ብዙ ወጥመዶች አሉ። ለመሞከር እና እነሱን እንዴት ማስወገድ እንደሚቻል ለማወቅ በመንገድ ላይ ነገሮችን በጥቂት ደረጃዎች ይውሰዱ። እንዲሁም በአነስተኛ መቆጣጠሪያዎ ላይ ጥቂት ወደቦችን ቢጠቀምም የአናሎግውን ወደ ዲጂታል መለወጫ መጠቀም የቁልፍ ሰሌዳውን ለመቆጣጠር በጣም ጥሩው መንገድ ለምን እንዳልሆነ እናያለን። በዚህ መማሪያ ውስጥ ያስፈልግዎታል

  1. የቁልፍ ሰሌዳ። አንድ መግዛት ይችላሉ ወይም እኔ ያደረግሁትን ማድረግ እና አንዱን ማቃለል ይችላሉ።
  2. ለቁልፍ ሰሌዳው 2 ሴት ራስጌዎች (አንዱን ካነሱ)
  3. ሽቦዎችን በማገናኘት ላይ
  4. የዳቦ ሰሌዳ
  5. 4 1 Kohm resistors
  6. 1 15 Kohm resistor
  7. 1 3.3 Kohm resistor
  8. 1 180 ohm resistor
  9. 1 680 ohm resistor
  10. ዲጂታል መልቲሜትር
  11. ተንታኝዎ ከአስተማሪ 5

አስቀድመው የቁልፍ ሰሌዳ ካለዎት እና አንዱን ማቃለል የማያስፈልግዎት ከሆነ የመጀመሪያዎቹን ጥቂት ደረጃዎች መዝለል ይፈልጉ ይሆናል።

ወደ የእኔ አጠቃላይ የ AVR አስተባባሪ ትምህርቶች ስብስብ አገናኝ እዚህ አለ

ደረጃ 1 የቁልፍ ሰሌዳ 1 ን ይከርክሙ

የቁልፍ ሰሌዳ 1 ይከርክሙ
የቁልፍ ሰሌዳ 1 ይከርክሙ
የቁልፍ ሰሌዳ 1 ይከርክሙ
የቁልፍ ሰሌዳ 1 ይከርክሙ
የቁልፍ ሰሌዳ 1 ይከርክሙ
የቁልፍ ሰሌዳ 1 ይከርክሙ
የቁልፍ ሰሌዳ 1 ይከርክሙ
የቁልፍ ሰሌዳ 1 ይከርክሙ

ከረጅም ጊዜ በፊት ፣ አያቶችዎ እንኳን ልጆች በነበሩበት ጊዜ ፣ ሰዎች እርስ በእርስ ለመግባባት ረጅም ገመዶች የተገጠሙትን እነዚህን እንግዳ የሚመስሉ መሣሪያዎችን ይጠቀሙ ነበር። እነሱ “ስልኮች” ተብለው ይጠሩ ነበር እና አንድ ሰው ሲደውልዎት የሚያበሳጭ ድምጽ የሚያወጡ ርካሽ የፕላስቲክ ነገሮች ነበሩ (የዛሬው “የ Justin Bieber” ቅላ equallyዎች እንዲሁ የሚያበሳጩ አይደሉም)። ያም ሆነ ይህ ፣ እነዚህ መሣሪያዎች በቀላሉ በቀላሉ ሽቦ የተያዙባቸው እና በቀላሉ ለመበተን ቀላል የሆኑ እና በእነሱ ላይ 2 ተጨማሪ ቁልፎች (“ማዞር” እና “ብልጭታ”) ሊገዙዋቸው ከሚችሏቸው የቁልፍ ሰሌዳዎች (ቁልፎች) ነበሯቸው። እንደ “የቀስት ቁልፎች” ፣ “የምናሌ ቁልፎች” ወይም ሌላ ነገር። መጀመሪያ ስልኩን ውሰድ (በስዕሎቹ ላይ እንደሚታየው እኔ GE ን እጠቀማለሁ) እና ሽቦውን ለመግለጥ ይለያዩት። ከዚያ ሹል ወስደው የቁልፍ ሰሌዳውን የሚይዙትን ትንሽ የፕላስቲክ ቁልፎች ይንቀሉ እና የቁልፍ ሰሌዳውን ያስወግዱ።

ደረጃ 2 - የቁልፍ ሰሌዳ 2 ን ይከርክሙ

የቁልፍ ሰሌዳ 2 ይከርክሙ
የቁልፍ ሰሌዳ 2 ይከርክሙ
የቁልፍ ሰሌዳ 2 ይከርክሙ
የቁልፍ ሰሌዳ 2 ይከርክሙ
የቁልፍ ሰሌዳ 2 ይከርክሙ
የቁልፍ ሰሌዳ 2 ይከርክሙ

አሁን የ PVC መጋዝን ይውሰዱ እና ፕላስቲክን ከቁልፍ ጉድጓዶቹ ዙሪያ ይቁረጡ እና ከዚያ ቀጭኑን ቁልፍ በመተው ጥልቀቱን በትክክል ለማግኘት ጠርዝ ዙሪያውን ይቁረጡ።

ከዚያም በመጨረሻው ደረጃ ላይ ቁንጮዎቻቸውን ከቆረጡ በኋላ የሚቀሩትን ትናንሽ መሎጊያዎች በመጠቀም የቁልፍ ሰሌዳውን መልሰው ያስቀምጡ እና በቀላሉ ብረቱን ይጠቀሙ። የቁልፍ ሰሌዳው ታች እንደቀድሞው የቁልፍ ሰሌዳውን የሚይዝ አዲስ “ቁልፎች” ይፈጥራል።

ሶስቱን ድምጽ ማጉያዎች እና ምናልባትም ሌሎች እንደ መቀያየርን እና በቦርዱ ላይ ያሉትን ያልሆኑ ነገሮችን ማቃለል እወዳለሁ። ሆኖም ፣ በዚህ ጊዜ መቀያየሪያዎቹን እና ዕቃዎቹን አላጠፋም ምክንያቱም በአሁኑ ጊዜ ሌሎች ግቦች አሉን። እንዲሁም ፣ እዚያ ውስጥ የስልክ ጥሪ ድምፅ ያለው TA31002 መስመራዊ IC አለ። የውሂብ ሉህ በቀላሉ ማግኘት እና ማውረዱን እና ባህሪያትን በመስጠት በመስመር ላይ ይወርዳል። ስለዚህ አሁን ለቦርዱ ተሽጦ ከዚያ በኋላ ከእሱ ጋር እጫወታለሁ። እኔ በአ oscilloscope ላይ መንጠቆ እና ከእሱ ምን ጥሩ አሪፍ ምልክቶችን እንዳገኝ ማየት እፈልጋለሁ። ምናልባትም ከእሱ የበር ደወል ያድርጉ። ማን ያውቃል.

ለማንኛውም አንዴ ስልኩን አጥፍተው እና ክፍሎቹን ከጨረሱ በኋላ የቁልፍ ሰሌዳችንን መስራት እንጨርሳለን።

ደረጃ 3 የቁልፍ ሰሌዳ 3 ን ይከርክሙ

የቁልፍ ሰሌዳ 3 ይከርክሙ
የቁልፍ ሰሌዳ 3 ይከርክሙ
የቁልፍ ሰሌዳ 3 ን ይከርክሙ
የቁልፍ ሰሌዳ 3 ን ይከርክሙ
የቁልፍ ሰሌዳ 3 ይከርክሙ
የቁልፍ ሰሌዳ 3 ይከርክሙ

በወደቅ ቦርድ ውስጥ ያሉት ቀዳዳዎች ግልጽ መሆናቸውን ለማረጋገጥ ቀዳዳዎቹ ባሉበት ሰሌዳ ላይ ሁለት እንስት ራስጌዎችን በማያያዝ የተዝረከረከ ዊኬትን ይጠቀሙ እና ከቁልፍ ሰሌዳው ታችኛው ክፍል ላይ የሪባን ገመዶችን ያስወግዱ። ባለ 4-ፒን ራስጌዎች እንዲሆኑ ምናልባት የራስጌዎችዎን መቁረጥ ያስፈልግዎታል።

አሁን ራስጌዎቹ ተያይዘዋል ወደ ዳቦ ሰሌዳ ላይ ሽቦ ማያያዝ ፣ መልቲሜትር መውሰድ እና መልቲሜትርን በዘፈቀደ ፒኖች ላይ በማጣበቅ እና ተቃውሞውን በመለካት ቁልፎቹን መሞከር ይችላሉ። ይህ ቁልፎቹን ለማውጣት ያስችልዎታል። ወረዳውን በማየት ቁልፎቹ ወደ ውፅዓት እንዴት እንደተገናኙ ማየት ከባድ ነው ነገር ግን መልቲሜትር ከተጠቀሙ ከማንኛውም ሁለት ፒኖች ጋር ማያያዝ እና ከዚያ ክፍት ወረዳ ሳይሆን በማያ ገጹ ላይ አንድ ቁጥር እስኪያዩ ድረስ ቁልፎችን ይጫኑ።. ለዚያ ቁልፍ ቁልፉ ይህ ይሆናል።

በዚህ መንገድ ፒኖችን ለማውጣት ሁሉንም ቁልፎች ካርታ ያድርጉ።

ደረጃ 4 - የቁልፍ ሰሌዳውን ያሽጉ

የቁልፍ ሰሌዳውን ሽቦ
የቁልፍ ሰሌዳውን ሽቦ
የቁልፍ ሰሌዳውን ሽቦ
የቁልፍ ሰሌዳውን ሽቦ

አሁን የሽቦውን ዲያግራም ይከተሉ እና የቁልፍ ሰሌዳውን ወደ የዳቦ ሰሌዳዎ ያያይዙት።

ይህ እንዴት እንደሚሰራ 5 ቮን ወደ ግራ እጁ እናስገባለን እና ቀኝ ጎን ወደ GND ይሄዳል። በስዕላዊ መግለጫው ውስጥ በቀኝ በኩል ያለው የመጀመሪያው ፒን በአትሜጋ 328 ፒ ማይክሮ መቆጣጠሪያ ላይ ወደ መጀመሪያው የአናሎግ ፒኖቻችን ይገባል። ምንም የተጫኑ አዝራሮች በማይኖሩበት ጊዜ ምልክቱ 0V ይሆናል ፣ እና እያንዳንዱ የተለያዩ አዝራሮች ሲጫኑ ግቤት ወደ አናሎግ ወደብ ግቤት በየትኛው ቁልፍ እንደተጫነ በተለያየ መጠን በ 0V እና 5V መካከል ይሆናል። እያንዳንዱ መንገድ ከሌላው የተለየ ተቃውሞ እንዲይዝ የተቃዋሚ እሴቶችን መርጠናል። በማይክሮ መቆጣጠሪያው ላይ ያለው የአናሎግ ወደብ የአናሎግ ምልክት ወስዶ በ 0V እና 5V መካከል ወደ 1024 የተለያዩ ሰርጦች ይከፋፈላል። ይህ ማለት እያንዳንዱ ሰርጥ ስፋት 5V/1024 = 0.005 V/channel = 5 mV/channel አለው። ስለዚህ የአናሎግ ወደብ ከ 5 ሜጋ ባይት በላይ እስከለዩ ድረስ የግብዓት ቮልቴጆችን መለየት ይችላል። በእኛ ሁኔታ ማንኛውም ሁለት የቁልፍ መጫኛዎች ከዚህ በላይ የሚለያይ የቮልቴጅ ምልክት እንዲልኩ የማይክሮሶፍት ተቆጣጣሪው በቀላሉ የትኛው ቁልፍ እንደተጫነ መወሰን መቻል አለበት። ትልቁ ችግር መላው ስርዓት በጣም ጫጫታ ነው ስለዚህ ለእያንዳንዱ የአዝራር ማተሚያ ካርታ ለማቀናጀት የቮልቴጅ መጠኖችን መምረጥ አለብን - ግን ትንሽ ቆይቶ ወደዚያ እንገባለን።

ለተቆጣጣሪው አንድ የግቤት መስመር ብቻ በመጠቀም የ 14 ቁልፍ ቁልፍ ሰሌዳውን መቆጣጠር እንደምንችል ያስተውሉ። ያ ከአናሎግ ግብዓቶች ጠቃሚ ገጽታዎች አንዱ ነው።

አሁን የቁልፍ ሰሌዳውን ለመቆጣጠር የመጀመሪያ ሙከራችን የቁልፍ መጫኛ መቋረጥን ያስከትላል ፣ የተቋረጠው ንዑስ ክፍል የአናሎግ ግቤት ወደብ አንብቦ የትኛው ቁልፍ እንደተጫነ ይወስናል ፣ ከዚያ ያንን ቁጥር ወደ እኛ የምዝገባ ተንታኝ ንዑስ ክፍል (subroutine) ያወጣል። በመማሪያ 5 ውስጥ ባዘጋጀነው በእኛ 8 ኤልኢዲዎች ላይ የቁልፍ እሴት።

ደረጃ 5 የቁልፍ ሰሌዳውን ወደ ተንታኝዎ ያገናኙት

የቁልፍ ሰሌዳውን ወደ ተንታኝዎ ያገናኙት
የቁልፍ ሰሌዳውን ወደ ተንታኝዎ ያገናኙት
የቁልፍ ሰሌዳውን ወደ ተንታኝዎ ያገናኙ
የቁልፍ ሰሌዳውን ወደ ተንታኝዎ ያገናኙ

በእኛ ተንታኝ ማሳያ ላይ ውጤቱን ማየት እንድንችል ሥዕሎቹ የቁልፍ ሰሌዳውን ወደ ማይክሮ መቆጣጠሪያው እንዴት ማገናኘት እንደምንፈልግ ያሳያሉ። በዋናነት እኛ በቀላሉ ከቁልፍ ሰሌዳው ወደ ፖርትሲ ፒን 0 ፣ በኤቲሜጋ 328 ፒ ላይ ADC0 ተብሎም ይጠራል።

ሆኖም ፣ ሁለት ተጨማሪ ነገሮች አሉ። እኛ ደግሞ ወደ PD2 አንድ አዝራር ወደ ሽቦ እየሄድን ነው። ኢ. ከእርስዎ 5V ባቡር ወደ አንድ አዝራር እና ከሌላው የአዝራር ጎን ወደ PD2 ሽቦ ይውሰዱ ፣ እና በመጨረሻም ፣ የ AREF ፒን ከ 5 ቪ ባቡራችን ማላቀቅ እና ይልቁንም ግንኙነቱን ማቋረጥ እንፈልጋለን። እኛ ከፈለግን 0.1 የማይክሮፋድ ዲኮፕተር capacitor ማስገባት እንችላለን። ይህ 104 የተፃፈበት የሴራሚክ አቅም (capacitor) ነው። የመጀመሪያዎቹ ሁለት አሃዞች ቁጥሩ እና የመጨረሻው አሃዝ በ picofarads ውስጥ መልስ ለማግኘት የምናባዛው የ 10 ኃይል ነው (pico ማለት 10^-12) ፣ ስለዚህ 104 ማለት 10 x 10^4 ፒክፋራዶች ፣ እሱም ተመሳሳይ ነው 100 nanofarads (ናኖ ማለት 10^-9) ፣ ይህም ከ 0.1 ማይክሮፋራዶች (ማይክሮ ማለት 10^-6) ጋር ተመሳሳይ ነው። የሆነ ሆኖ ፣ ይህ ሁሉ የሚያደርገው እንደ ማጣቀሻ ፒን ልንጠቀምበት ስንችል የ AREF ፒንን ማረጋጋት ነው።

እንዲሁም በ PD2 እና በመሬት መካከል 1 Mohm resistor እንፈልጋለን። PD2 ን እንደ የውጤት ፒን በ 0 ቪ ላይ እናዘጋጃለን እና በዚያ ፒን ላይ በአዎንታዊ ጠርዝ ላይ እናስነሳለን። አዝራሩን በምንለቅበት ጊዜ ጠርዙ ወዲያውኑ እንዲጠፋ እንፈልጋለን ስለዚህ ይህንን “ወደታች ዝቅ” ተቃዋሚ እናስገባለን።

አዝራሩን የምንፈልግበት ምክንያት የእኛን የአናሎግ-ወደ-ዲጂታል መቀየሪያ ከፒን INT0 ቺፕ ላይ ማስነሳት ስለምንፈልግ ነው ፣ እሱም PD2 ነው። በመጨረሻ የቁልፍ መጫዎቻው ኤዲሲን እንዲነቃቃ እና እንዲሁም የተለየ አዝራር ሳይኖረን ለመለወጥ ግብዓቱን ለማቅረብ እንፈልጋለን ፣ ግን የጊዜ አሠራሩ በሚሠራበት መንገድ ምክንያት ኤዲሲውን ለመቀስቀስ የተለየ አዝራር በመያዝ እንጀምራለን እና አንዴ ሁሉንም ብረት ብናደርግ ሳንካዎቹ ወጥተው ሁሉም ነገር በትክክል እየሰራ መሆኑን እርግጠኞች ነን ፣ ከዚያ እኛ ለማንበብ ከምንፈልገው ተመሳሳይ የአዝራር ቁልፍ በመቀስቀስ የሚመጡትን ጫጫታ እና የጊዜ ችግሮችን እንፈታለን።

ስለዚህ ፣ ለአሁን ፣ የሚሠራበት መንገድ ቁልፍን እንይዛለን ፣ ከዚያ ኤዲሲን ለመቀስቀስ አዝራሩን እንገፋለን ፣ እና ከዚያ እንሂድ እና እኛ የምንገፋው የአዝራር ሁለትዮሽ እሴት በተንታኙ ላይ እንደሚታይ ተስፋ እናደርጋለን።

ስለዚህ ያንን የሚያከናውን አንድ ኮድ እንፃፍ።

ደረጃ 6 - የትኛውን መቀያየሪያ መቀያየሪያ ማዘጋጀት አለብን?

የትኛውን መቀያየሪያ መቀያየሪያ ማዘጋጀት አለብን?
የትኛውን መቀያየሪያ መቀያየሪያ ማዘጋጀት አለብን?

ተቆጣጣሪው ከቁልፍ ሰሌዳው ላይ ግቤቱን እንዲያነብ እና ከተጫነው ቁልፍ ጋር ወደሚዛመደው የቁጥር እሴት እንዲለውጥ ይህንን እንዴት ኮድ እንደምናደርግ እናስብ። አናሎግን ወደ ዲጂታል መለወጫ (ኤዲሲ) እንጠቀማለን። በ Atmega328p ውስጥ የተገነባ። እኛ እንደ ማጣቀሻ voltage ልቴጅችን AREF ን እንጠቀማለን እና የቁልፍ ሰሌዳው ውፅዓት ከ PortC0 ወይም ከ PC0 ጋር ይገናኛል። ለአናሎግ-ለ-ዲጂታል መለወጫ 0. ይህ ፒን እንዲሁ ADC0 ተብሎ መጠራቱን ልብ ይበሉ ለኤቲሜጋ 328 ፒ ማቋረጦች በክፍል 12.4 በኩል ማንበብ እና እንዲሁም ከአናሎግ-ወደ-ዲጂታል መለወጫ ምዕራፍ 24 ላይ ማንበብ ጥሩ ሀሳብ ሊሆን ይችላል ተጀምሯል ወይም ቢያንስ እነዚያን ክፍሎች ለማጣቀሻ ዝግጁ ይሁኑ። በአናሎግ የግብዓት ምልክት ምን ማድረግ እንዳለበት እና ከፕሮግራማችን ጋር መስተጋብር መፍጠር እንዲችል ማይክሮ መቆጣጠሪያውን ለማቀናበር በመጀመሪያ ከተለያዩ የኤ.ዲ.ሲዎች ጥቂቶችን ማዘጋጀት አለብን። ተዛማጅ የምዝግብ ማስታወሻዎች። እነዚህ በመሠረቱ በመጀመሪያዎቹ ኮምፒተሮች ላይ ከድሮው የመቀያየር መቀየሪያዎች ጋር እኩል ናቸው። እርስዎ ማብሪያ / ማጥፊያ / ማብሪያ / ማጥፊያ / መገልበጥ / መገልበጥ ፣ ወይም ከዚያ ወደ ኋላ ወደ አንዱ መውጫ እና ሌላ መካከል ኬብሎችን ይሰኩ ፣ ስለዚህ ኤሌክትሮኖች በመንገዱ ላይ ያለውን ሹካ የሚደርሱበት አንድ በር ተዘግቶ ሌላ ክፍት በሆነ መንገድ ወደ ሌላ መንገድ እንዲያስገድደው ወረዳዊ እና ስለሆነም የተለየ አመክንዮአዊ ተግባር ማከናወን። በስብሰባ ቋንቋ ውስጥ ኮድ በሚደረግበት ጊዜ እኛ በመጀመሪያ ስለማድረግ ከሚያስደስቱ ነገሮች አንዱ የሆነውን የእነዚህን ማይክሮ ተቆጣጣሪ ተግባራት ቅርብ መዳረሻ እናገኛለን። እሱ የበለጠ “በእጆች ላይ” እና እንደነበረው “ከመድረክ በስተጀርባ” በጣም ያነሰ እየተከናወነ ነው። ስለዚህ እነዚህን መዝገቦች እንደ አድካሚ ተግባር አድርገው አያስቡ። የስብሰባ ቋንቋን አስደሳች የሚያደርገው ይህ ነው! እኛ ከቺፕው ውስጣዊ አሠራር እና አመክንዮ ጋር በጣም ግላዊ ግንኙነት እያገኘን እና እኛ የምንፈልገውን በትክክል እንዲያደርግ እናደርጋለን - ከእንግዲህ እና ከዚያ ያነሰ። የባከነ የሰዓት ዑደቶች የሉም። ስለዚህ እኛ ለማቀናበር የሚያስፈልጉን የመቀየሪያዎች ዝርዝር እነሆ-

  1. ይህ ቢት በርቶ ከሆነ ኤዲሲን ይዘጋዋልና የኃይል ቅነሳ ኤዲሲ ቢት ፣ PRADC ን ያጥፉ። የኃይል ቅነሳ መመዝገቢያ በመሠረቱ ኃይል በማይፈልጉበት ጊዜ የሚጠቀሙባቸውን የተለያዩ ነገሮች የሚዘጋበት መንገድ ነው። ኤዲሲን እየተጠቀምን ስለሆነ በዚህ መንገድ አካል ጉዳተኛ አለመሆኑን ማረጋገጥ እንፈልጋለን። (ገጽ 46 ላይ PRADC ን ይመልከቱ)
  2. በኤዲሲ ባለ ብዙ ማባዣ ምርጫ (ADMUX) መዝገብ (ADMUX) መዝገብ ውስጥ MUX3… ሆኖም ፣ እኔ ከ ADC0 ውጭ ሌላ ወደብ የሚጠቀሙ ከሆነ እነዚህን መቀያየሪያዎች በዚሁ መሠረት መቀያየር ስለሚኖርዎት እኔ እጨምራለሁ። የተለያዩ የ MUX3 ፣ MUX2 ፣ MUX1 ፣ MUX0 ውህዶች ማናቸውንም የአናሎግ ወደቦችን እንደ ግብዓትዎ እንዲጠቀሙ ይፈቅድልዎታል እንዲሁም በአንድ ጊዜ የተለያዩ የአናሎግ ምልክቶችን በአንድ ጊዜ ማየት ከፈለጉ እነዚህን በራሪ ላይ መለወጥ ይችላሉ።
  3. በኤዲኤምኤክስ መመዝገቢያ ውስጥ REFS0 እና REFS1 ቢትዎችን ያጥፉ ፣ ስለዚህ AREF እንደ ውስጣዊ ማጣቀሻ ሳይሆን እንደ ማጣቀሻ ቮልቴጅ እንጠቀም (ገጽ 248 ን ይመልከቱ)።
  4. በ ADMUX ውስጥ የ ADLAR ቢት አብራ ስለዚህ ውጤቱ “በግራ ተስተካክሏል” በሚቀጥለው ምርጫ ይህንን ምርጫ እንወያይበታለን።
  5. ዲጂታል ግቤትን ወደ PC0 ለማጥፋት በዲጂታል ግብዓት አሰናክል መዝገብ (DIDR0) ውስጥ የ ADC0D ቢት ያዘጋጁ። እኛ ያንን ወደብ ለአናሎግ ግብዓት እንጠቀምበታለን ፣ ለእሱም ዲጂታል ግቤቱን እናሰናክለዋለን።
  6. የቮልቴጅ ምልክት ወደ ላይ ወደ INT0 ፒን (PD2) መነሳት እንደምንፈልግ ለማመልከት ISC0 እና ISC1 ን በውጫዊ መቋረጫ መቆጣጠሪያ መዝገብ A (EICRA) ውስጥ ያዘጋጁ ፣ ገጽ 71 ይመልከቱ።
  7. በዚህ ፒን ላይ ማቋረጫዎችን እየተጠቀምን አለመሆኑን ለማመልከት በውጫዊ ማቋረጫ ጭንብል መመዝገቢያ (EIMSK) ውስጥ INT0 እና INT1 ን ያፅዱ። በዚህ ፒን ላይ ማቋረጫዎችን ማንቃት ከቻልን በአድራሻ 0x0002 ላይ የማቋረጫ ተቆጣጣሪ እንፈልጋለን ፣ ግን ይልቁንስ በዚህ ፒን ላይ ያለው ምልክት የኤ.ዲ.ሲን ልወጣ እንዲቀሰቅሰው ፣ ያጠናቀቀው በኤዲሲ ቅየራ የሚከናወነው ሙሉ ማቋረጥ በ አድራሻ 0x002A። ገጽ 72 ን ይመልከቱ።
  8. ኤዲሲን ለማንቃት በኤዲሲ ቁጥጥር እና በሁኔታ መመዝገቢያ A (ADCSRA) ውስጥ የ ADC Enable (ADEN) ቢት (ቢት 7) ያዘጋጁ። ገጽ 249 ን ይመልከቱ።
  9. የአናሎግ ምልክቱን ለማንበብ በፈለግን ቁጥር የኤዲሲን የመነሻ ልወጣ ቢት (ADSC) በማቀናበር አንድ ልወጣ መጀመር እንችላለን ፣ ሆኖም ግን ፣ አሁን አንድ ሰው አዝራሩን በሚገፋበት ጊዜ በራስ -ሰር እንዲያነብ እንመርጣለን ፣ ስለዚህ በምትኩ ኤዲሲውን እናነቃለን ቀስቅሴ በራስ -ሰር እንዲሠራ በ ADCSRA መዝገብ ውስጥ Autotrigger አንቃ (ADATE) ን ያንቁ።
  10. እንዲሁም የኤ.ዲ.ኤስ.ሲ ሰዓት የሲፒዩ ሰዓት በ 128 እጥፍ እንዲከፋፈል ADPS2..0 ቢት (የ AD Prescalar ቢት) ወደ 111 አስቀምጠናል።
  11. እኛ PDT ን የሚያነቃቃውን የኤዲሲ ምንጭ እንመርጣለን ፣ እሱም INT0 (የውጭ መቋረጥ ጥያቄ 0) ተብሎም ይጠራል። በ ADCSRB መዝገብ ውስጥ ያሉትን የተለያዩ ቁርጥራጮች በመቀየር ይህንን እናደርጋለን (በገጽ 251 ላይ ያለውን ሠንጠረዥ 24-6 ይመልከቱ)። ኤዲሲው ያንን ፒን እንዲያነሳ ADTS0 ን ማጥፋት ፣ ADTS1 ን ማብራት እና ADTS2 ን እንደምንፈልግ በጠረጴዛው እናያለን። አንዳንድ ቀጣይነት ያለው የአናሎግ ምልክት (እንደ የድምፅ ናሙና ወይም ሌላ ነገር) እያነበብን ከሆነ የአናሎግ ወደቡን በተከታታይ ናሙና ማድረግ ከፈለግን ይህንን ወደ ነፃ የሩጫ ሁኔታ እናስቀምጠው ነበር። በ PD2 ላይ ቀስቅሴዎችን ለማቀናበር የምንጠቀምበት ዘዴ መቋረጥ ሳያስከትል የአናሎግ ወደብ PC0 ን የ ADC ን ንባብ ያስነሳል። ልወጣው ሲጠናቀቅ መቋረጡ ይመጣል።
  12. በ ADCSRA መዝገብ ውስጥ የኤዲሲ ማቋረጫ አንቃ (ADIE) ቢት ያንቁ ፣ ስለዚህ የአናሎግ ወደ ዲጂታል ልወጣ ሲጠናቀቅ መቋረጥን ያመነጫል እና እኛ በ
  13. ማቋረጫዎችን ለማንቃት በ “SREG” ውስጥ “I bit” ን ያዘጋጁ።

መልመጃ 1 ፦ ምን እየተከናወነ እንዳለ እና ወደ ተለዋጭ ቅንጅቶች ከቀየርናቸው ምን እንደሚሆን እንዲረዱ ከላይ ለተዘረዘሩት እያንዳንዱ ቅንጅቶች በመረጃ ዝርዝሩ ውስጥ ያሉትን ተዛማጅ ክፍሎች ማንበብዎን ያረጋግጡ።

ደረጃ 7: የተቋረጠውን ተቆጣጣሪ ይፃፉ

በመጨረሻው ደረጃ ላይ እኛ በፒዲ 2 ላይ የተገኘ የከፍታ ጠርዝ በ PC0 ላይ አናሎግን ወደ ዲጂታል ልወጣ እንዲቀይር እና ይህ ልወጣ ሲጠናቀቅ የኤ.ዲ.ሲ ልወጣ የተሟላ መቋረጥን እንዲጥል ለማድረግ እኛ እንዳዋቀርነው ተመልክተናል። አሁን በዚህ ማቋረጥ አንድ ነገር ማድረግ እንፈልጋለን። በገጽ 65 ላይ ሠንጠረዥ 12-6 ን ከመረመሩ ሊሆኑ የሚችሉ ማቋረጦች ዝርዝር ያያሉ። RESET በአድራሻ 0x0000 ላይ ሲቋረጥ እና ቀደም ባለው አጋዥ ሥልጠና ውስጥ ሰዓት ቆጣሪ/Counter0 Overflow በአድራሻ 0x0020 ሲቋረጥ አይተናል። አሁን በሰንጠረ by የምናየው የኤዲሲ ማቋረጫ በአድራሻ 0x002A ላይ ማየት እንፈልጋለን። ስለዚህ በስብሰባ ቋንቋ ቋንቋችን መጀመሪያ ላይ እንዲህ የሚል መስመር ያስፈልገናል።

.org 0x002Arjmp ADC_int

ኤዲሲው ልወጣውን ባጠናቀቀ ቁጥር ADC_int ወደተሰየመው ወደ ማቋረጫ ተቆጣጣሪችን የሚዘል። ስለዚህ የእኛን የተቋረጠ ተቆጣጣሪ እንዴት መጻፍ አለብን? ኤዲሲ የሚሠራበት መንገድ የሚከተለውን ስሌት በማከናወን ነው።

ADC = ቪን x 1024 / Vref

ስለዚህ በቁልፍ ሰሌዳው ላይ የ “ሬዲዮ” ቁልፍን ብገፋ ምን እንደሚሆን እንመልከት። እንደዚያ ከሆነ በ PC0 ላይ ያለው voltage ልቴጅ ወደ አንዳንድ እሴት ይለወጣል ፣ 1.52V ይበሉ ፣ እና ቪሬፍ በ 5 ቪ ላይ ስለሆነ እኛ ይኖረናል

ADC = (1.52V) x 1024 / 5V = 311.296

እና ስለዚህ እንደ 311 ሆኖ ይታያል። ይህንን ወደ ቮልቴጅ መለወጥ ከፈለግን ስሌቱን ብቻ እንገለብጠው ነበር። እኛ በመካከላቸው በመለየት ብቻ ለትክክለኛው የቮልቴጅ ፍላጎት ስለሌለን ይህንን ማድረግ አያስፈልገንም። ልወጣው ሲጠናቀቅ ውጤቱ በ ADCH እና ADCL መመዝገቢያዎች ውስጥ በተቀመጠው ባለ 10 ቢት ቁጥር ውስጥ ተከማችቶ እኛ “እንዲስተካከል” አድርገናል ማለት ነው 10-ቢት በ ADCH ቢት 7 ይጀምራል እና ወደ ታች ይሂዱ የ ADCL ቢት 6 (በእነዚህ ሁለት መመዝገቢያዎች ውስጥ በአጠቃላይ 16 ቢቶች አሉ እና እኛ የምንጠቀማቸው 10 ዎቹን ማለትም 1024 ሰርጦችን ነው)። በኤዲኤምኤክስ መመዝገቢያ ውስጥ የ ADLAR ቢት ን በማፅዳት ከፈለግን ውጤቱ “በትክክል ተስተካክሏል” ሊኖረን ይችላል። በግራ የተስተካከለ የምንመርጥበት ምክንያት ምልክቶቻችን በጣም ርቀው በመሆናቸው የሰርጥ ቁጥሩ የመጨረሻዎቹ ሁለት አሃዞች አግባብነት የሌላቸው እና ምናልባት ጫጫታ ብቻ ስለሆኑ የላይኛውን 8 አሃዞች ብቻ በመጠቀም የቁልፍ ጭብጦቹን እንለያቸዋለን ፣ በሌላ አነጋገር ፣ የትኛው አዝራር እንደተጫነ ለማወቅ ADCH ን ብቻ ማየት ያስፈልገናል። ይመዝገቡ ፣ ያንን ቁጥር ወደ የቁልፍ ሰሌዳ እሴት ይለውጡ እና ከዚያ ያንን እሴት ወደ ‹‹9›› የሚለው መግፋት ፣ የ“00001001”ተጓዳኝ መብራቱን ማብራት እንዲችል ያንን ዋጋ ወደ እኛ የመመዝገቢያ ተንታኝ ኤልኢዲ ይላኩ። ምንም እንኳን የተለያዩ አዝራሮችን ስንገፋ በመጀመሪያ በ ADCH ውስጥ ምን እንደሚታይ ማየት ቢኖርብንም። ስለዚህ የ ADCH ይዘቶችን ወደ ተንታኝ ማሳያ የሚልክ ቀለል ያለ የማቋረጥ ተቆጣጣሪ ብቻ እንፃፍ። ስለዚህ እኛ የምንፈልገው እዚህ አለ -

ADC_int: lds analyzer ፣ ADCH ፤ የ ADCH ን እሴት በእኛ ተንታኞች EIFR ፣ 0 ፣ ላይ ይጫኑ። እንደገና ለመሄድ ዝግጁ እንዲሆን የውጭውን ማቋረጫ ባንዲራ ያፅዱ

በአሁኑ ጊዜ ኮዱን ከአናተራችን በመማሪያ 5 ውስጥ መቅዳት እና ይህንን ማቋረጫ እና የመቀየሪያ ቅንብሮችን ማከል እና ማስኬድ መቻል አለብዎት። መልመጃ 2 - ኮዱን ይፃፉ እና ያሂዱ። በእርስዎ ተንታኝ ማሳያ ላይ የ ADCH ማሳያ እንዲያገኙ ይመልከቱ። ተመሳሳዩን የቁልፍ ሰሌዳ ብዙ ጊዜ ለመግፋት ይሞክሩ። በ ADCH ውስጥ ሁል ጊዜ ተመሳሳይ እሴት ያገኛሉ?

ደረጃ 8 የቁልፍ መጫኛ እሴቶችን ያውጡ

የቁልፍ መጫኛ እሴቶችን ያውጡ
የቁልፍ መጫኛ እሴቶችን ያውጡ

አሁን ማድረግ ያለብን በ ADCH ውስጥ ያሉትን እሴቶች ከተጫነው ቁልፍ ጋር ወደሚዛመዱ ቁጥሮች መለወጥ ነው። ለእያንዳንዱ የቁልፍ መጫኛ የ ADCH ይዘቶችን በመፃፍ እና ያንን በስዕሉ ላይ እንዳደረግሁት ወደ አስርዮሽ ቁጥር በመቀየር ይህንን እናደርጋለን። በእኛ ማቋረጫ አያያዝ አሰራሮች ውስጥ ኤዲሲው በዚያ ክልል ውስጥ ያለውን ማንኛውንም ነገር ወደተሰጠው የቁልፍ መጫኛ (ካርታ) ካርታ እንዲያደርግ ከእያንዳንዱ የቁልፍ መጫኛ ጋር የሚዛመዱትን አጠቃላይ እሴቶችን እንመለከታለን።

መልመጃ 3-ይህንን ካርታ ያድርጉ እና ከዚያ የእርስዎን የኤዲሲ ማቋረጫ የዕለት ተዕለት እንቅስቃሴ እንደገና ይፃፉ።

ለኔ ያገኘሁት ይኸው ነው (የእርስዎ በጣም የተለየ ሊሆን ይችላል)። ለእያንዳንዱ የቁልፍ መጫኛ ከተለያዩ እሴቶች ጋር እንዳዋቀርኩት ልብ ይበሉ።

ADC_int:; የውጭ መቋረጥ handlerclr ተንታኝ; ለአዲስ የቁጥር ቁልፎች buttonH ፣ ADCH ይዘጋጁ። ኤች.ዲ.ሲ clccpi buttonH ሲነበብ ፣ ኤዲሲ ይዘምናል ፣ 240brlo ፒሲ+3; ADCH ትልቅ ከሆነ የ 1ldi ተንታኝ ፣ 1 ነው። ስለዚህ ተንታኝ በ 1rjmp መመለሻ; እና clccpi buttonH ፣ 230 ን ይመልሱ። ADCH ትልቅ ከሆነ ከዚያ 2brlo PC+3ldi analyzer ፣ 2rjmp መመለስ clccpi buttonH ፣ 217brlo PC+3ldi analyzer ፣ 3rjmp መመለስ clccpi buttonH ፣ 203brlo PC+3ldi analyzer ፣ 4rjmp መመለስ clccpi buttonH ፣ 187brlo PC+3ldi analyzer ፣ 5rjmp መመለስ clccpi አዝራር ፣ 155brlo ፒሲ+3ldi ተንታኝ ፣ 6rjmp ተመላሽ clccpi buttonH ፣ 127brlo ፒሲ+3ldi ተንታኝ ፣ 255; እኛ ሁሉም እንደ onrjmp መመለስ clccpi buttonH ፣ 115brlo PC+3ldi analyzer ፣ 7rjmp clccpi buttonH ፣ 94brlo PC+3ldi analyzer ፣ 8rjmp መመለስ clccpi buttonH ፣ 62brlo PC+3ldi analyzer ፣ 9rjmp መመለስ clccpi buttonH ፣ 37brlo PC+3ldi analyzer ፣ 0b11110000; የኮከብ ምልክት የላይኛው ግማሽ onrjmp መመለስ clccpi buttonH ፣ 28brlo PC+3ldi analyzer ፣ 0rjmp clccpi buttonH ፣ 17brlo PC+3ldi analyzer ፣ 0b00001111; የሃሽ ምልክት የታችኛው ግማሽ onrjmp መመለስ clccpi buttonH ፣ 5brlo PC+3ldi analyzer ፣ 0b11000011; ሬዲያል ከላይ 2 ታች 2rjmp መመለስ ldi analyzer ፣ 0b11011011; አለበለዚያ ስህተት ተከስቷል ተመለሰ - ጡረታ

ደረጃ 9 ኮድ እና ቪዲዮ ለስሪት 1

ለዚህ የቁልፍ ሰሌዳ አሽከርካሪ የመጀመሪያ ስሪት የእኔን ኮድ አያይዘዋለሁ። በዚህ ውስጥ ኤዲሲው ከቁልፍ ሰሌዳው ግብዓቱን እንዲያነብ ለማድረግ ቁልፉን መግፋት እና ከዚያ ቁልፉን መግፋት ያስፈልግዎታል። እኛ የምንመርጠው ምንም አዝራር የለም ፣ ግን ልወጣውን ለማድረግ ምልክቱ ከቁልፍ መጫኛ ራሱ ነው። መልመጃ 3 - ይህንን ኮድ ሰብስበው ይስቀሉ እና ይሞክሩት። ምናልባት ከእኔ ሊለዩ ስለሚችሉ የተለያዩ የመቀየሪያ ገደቦችን ከቁልፍ ግፊትዎ ቮልቴጅ ጋር ለማዛመድ ሊገደዱ ይችላሉ። በአንድ አዝራር ፋንታ ለሁለቱም ለ ADC0 እና ለውጭ መቋረጫ ፒን ግብዓትን ከቁልፍ ሰሌዳው ለመጠቀም ቢሞክሩ ምን ይሆናል? እኔ ደግሞ የዚህን የቁልፍ መጫኛ ሾፌራችንን የመጀመሪያ ስሪት ቪዲዮ እያያዛለሁ። ያንን ያስተውላሉ። በእኔ ኮድ ውስጥ የቁልል ጠቋሚውን የሚጀምር ክፍል አለ። ተለዋዋጮችን እና ምን-ያልሆነን በምንቆጣጠርበት ጊዜ ከቁልል ውስጥ ልንገፋቸው እና ልናስፈልጋቸው የምንፈልጋቸው የተለያዩ መዝገቦች አሉ እና በኋላ ላይ ማስቀመጥ እና ወደነበረበት መመለስ የምንፈልጋቸው መዝገቦችም አሉ። ለምሳሌ ፣ SREG በማቋረጦች ሁሉ ተጠብቆ የማይቆይ መዝገብ ነው ፣ ስለዚህ በኦፕራሲዮኖች ምክንያት የተቀመጡ እና የተሰረዙ የተለያዩ ባንዲራዎች በአንድ ነገር መካከል መቋረጥ ቢከሰት ሊቀየሩ ይችላሉ። ስለዚህ በማቋረጫ ተቆጣጣሪ መጀመሪያ ላይ SREG ን ወደ ቁልሉ ላይ ቢገፉት እና በአቋራጭ ተቆጣጣሪው መጨረሻ ላይ እንደገና ቢያነሱት ጥሩ ነው። እሱ እንዴት እንደተጀመረ ለማሳየት እና በኋላ እንዴት እንደምንፈልግ ለመገመት በኮዱ ውስጥ አስቀምጫለሁ ፣ ነገር ግን በእኛ ኮድ ውስጥ በሚቋረጥበት ጊዜ SREG ምን እንደሚሆን ግድ ስለሌለኝ ቁልል ለዚህ አልጠቀምኩም። በሚነሳበት ጊዜ በመለያዎች ውስጥ የተለያዩ ቁርጥራጮችን ለማቀናበር የመቀየሪያ ሥራውን እንደተጠቀምኩ። ለምሳሌ በመስመሩ ውስጥ

ldi temp ፣ (1 <> sts EICRA ፣ temp

ከላይ ባለው የኮድ የመጀመሪያ መስመር ላይ ያለው የ «<<» ትዕዛዝ የመቀየሪያ ሥራ ነው። በመሰረቱ 0b00000001 የሆነውን የሁለትዮሽ ቁጥር 1 ይወስዳል እና በቁጥር ISC01 መጠን ይቀራል። በ EICRA መዝገብ ውስጥ ISC01 የተሰኘው ቢት አቀማመጥ ይህ ነው። ISC01 ቢት 1 ስለሆነ ፣ ቁጥር 1 ወደ ግራ 1 አቀማመጥ 0b00000010 ይሆናል። በተመሳሳይ ሁኔታ ሁለተኛው ፣ ISC00 ፣ የ EICRA ቢት 0 ነው እና ስለዚህ የቁጥር 1 ሽግግር ወደ ዜሮ አቀማመጥ ነው። በመጀመሪያው የመማሪያ ትምህርት ውስጥ ያወረዱትን እና ከዚያ ጊዜ ጀምሮ evrr ን እየተጠቀሙበት ያለውን የ m328Pdef.inc ፋይል ሌላ እይታ ከተመለከቱ ፣ እሱ የ “.equ” መግለጫዎች ዝርዝር ብቻ መሆኑን ያያሉ። ISC01 ከ 1 ጋር እኩል እንደሆነ ታገኛለህ። እኛ ሰዎች ለማንበብ እና ለመጻፍ ኮድ እንዲረዱን ለመመዝገቢያ ቢት ስሞች ብቻ ናቸው። አሁን ፣ ከላይ ባሉት በሁለቱ ፈረቃ ሥራዎች መካከል ያለው አቀባዊ መስመር አመክንዮአዊ “ወይም” ክዋኔ ነው። ቀመር ይኸውና ፦

0b00000010 | 0b00000001 = 0b00000011

እና እኛ የምንጭነው (“ldi” ን በመጠቀም) ወደ ቴምፕ ውስጥ ነው። ሰዎች ይህንን ዘዴ የሚጠቀሙት እሴቶችን ወደ መዝገብ ውስጥ ለመጫን የሚጠቀሙበት ምክንያት አንድ ሰው ከቁጥር ይልቅ የትንሹን ስም እንዲጠቀም ያስችለዋል እና ይህ ኮዱን ለማንበብ በጣም ቀላል ያደርገዋል። እኛ የተጠቀምናቸው ሌሎች ሁለት ቴክኒኮችም አሉ። መመሪያዎቹን “ኦሪ” እና “andi” እንጠቀማለን። እነዚህ በመዝገቡ ውስጥ ያሉትን ማንኛውንም ቢት ሳይቀይሩ በቅደም ተከተል እንድናስቀምጥ እና እንድናጸዳ ያስችለናል። ለምሳሌ እኔ ስጠቀምበት

የአየር ሙቀት ፣ (1

ይህ “ወይም” የሙቀት መጠን በ 0b00000001 1 ን በዜሮ ቢት ውስጥ የሚያስቀምጥ እና ቀሪውን ሁሉ ሳይለወጥ የሚተው። እንዲሁም ስንጽፍ

andi temp, 0b11111110

ይህ ዜሮውን የሙቀት መጠን ወደ 0 ይለውጣል እና የተቀሩትን ሁሉ ሳይለወጥ ይቀራል።

መልመጃ 4: ኮዱን ማለፍ እና እያንዳንዱን መስመር መረዳቱን ማረጋገጥ አለብዎት። ነገሮችን ለማድረግ እና የተሻለ ፕሮግራም ለመፃፍ የተሻሉ ዘዴዎችን መፈለግ አስደሳች ሊሆን ይችላል። ነገሮችን ኮድ ለማድረግ መቶ መንገዶች አሉ እና ከእኔ በጣም የተሻለ መንገድ ማግኘት እንደሚችሉ እርግጠኛ ነኝ። እርስዎም (ሰማይ ይከለክላል!) ስህተቶችን እና ግድፈቶችን ሊያገኙ ይችላሉ። በዚህ ሁኔታ እነሱ እንዲስተካከሉ ስለእነሱ መስማት እፈልጋለሁ።

እሺ ፣ አሁን ያንን ከመጠን በላይ የሆነ ቁልፍን ማስወገድ እንደምንችል እንይ…

ደረጃ 10 ፦ ለ ስሪት 2 ኮድ

አዝራሩን ለማስወገድ ቀላሉ መንገድ እሱን ሙሉ በሙሉ ማስወገድ ፣ ግቤቱን ወደ PB2 መርሳት እና ኤዲሲውን ወደ “ነፃ ሩጫ ሁኔታ” መለወጥ ብቻ ነው።

በሌላ አነጋገር ADTS2 ፣ ADTS1 ፣ እና ADTS0 ሁሉም ዜሮ እንዲሆኑ በቀላሉ የ ADCSRB መዝገቡን ይለውጡ።

ከዚያ የመጀመሪያውን ልወጣ የሚጀምረው በ ADCSRA ውስጥ የ ADSC ቢት ወደ 1 ያዘጋጁ።

አሁን ወደ ማይክሮ መቆጣጠሪያዎ ይስቀሉት እና ቁልፉን በሚጫኑበት ጊዜ እና ቁልፉን በሚጫኑበት ጊዜ ብቻ ትክክለኛው ቁጥር በማሳያው ላይ ይመጣል። ይህ የሆነበት ምክንያት ኤዲሲው ያለማቋረጥ የ ADC0 ወደብ ናሙና በመውሰድ እና እሴቱን በማሳየቱ ነው። ጣትዎን ከአዝራሩ ሲያነሱ ፣ “የአዝራር መነሳት” ጥቂት የዘፈቀደ እሴቶች በጣም በፍጥነት እንዲከሰቱ ያደርጋል እና ከዚያ ወደ 0V ግብዓት ይመለሳል። በእኛ ኮድ ውስጥ ይህ 0V እንደ 0b11011011 ሆኖ ይታያል (ምክንያቱም የቁልፍ መጫኛ ‹0› አስቀድሞ 0b00000000 የማሳያ እሴትን ስለሚጠቀም)

በሁለት ምክንያቶች ይህ ቢሆንም የምንፈልገው መፍትሔ አይደለም። መጀመሪያ አዝራሩን መያዝ የለብንም። እኛ አንድ ጊዜ እሱን መጫን እና ቁጥሩ እንዲታይ (ወይም በሌላ አጋዥ ስልጠና በአንዳንድ አዲስ ኮድ ውስጥ ጥቅም ላይ እንዲውል) እንፈልጋለን። በሁለተኛ ደረጃ ፣ ADC0 ን ያለማቋረጥ ናሙና ማድረግ አንፈልግም። አንድ አዲስ ንባብ እንዲወስድ ፣ እንዲለውጠው ፣ እና ከዚያ አዲስ ቁልፍ ቁልፍ አዲስ ልወጣ እስኪያነሳ ድረስ እንዲተኛ እንፈልጋለን። የማይክሮ መቆጣጠሪያው እንዲያደርግ የሚፈልጉት ብቸኛው ነገር አንዳንድ የአናሎግ ግቤትን ሁል ጊዜ ማንበብ ከሆነ - የእውነተኛ ጊዜ ሙቀትን ወይም የሆነ ነገር ለማሳየት እንደፈለጉ ነፃ የመሮጥ ሁኔታ በጣም ጥሩ ነው።

ስለዚህ ሌላ መፍትሄ እንፈልግ…

ደረጃ 11: አዝራሩን እንዴት እናስወግደዋለን? ስሪት 3

አዝራሩን እንዴት እናስወግዳለን? ስሪት 3
አዝራሩን እንዴት እናስወግዳለን? ስሪት 3

መቀጠል የምንችልባቸው ብዙ መንገዶች አሉ። አዝራሩን ለማስወገድ መጀመሪያ ሃርድዌር ማከል እንችላለን። ለምሳሌ ፣ በቁልፍ ሰሌዳው የውጤት መስመር ላይ በወረዳ ውስጥ ትራንዚስተር ለማስቀመጥ እንሞክር ፣ ስለሆነም የአሁኑን ትንሽ ውዝግብ ከውጤቱ ወስዶ የ 5 ቮ የልብ ምት ወደ መቋረጥ ፒን PD2 ይልካል።

ሆኖም ፣ ይህ ምናልባት ቢያንስ ጫጫታ ይሆናል እና በጣም መጥፎው የቁልፍ ሰሌዳው የቮልቴጅ ውፅዓት የኤዲሲ ንባብ ከመያዙ በፊት ለማረጋጋት ጊዜ ስለሌለው ለትክክለኛ የቁልፍ ሰሌዳ ንባብ በቂ ጊዜ አይፈቅድም።

ስለዚህ እኛ የሶፍትዌር መፍትሄን ማምጣት እንመርጣለን። እኛ ማድረግ የምንፈልገው በፒዲ 2 ፒን ላይ ማቋረጫ ማከል እና የቁልፍ ሰሌዳውን ፒን አንድ ንባብ የሚጠራውን ለእሱ የሚያቋርጥ ተቆጣጣሪ መፃፍ ነው። በሌላ አነጋገር ፣ ከኤ.ዲ.ሲ አውቶሞቲቭ ማቋረጫውን እናስወግዳለን ፣ እና በውስጡ ኤዲሲን የሚጠራውን የውጭ መቋረጥ እንጨምራለን። በዚያ መንገድ ኤዲሲን ለማንበብ ምልክቱ የሚመጣው የ PD2 ምልክት ቀድሞውኑ ከተከሰተ በኋላ ነው እና ይህ የ PC0 ፒን ንባብ ከማንበብ እና ከመቀየሩ በፊት ለትክክለኛ voltage ልቴጅ ለመረጋጋት በቂ ጊዜ ሊሰጥ ይችላል። አሁንም ውጤቱን ወደ ተንታኝ ማሳያ የሚያወጣ የኤዲሲ ማጠናቀቂያ ማቋረጫ ይኖረናል።

ትክክለኛ ነገር? ደህና ፣ እናድርገው…

የተያያዘውን አዲሱን ኮድ ይመልከቱ።

የሚከተሉትን ለውጦች ታያለህ

  1. የ INT0 የውጭ መቋረጥን ለመቆጣጠር በአድራሻ.org 0x0002 ላይ rjmp አክለናል
  2. በ INT0 ፒን ላይ ማቋረጥ እንደምንፈልግ ለማመልከት የ EIMSK ምዝገባን ቀይረናል
  3. አውቶሞቲንግን ለማሰናከል በ ADCSRA መዝገብ ውስጥ ያለውን የ ADATE ፒን ቀይረናል
  4. ADATE ሲጠፋ አግባብነት ስለሌላቸው የ ADCSRB ቅንብሮችን አስወግደናል
  5. የ INT0 ማቋረጫ አሠራሩ ሲጠናቀቅ በራስ -ሰር ስለሚያከናውን የውጭ ቀስቃሽ ባንዲራ ዳግም ማስጀመር የለብንም - ቀደም ሲል እኛ የማቋረጥ አሠራር አልነበረንም ፣ እኛ በዚያ ፒን ላይ ኤዲሲን ከምልክት አጥፍተናል ፣ ስለዚህ እኛ ማድረግ ነበረብን ያንን ባንዲራ በእጅ ያፅዱ።

አሁን በተቋረጠው ተቆጣጣሪ ውስጥ በቀላሉ ከ ADC አንድ ነጠላ ልወጣ እንጠራለን።

መልመጃ 5 - ይህንን ስሪት ያሂዱ እና ምን እንደሚከሰት ይመልከቱ።

ደረጃ 12 ኮድ እና ቪዲዮ ለሥራ ስሪት

ባለፈው ስሪት እንዳየነው ፣ የአቋራጭ መቋረጫው በጥሩ ሁኔታ አይሰራም ምክንያቱም መቋረጫው PD2 ን ለመሰካት በሚነሳበት ጠርዝ ላይ ስለሚነሳ እና የተቋረጠው ተቆጣጣሪ የኤ.ዲ.ሲ ቅየራውን ይጠራል። ሆኖም ፣ ኤዲሲው ከመረጋጋቱ በፊት የቮልቴጅ ንባቡን ያገኛል እና ስለዚህ የማይረባ ነገር ያነባል።

እኛ የሚያስፈልገን በ PD2 እና በኤዲሲ ንባብ በ PC0 ላይ ባለው መቋረጥ መካከል መዘግየት ማስተዋወቅ ነው። እኛ ቆጣሪ/ቆጣሪን ፣ የቆጣሪ ፍሰት መቋረጥን እና የመዘግየትን አሠራር በመጨመር ይህንን እናደርጋለን። እንደ እድል ሆኖ አስቀድመን ይህንን ከመማሪያ 3 እንዴት ማድረግ እንደሚቻል እናውቃለን! ስለዚህ እኛ አግባብ የሆነውን ኮድ ከዚያ ቀድተን እንለጥፋለን።

የውጤቱን ኮድ እና በስራ ላይ የሚያሳየውን ቪዲዮ ሰጥቻለሁ።

ንባቦቹ አንድ ሰው እንደሚጠብቀው ያህል ትክክል እንዳልሆኑ ያስተውላሉ። ይህ ምናልባት በበርካታ ምንጮች ምክንያት ሊሆን ይችላል-

  1. እኛ በፒሲ 0 ንባብ ላይ ተጽዕኖ በሚያሳድር PD2 ላይ ለመቀስቀስ ከቁልፍ ሰሌዳው የ voltage ልቴጅ ውፅዓት እየመታን ነው።
  2. ምርጡን ንባብ ለማግኘት ከመቀስቀሻው በኋላ ምን ያህል ጊዜ እንደሚዘገይ በትክክል አናውቅም።
  3. የኤ.ዲ.ሲ ልወጣ ለማጠናቀቅ ጥቂት ዑደቶችን ይወስዳል ይህም ማለት በቁልፍ ሰሌዳው ላይ ፈጣን እሳት አንችልም ማለት ነው።
  4. በቁልፍ ሰሌዳው ውስጥ ምናልባት ጫጫታ አለ።
  5. ወዘተ…

ስለዚህ ፣ የቁልፍ ሰሌዳው እንዲሠራ ብናደርግም ፣ እና እኛ ወደ ተንታኝ ማሳያ ብቻ ከማውጣት ይልቅ የቁልፍ መጫኛ እሴቶችን በሌላ መንገድ በመጠቀም በመተግበሪያዎች ውስጥ ልንጠቀምበት እንችላለን ፣ በጣም ትክክል አይደለም እና በጣም የሚያበሳጭ ነው። ለዚህም ነው የቁልፍ ሰሌዳዎችን ሽቦ ለማገናኘት በጣም ጥሩው መንገድ እያንዳንዱን ውፅዓት ከቁልፍ ሰሌዳው ወደ ሌላ ወደብ መጣበቅ እና በየትኛው ወደቦች ቮልቴጅ እንደሚታይ በየትኛው ቁልፍ እንደተጫነ መወሰን ነው። ያ ቀላል ፣ በጣም ፈጣን እና በጣም ትክክለኛ ነው።

በእውነቱ ፣ አንድ ሰው እኛ እዚህ እንዳደረግነው የቁልፍ ሰሌዳ መንዳት የሚፈልግበት ሁለት ምክንያቶች ብቻ አሉ-

  1. በ 8 ፋንታ በማይክሮ መቆጣጠሪያችን ላይ 2 ፒኖችን ብቻ ይጠቀማል።
  2. እንደ የሙቀት ንባቦች ፣ ፖታቲሞሜትሮችን ማዞር ፣ ወዘተ የመሳሰሉትን እዚያ ከሚገኙት መደበኛ ነገሮች የሚለየው የኤዲሲን የተለያዩ ገጽታዎችን ለማሳየት ታላቅ ፕሮጀክት ነው። የነጠላ ንባቦችን እና የውጭ ፒን ራስ-ማስነሻ ምሳሌን እፈልጋለሁ። ከሲፒዩ-ጎብሊንግ ሞድ ብቻ ከማሄድ ይልቅ።

ለማንኛውም ፣ ለእርስዎ የመጨረሻ ሁለት ልምምዶች እነሆ-

መልመጃ 6-የመመልከቻ ሰንጠረዥን ለመጠቀም የኤዲሲን ልወጣ ሙሉ የማቋረጥ ተቆጣጣሪ እንደገና ይፃፉ። ኢ. ስለዚህ በሠንጠረ in ውስጥ ካለው የመጀመሪያ ንጥል ጋር የአናሎግ እሴቱን እንዲሞክር እና ትልቅ ከሆነ ከተቋረጠው ይመለሳል ፣ ካልሆነ ከዚያ Z ን ወደሚቀጥለው ንጥል ይጨምራል እና ቅርንጫፎቹን እንደገና ወደ ፈተናው ይመለሳል። ይህ ኮዱን ያሳጥራል እና የተቋረጠውን አሠራር ያፀዳል እና የበለጠ የሚያምር ይመስላል። (እንደ ቀጣዩ ደረጃ ሊሆን የሚችል መፍትሔ እሰጣለሁ) መልመጃ 7 - ማይክሮ መቆጣጠሪያ ላይ የቁልፍ ሰሌዳዎን እስከ 8 ፒኖች ድረስ ያያይዙት እና ቀላል ነጂውን ይፃፉ እና ምን ያህል ቆንጆ እንደሆነ ይለማመዱ። የእኛ ዘዴ በተሻለ ሁኔታ እንዲሠራ ለማድረግ ጥቂት መንገዶችን ማሰብ ይችላሉ?

ለዚህ ማጠናከሪያ ትምህርት ያ ብቻ ነው። የመጨረሻውን ስሪት ከጠቋሚዎች ጋር አያይዣለሁ። እኛ ወደ መጨረሻው ግባችን እየቀረብን ስንሄድ የቁልፍ ሰሌዳውን በሥልጠና 9 ላይ እንዴት ሰባት የቁልፍ ማሳያዎችን መቆጣጠር እንደሚቻል (እና በስልክ ቁልፍ ሰሌዳው ላይ ተጨማሪ ቁልፎችን የሚጠቀም አስደሳች ነገር መገንባት) ለማሳየት የቁልፍ ሰሌዳውን አንድ ጊዜ እንጠቀማለን። በምትኩ ነገሮችን ወደ አዝራር-ማተሚያዎች ይለውጡ (ይህ ዘዴ እኛ በእነዚህ ትምህርቶች ከምንገነባው የመጨረሻ ምርት ጋር በተሻለ ስለሚስማማ) እና እኛ የቁልፍ ሰሌዳውን እናስቀምጣለን።

በኋላ እንገናኝ!

የሚመከር: