ዝርዝር ሁኔታ:

AVRSH: የትርጉም አስተርጓሚ forል ለአርዱዲኖ/AVR። 6 ደረጃዎች (ከስዕሎች ጋር)
AVRSH: የትርጉም አስተርጓሚ forል ለአርዱዲኖ/AVR። 6 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: AVRSH: የትርጉም አስተርጓሚ forል ለአርዱዲኖ/AVR። 6 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: AVRSH: የትርጉም አስተርጓሚ forል ለአርዱዲኖ/AVR። 6 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: Политика GRAN KAIN - Instinct, Dilvish, OutSide, Avtsh 2024, ሀምሌ
Anonim
AVRSH: ለአርዱዲኖ/AVR የትእዛዝ አስተርጓሚ llል።
AVRSH: ለአርዱዲኖ/AVR የትእዛዝ አስተርጓሚ llል።

ወደ የእርስዎ AVR ማይክሮ መቆጣጠሪያ “መግባት” ፈልገዋል? ይዘቱን ለማየት መዝገቡን “ድመት” ማድረጉ ጥሩ ይመስልዎታል? * በእውነተኛ ሰዓት * ውስጥ የእርስዎን AVR ወይም አርዱinoኖ የግለሰባዊ ንዑስ ንዑስ ስርዓቶችን ሁል ጊዜ ኃይልን ለማሳደግ እና ለማውረድ መንገድ ይፈልጋሉ? እኔ ደግሞ እንዲሁ AVI llል ፣ UNIX የሚመስል ቅርፊት ፃፍኩ። እርስዎ ወጥተው የርስዎን የኒክ ግጭት ግጭት ቦቶች ለማስኬድ እንዲሁም እንዲሁም አንድ ወይም ሁለት የጋራ ትእዛዝ እንዲኖራቸው የገዛውን የ shellል አካውንት የሚያስታውስ ስለሆነ እሱ UNIX ነው። እንዲሁም የውጭ EEPROM ን በመጠቀም UNIX extfs ን የሚመስል የፋይል ስርዓት አለው ፣ ግን ያ ለራሱ ፕሮጀክት ሆኗል ፣ ስለዚህ ምርት በሚዘጋጅበት ጊዜ በተለየ ሞጁል ያንን ሞጁል ለብቻው እለቃለሁ። በአሁኑ ጊዜ በ AVR llል ማድረግ የሚችሏቸው ነገሮች ዝርዝር እነሆ-

  • በእውነተኛ ጊዜ ሁሉንም የውሂብ አቅጣጫ መመዝገቢያዎችዎን (ዲዲኤን) ፣ ወደቦች እና ፒኖችን ያንብቡ
  • በእውነተኛ ሰዓት ውስጥ ሞተሮችን ፣ ኤልኢዲዎችን ወይም ዳሳሾችን ለማንበብ ለሁሉም የእርስዎ ዲዲኤን ፣ ወደቦች እና ፒኖች ይፃፉ።
  • በስርዓቱ ላይ ሁሉንም የታወቁ መዝገቦችን ይዘርዝሩ
  • በ EEPROM ምትኬ በተጠቃሚ በተገለጹ ተለዋዋጮች ውስጥ እሴቶችን ይፍጠሩ እና ያከማቹ።
  • የስር ይለፍ ቃል ይፍጠሩ እና በእሱ ላይ ያረጋግጡ (ለ telnet መዳረሻ ጥቅም ላይ ይውላል)
  • የተዋቀረውን የሲፒዩ ሰዓት ፍጥነት ያንብቡ
  • ቅድመ -ተቆጣጣሪ በማዘጋጀት የሲፒዩ ሰዓትዎን ፍጥነት ይለውጡ
  • ለተለያዩ ነገሮች ጊዜ ለመስጠት 16-ቢት ቆጣሪዎችን ያስጀምሩ እና ያቁሙ
  • የከፍታ ንዑስ ስርዓቶችን ወደ ላይ ከፍ ያድርጉ እና/ወይም ኃይልን ዝቅ ያድርጉ-አናሎግ ወደ ዲጂታል ለዋጮች (ኤዲሲ) ፣ ተከታታይ ፔሪፈራል በይነገጽ (SPI) ፣ ባለ ሁለት ሽቦ በይነገጽ (TWI/I2C) ፣ UART/USART። የማይክሮ መቆጣጠሪያውን የኃይል ፍጆታ ለመቀነስ ወይም የተወሰኑ ተግባሮችን ለማንቃት ሲፈልጉ ጠቃሚ ነው።
  • እንደገና ጥቅም ላይ ሊውሉ በሚችሉ ዕቃዎች በ C ++ ተፃፈ።

ይህ አስተማሪ የአቫሽ ጭነት ፣ አጠቃቀም እና ማበጀት ውስጥ ያልፋል።

ደረጃ 1: የሚያስፈልግዎት

የሚያስፈልግዎት
የሚያስፈልግዎት

እርስዎ ከሚከተሉት በስተቀር ይህ አስተማሪ ብዙ አያስፈልገውም-

  • አርዱዲኖ ወይም ATmega328P ይኑርዎት። ሌሎች AVR ዎች ሊሠሩ ይችላሉ ፣ ግን ለ MCUዎ ልዩ የሆኑ ማናቸውንም መመዝገቢያዎች ለመዘርዘር ኮዱን ማሻሻል ሊኖርብዎት ይችላል። ስሞች ለእርስዎ MCU ልዩ በሆነው የራስጌ ፋይል ውስጥ ከተዘረዘሩት ጋር መዛመድ ብቻ ያስፈልጋቸዋል። ብዙዎቹ የመመዝገቢያ ስሞች በ AVR ዎች መካከል አንድ ናቸው ፣ ስለዚህ በሚጓዙበት ጊዜ ርቀትዎ ሊለያይ ይችላል።
  • ከእርስዎ Arduino/AVR ተከታታይ USART ጋር የሚገናኙበት መንገድ ይኑርዎት። በዩኤስቢ ወይም በኮም ወደብ በኩል ተከታታይ ግንኙነትን በሚያደርግ የዊንዶውስ መተግበሪያ በ AVR ተርሚናል ስርዓቱ በጣም በሰፊው ተፈትኗል። የዩኤስቢ ግንኙነትን በመጠቀም እና ከማንኛውም AVR ዩኤስቢ-ቡብን ከ Moderndevice.com በመጠቀም ይሰራል። ሌሎች ተርሚናል አማራጮች የሚከተሉትን ያካትታሉ: tyቲ ፣ ሚኒኮም (ሊኑክስ እና ፍሪቢኤስዲ) ፣ ማያ ገጽ (ሊኑክስ/ፍሪቢኤስዲ) ፣ ሃይፐርተርሚናል ፣ ቴራተርም። የመጀመሪያ ትዕዛዝዎ እንዲንሸራተት ሲገናኙ tyቲ እና ቴራቴም አንዳንድ ቆሻሻ ሲላኩ አግኝቻለሁ።
  • ከእነዚህ ገጾች ማውረድ የሚችሉት ወይም ሁልጊዜ የቅርብ ጊዜውን ስሪት በ BattleDroids.net ላይ የሚያገኙትን የ AVR llል firmware ተጭኖ እንዲሠራ ያድርጉ።

የ AVR ተርሚናልን ለመጫን በቀላሉ ያውጡት እና ያሂዱ። የ AVR llል firmware ን ለማውረድ ያውርዱት ወይም በቀጥታ የሄክሱን ፋይል ይስቀሉ እና ተከታታይ ተርሚናልዎን በ 9600 ባውድ ያገናኙት ፣ ወይም ሄክሱን ለመስቀል “በሠሩት” እና ከዚያ “ፕሮግራም ያዘጋጁ” ብለው ያጠናቅሩት። ማስታወሻ ፣ የእርስዎን COM ወደብ ለማንፀባረቅ የ AVRDUDE ቅንብሮችን መለወጥ ሊኖርብዎት ይችላል። ማሳሰቢያ: የ PROGMEM ባህርይ ለ C ++ አሁን ባለው የ AVR GCC ትግበራ ውስጥ ተሰብሯል እና ይህ የታወቀ ሳንካ ነው። እርስዎ ካጠናቀሩት ፣ “ማስጠንቀቂያ -የመነሻ ተለዋዋጮች ብቻ በፕሮግራሙ ማህደረ ትውስታ አካባቢ ውስጥ ሊቀመጡ ይችላሉ” እያሉ ብዙ የማስጠንቀቂያ መልዕክቶችን እንደሚያገኙ ይጠብቁ። ይህ ማስጠንቀቂያ ከማየቱ በተጨማሪ ምንም ጉዳት የለውም። በተካተተው የመሣሪያ ስርዓት ላይ C ++ በ AVR GCC ቅድሚያ በሚሰጣቸው ነገሮች ዝርዝር ላይ ከፍተኛ ስላልሆነ ይህ መቼ እንደሚስተካከል አይታወቅም። ኮዱን ከተመለከቱ ፣ እኔ የራሴን የባህሪ መግለጫዎችን በመተግበር ይህንን ማስጠንቀቂያ ለመቀነስ የት ዙሪያ ሥራ እንደሠራሁ ያያሉ። ከዚያ ገጹን ለመገልበጥ የሚያስፈልገዎትን ማንኛውንም ነገር ያውርዱ እና ይጫኑ እና እንሰነጠቅ።

ደረጃ 2 የንባብ እና የጽሑፍ መዝገቦች

የንባብ እና የጽሑፍ መዝገቦች
የንባብ እና የጽሑፍ መዝገቦች

AVR llል በዋናነት የተፃፈው እኔ ከ AVR ጋር ያገናኘኋቸውን አንዳንድ ዳሳሾች ለመድረስ ነው። በቀላል ኤልኢዲ ተጀምሮ ከዚያ ወደ ብርሃን ዳሳሾች ፣ የሙቀት ዳሳሾች እና በመጨረሻም ወደ ሁለት የአልትራሳውንድ አስተላላፊዎች ተዛወረ። avrsh የእነዚህን አነፍናፊዎች ዲጂታል ክፍሎች እነሱን ለሚቆጣጠሩት መመዝገቢያዎች በመጻፍ ማዘጋጀት ይችላል። በሚሮጡበት ጊዜ የ AVR መመዝገቢያዎችን ማስተዳደር በአርዱዲኖዎ ላይ የሁሉንም የታወቁ ምዝገባዎች ዝርዝር ለማግኘት ፣ ይተይቡ

የህትመት መዝገቦች እና እንደዚህ የሚመስል ህትመት ያገኛሉ

ስለሚከተሉት መዝገቦች አውቃለሁ።

TIFR0 PORTC TIFR1 PORTD TIFR2 DDRD PCIFR DDRB EIFR DDRC EIMSK PINB EECR PINC EEDR PIND SREG EEARL GPIOR0 EEARH GPIOR1 GTCCR GPIOR2 TCCR0A TCCR0B TCNT0 OCR0A OCR0B SPCR SPDR ACSR SMCR MCUSR MCUCR SPMCSR WDTCSR CLKPR PRR OSCCAL PCICR EICRA PCMSK0 PCMSK1 TIMSK0 TIMSK1 TIMSK2 ADCL ADCH ADCSRA ADCSRB ATmega328p @ ADMUX DIDR0 DIDR1 TCCR1A TCCR1B TCCR1C TCNT1L TCNT1H ICR1L ICR1H OCR1AL OCR1AH OCR1BL OCR1BH TCCR2A TCCR2B TCNT2 OCR2A OCR2B ASSR TWBR TWSR TWAR TWDR TWCR TWAMR UCSR0A UCSR0B UCSR0C UBRR0L UBRR0H UDR0 PORTB ስር> በማናቸውም መመዝገቢያ ውስጥ ግለሰቦቹ ቢት እንዴት እንደተዋቀረ ለማየት ድመቱን ወይም የማስተጋቢያ ትዕዛዙን ይጠቀሙ

ድመት %GPIOR0 እዚህ የትእዛዝ አስተርጓሚው የአጠቃላይ ዓላማ I/O መዝገብ #0 ይዘቶችን እንዲያሳይ ወይም እንዲያስተጋባ እጠይቃለሁ። ከመመዝገቢያው ስም ፊት ለፊት ያለውን መቶኛ ምልክት (%) ልብ ይበሉ። ይህ መዝገብን የሚለይ የተያዘ ቁልፍ ቃል መሆኑን ለቅርፊቱ ለመጠቆም ይህንን ያስፈልግዎታል። ከአስተጋባ ትዕዛዝ የተለመደው ውፅዓት ይህንን ይመስላል

GPIOR0 (0x0) ወደ [00000000] ተቀናብሯል ውጤቱ የመዝገቡን ስም ፣ በመዝገቡ ውስጥ የተገኘውን ሄክሳዴሲማል እሴት እና የመመዝገቢያውን የሁለትዮሽ ውክልና (እያንዳንዱን ቢት እንደ 1 ወይም 0 ያሳያል) ያሳያል። በማንኛውም መመዝገቢያ ውስጥ አንድ የተወሰነ ትንሽ ለማቀናበር የ ‹ማውጫ› ኦፕሬተርን ይጠቀሙ። ለምሳሌ ፣ እኔ 3 ኛውን ቢት ወደ 1 እፈልጋለሁ እንበል

%GPIOR0 [3] = 1 እና ቅርፊቱ እርምጃውን እና ውጤቱን የሚያመለክት ምላሽ ይሰጥዎታል

GPIOR0 (0x0) ወደ [00000000] (0x8) ወደ [00001000] ተቀናብሯል ከመዝገብ ጋር እየሰሩ ላሉት ዛጎል ለመንገር የመቶኛ ምልክቱን አይርሱ። እንዲሁም የእኛን AVR በዜሮ ላይ የተመሠረተ መረጃ ጠቋሚ ስለሚጠቀም 3 ኛውን ቢት በማቀናበር ያ 4 ቢት መሆኑን ልብ ይበሉ። በሌላ አገላለጽ ፣ እስከ 3 ኛ ቢት በመቁጠር 0 ፣ 1 ፣ 2 ፣ 3 ፣ ይህም 4 ኛ ቦታ ፣ ግን 3 ኛ ቢት ነው። ትንሽ ወደ ዜሮ በማቀናበር በተመሳሳይ መንገድ ትንሽ ማፅዳት ይችላሉ። እንደዚህ ያሉ ቁርጥራጮችን በማቀናበር የኤቪአርዎን አሠራር በበረራ ላይ መለወጥ ይችላሉ። ለምሳሌ ፣ በ OCR1A ውስጥ የተገኘውን የ CTC ሰዓት ቆጣሪ ተዛማጅ እሴት በመቀየር። እንዲሁም ለባውድ ዋጋዎ እንደ UBBR እሴት በመሳሰሉ በኮድዎ ውስጥ በፕሮግራም ለመፈተሽ የሚያስፈልጉዎትን ልዩ ቅንብሮችን እንዲመለከቱ ያስችልዎታል። ከዲዲኤን ፣ ከ PORTn እና ከፒን ጋር መሥራት የ I/O ፒኖች እንዲሁ ለመመዝገቢያዎች ተመድበዋል እና በትክክል በተመሳሳይ መንገድ ሊዘጋጁ ይችላሉ ፣ ግን ከእነዚህ የመመዝገቢያ ዓይነቶች ጋር ለመስራት ልዩ አገባብ ተፈጥሯል። በኮድ ውስጥ ፣ ዲጂታል ከፍተኛ ወይም ዝቅተኛ የሚፈልግ የ LED ወይም ሌላ መሣሪያ ለማብራት የተለመደ ሂደት አለ። ፒን ለውጤት መሆኑን ለማሳየት የውሂብ አቅጣጫ መመዝገቢያውን ማቀናበርን ይጠይቃል ፣ ከዚያ በትክክለኛው ወደብ ውስጥ 1 ወይም 0 ን ወደተለየ ቢት ይፃፉ። ከዲጂታል ፒን 13 (PB5) ጋር የተገናኘ LED አለን ብለን ካሰብን እና እሱን ማብራት እንፈልጋለን ፣ የእርስዎ AVR በሚሠራበት ጊዜ ያንን እንዴት ማድረግ እንደሚቻል እነሆ

ፒን pb5 ውፅዓት ያዘጋጁ ፒን pb5 ከፍተኛ ይፃፉ ውፅዓት ፣ የእርስዎ LED ሲበራ ማየት ከመቻል በተጨማሪ ፣ እንደዚህ ይመስላል

root@ATmega328p> ፒን pb5 ውፅዓት አዘጋጅ pb5 ለ outputroot@ATmega328p> ፒን pb5 ከፍተኛ ይፃፉ ሎጂክ ከፍ ለማድረግ ፒቢ 5 ን ለመለጠፍ “Root@ATmega328p>” ትዕዛዞችን ከእርስዎ ለመቀበል ዝግጁ መሆኑን የሚያመለክተው የ shellል ጥያቄ ነው። ኤልኢዲውን ለማጥፋት በቀላሉ ወደ ፒን ዝቅ ብለው ይጽፉ ነበር። የዲጂታል ግቤትን ከፒን ለማንበብ ከፈለጉ የተነበበውን ትእዛዝ ይጠቀሙ። ከላይ ያለውን ምሳሌያችንን በመጠቀም

root@ATmega328p> ፒን አንብብ pb5Pin: pb5 ከፍተኛ ነው በአማራጭ ፣ ያንን የፒን ወደብ የሚቆጣጠር የፒን መመዝገቢያውን ብቻ ያስተጋቡ። ለምሳሌ ፣ ከዲጂታል ፒን 7 እና 8 (PD7 እና PD8) ጋር የተገናኙ የዲፕ መቀየሪያዎች ካሉ ፣ ትዕዛዙን መላክ ይችላሉ

አስተጋባ %PIND እና ዛጎሉ ከዚያ የተዛማጅ መሣሪያዎችን የግብዓት/የውጤት ግዛቶች እና የመቀየሪያው ሁኔታ እንደበራ ወይም እንደጠፋ የሚያሳየውን ያንን መዝገብ ይዘቶች ያሳያል።

ደረጃ 3 ማንበብ እና መጻፍ ፊውዝ

ፊውዝ ማንበብ እና መጻፍ
ፊውዝ ማንበብ እና መጻፍ

ፊውዝዎች ልዩ የመዝገቢያ ዓይነቶች ናቸው። ጥበቃን EEPROM ን ለመፃፍ ምን ዓይነት የፕሮግራም ዘዴዎች ካሉ ከማይክሮ መቆጣጠሪያዎ የሰዓት ፍጥነት ጀምሮ ሁሉንም ነገር ይቆጣጠራሉ። አንዳንድ ጊዜ እነዚህን መቼቶች መለወጥ ያስፈልግዎታል ፣ በተለይም ለብቻዎ የ AVR ስርዓት እየፈጠሩ ከሆነ። በአርዱዲኖ ላይ የእርስዎን የፊውዝ ቅንብሮች መለወጥ እንዳለብዎት እርግጠኛ አይደለሁም። በፊውሶችዎ ይጠንቀቁ; እርስዎ በስህተት ካዋቀሯቸው እራስዎን መቆለፍ ይችላሉ። በቀደመው መመሪያ ውስጥ ፣ የእርስዎን ፕሮግራም አውጪ እና አቫርድዲ በመጠቀም ፊውዝዎን እንዴት ማንበብ እና ማቀናበር እንደሚችሉ አሳይቻለሁ። እዚህ ፣ የእርስዎ MCU በትክክል እንዴት እንዳዋቀራቸው ለማየት ፊውዝዎን በሩጫ ጊዜ እንዴት መልሰው እንደሚያነቡ አሳያችኋለሁ። ልብ ይበሉ ፣ ይህ ከትርጉሞች ውስጥ የሚያገኙት የማጠናቀር ጊዜ ቅንብር ሳይሆን MCU በሩጫ ሰዓት ሲያነባቸው ትክክለኛ ፊውዝ ነው። በሠንጠረዥ 27-9 በ ATmega328P የውሂብ ሉህ (የውሂብ ጎታ ፣ የበለጠ ይመስላል) የ Fuse Low Byte ቁርጥራጮች እንደሚከተለው ናቸው

CKDIV8 COUT SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0ትኩረት ሊስብ የሚገባው አንድ ነገር ቢኖር በፊውዝ ፣ 0 ማለት ፕሮግራም የተደረገበት እና 1 ማለት ያኛው ትንሽ ያልታቀደ ነው ማለት ነው። በመጠኑ ተቃራኒ ነው ፣ ግን አንዴ ካወቁት ያውቁታል።

  • CKDIV8 የእርስዎን ሲፒዩ ሰዓት በ 8. እንዲከፋፈል ያዘጋጃል። ATmega328P በ 8 ሜኸ በ 8 ሜኸ በ CKDIV8 ፕሮግራም (ማለትም ወደ 0 ተቀናብሯል) የመጨረሻውን F_CPU ወይም 1MHz ሲፒዩ ድግግሞሽ እንዲሰጥዎ ከተዘጋጀው ፋብሪካ የመጣ ነው። በአርዱዲኖዎች ፣ ይህ በ 16 ሜኸር ላይ የውጭ ማወዛወጫ ለመጠቀም ከተዋቀሩ ይህ ይለወጣል።
  • ፕሮግራም ሲደረግ CKOUT የእርስዎን የሲፒዩ ሰዓት በ PB0 ላይ ያወጣል ፣ ይህም በአርዱዲኖዎች ላይ ዲጂታል ፒን 8 ነው።
  • SUT [1..0] ለእርስዎ AVR የመነሻ ጊዜን ይገልጻል።
  • CKSEL [3..0] የሰዓት ምንጭን ያዘጋጃል ፣ ለምሳሌ እንደ ውስጣዊ አርሲ ማወዛወዝ ፣ የውጭ ማወዛወዝ ፣ ወዘተ።

ፊውዝዎችዎን በሚያነቡበት ጊዜ በሄክሳዴሲማል ውስጥ ወደ እርስዎ ይመለሳል። በ avrdude በኩል ፊውሶችን መጻፍ ከፈለጉ ይህ የሚፈልጉት ቅርጸት ነው። በእኔ arduino ላይ ፣ የታችኛው የፊውዝ ባይት ሳነብ ያገኘሁት እዚህ አለ -

root@ATmega328p> lfuseLower Fuse: 0xff ን ያንብቡስለዚህ ፣ ሁሉም ቢትዎች ተዘጋጅተዋል 1. እኔ በአርዱዲኖ ክሎኖ ላይ ተመሳሳይ አሰራር አደረግሁ እና ተመሳሳይ እሴት አገኘሁ። አንዱን ለብቻዬ የ AVR ስርዓቶቼን በመፈተሽ ፣ 0xDA ን አግኝቻለሁ ፣ ይህም ቺ chipን ሲያዋቅሩ የተወሰነ ጊዜ መል back ያወጣሁት እሴት ነው። የመለኪያ እና የፊርማ ፊውዝ ባይቶች በኮድ ውስጥ በ #if 0 ቅድመ -ፕሮሴሰር መመሪያ ተሰናክለዋል ፣ እርስዎም ከተሰማዎት መለወጥ ይችላሉ።

ደረጃ 4 - ሌሎች ትዕዛዞች

ሌሎች ትዕዛዞች
ሌሎች ትዕዛዞች

ጠቃሚ ሆኖ ሊያገኙት የሚችሉት ነባሪው የትርጉም አስተርጓሚ የሚረዳቸው ሌሎች ብዙ ትዕዛዞች አሉ። በአስቸኳይ እርዳታ ወይም ምናሌ በማውጣት ሁሉንም የተተገበሩ እና የወደፊቱን የሚለቀቁ ትዕዛዞችን ማየት ይችላሉ። እነሱ በአብዛኛው እራሳቸውን የሚገልጹ ስለሆኑ እዚህ በፍጥነት እሸፍናቸዋለሁ። የሲፒዩ የሰዓት ድግግሞሽ ቅንብሮች የእርስዎ firmus በ fcpu ትዕዛዝ እንደ ሲፒዩ ሰዓት ቅንጅቶች ለመጠቀም ምን እንደተዋቀረ ማወቅ ይችላሉ-

root@ATmega328p> fcpuCPU Freq: 16000000ያ በተለምዶ 16 ሜኸር በመባል የሚታወቀው 16 ሚሊዮን ወይም 16 ሚሊዮን ሄርዝ ነው። በማንኛውም ምክንያት በሰዓት ትእዛዝ ይህንን በመብረር ላይ መለወጥ ይችላሉ። ይህ ትእዛዝ አንድ ክርክር ይወስዳል - የሰዓትዎን ፍጥነት በሚከፋፍሉበት ጊዜ ለመጠቀም ቅድመ -ተቆጣጣሪ። የሰዓት ትዕዛዙ እነዚህን ቅድመ -ተቆጣጣሪ እሴቶችን ይረዳል-

  • ckdiv2
  • ckdiv4
  • ckdiv8
  • ckdiv16
  • ckdiv32
  • ckdiv64
  • ckdiv128
  • ckdiv256

ትዕዛዙን በመጠቀም:

ሰዓት ckdiv2 የእርስዎ ሲፒዩ ፍጥነት 16 ሜኸ በሚሆንበት ጊዜ የሰዓትዎ ፍጥነት ወደ 8 ሜኸዝ እንዲለወጥ ያደርገዋል። በ 16 ሜኸ የመነሻ ሰዓት ፍጥነት የ ckdiv64 ቅድመ -ተቆጣጣሪ መጠቀሙ የመጨረሻውን የሰዓት ፍጥነት 250 ኪኸዝ ያስከትላል። ለምን በምድር ላይ የእርስዎን MCU ቀርፋፋ ማድረግ ይፈልጋሉ? ደህና ፣ ለአንድ ፣ ዝቅተኛ የሰዓት ፍጥነት አነስተኛ ኃይልን ይወስዳል እና የእርስዎ MCU በፕሮጀክት ግቢ ውስጥ ባትሪ ሲያልቅ በከፍተኛ ፍጥነት እንዲሠራ ላይፈልጉት ይችላሉ ፣ እና ስለሆነም ፍጥነቱን ዝቅ ማድረግ እና የኃይል ፍጆታን መቀነስ ይችላል። ፣ የባትሪ ዕድሜን ይጨምራል። እንዲሁም ከሌላ MCU ጋር ለማንኛውም የጊዜ ጉዳይ ጉዳዮች ሰዓቱን የሚጠቀሙ ከሆነ ፣ የሶፍትዌር UART ን ወይም እንደዚህ ያለ ነገርን በመተግበር ጥሩ እና እንኳን የባውድ ተመን ማግኘት ቀላል ወደሆነ የተወሰነ እሴት ሊያዋቅሩት ይፈልጉ ይሆናል። ዝቅተኛ የስህተት መጠኖች። ፐርፕረራል ንዑስ ስርዓቶችን ማብራት እና ማብራት ቀደም ሲል የተጠቀሰውን የኃይል ፍጆታን ከመቀነስ ጋር በተመሳሳይ ማስታወሻ ፣ እርስዎ የማይጠቀሙባቸውን አንዳንድ የቦርድ ተጓipችን በመዝጋት ተጨማሪ ኃይልን መቀነስ ይፈልጉ ይሆናል። የትእዛዝ አስተርጓሚው እና ዛጎል በአሁኑ ጊዜ የሚከተሉትን ተጓዳኝ አካላት ከፍ ማድረግ እና መቀነስ ይችላል-

  • ከአናሎግ-ወደ-ዲጂታል መለወጫ (ኤዲሲ)። መረጃን (እንደ ሙቀት ፣ ብርሃን ፣ ማፋጠን ፣ ወዘተ) የሚያቀርብ የአናሎግ ዳሳሽ ሲኖርዎት እና ወደ ዲጂታል እሴት መለወጥ ሲፈልጉ ይህ ተጓዳኝ ጥቅም ላይ ይውላል።
  • ተከታታይ ፔሪፈራል በይነገጽ (SPI)። የ SPI አውቶቡስ ከሌሎች SPI- የነቁ መሣሪያዎች ጋር ለመገናኘት ያገለግላል ፣ እንደ ውጫዊ ትዝታዎች ፣ የ LED ነጂዎች ፣ የውጭ ኤዲሲዎች ፣ ወዘተ። የ SPI ክፍሎች ለአይኤስፒ ፕሮግራም ያገለግላሉ ፣ ወይም ቢያንስ ፒኖቹ ናቸው ፣ ስለዚህ ይህንን ሲዘጋ ይጠንቀቁ። በአይኤስፒ በኩል ፕሮግራም እያዘጋጁ ከሆነ።
  • ባለ ሁለት ሽቦ በይነገጽ። ምንም እንኳን SPI የበለጠ የመተላለፊያ ይዘት ስላለው አንዳንድ ውጫዊ መሣሪያዎች ለመገናኘት I2C አውቶቡስን ይጠቀማሉ።
  • USART። ይህ የእርስዎ ተከታታይ በይነገጽ ነው። በተከታታይ ግንኙነት በኩል ከኤቪአር ጋር ከተገናኙ ምናልባት ይህንን ማጥፋት አይፈልጉ ይሆናል! ሆኖም ፣ እኔ እንደ ATmega162 ወይም ATmega644P ያሉ በርካታ USART ላሉ መሣሪያዎች ለማስተላለፍ ይህንን እንደ አጽም እዚህ ውስጥ አክዬዋለሁ።
  • ሁሉም። ይህ ለኃይል መነሳሳት ወይም ለኃይል መቀነስ ትዕዛዙ የተጠቀሱትን ተጓዳኝ አካላት በሙሉ ያበራል ወይም ሁሉንም በአንድ ትእዛዝ ያጠፋቸዋል። እንደገና ፣ ይህንን ትእዛዝ በጥበብ ይጠቀሙበት።

root@ATmega328p> powerdown twiPwidown of twi complete.root@ATmega328p> powerup twiPwiup of twi ተጠናቋል።

ሰዓት ቆጣሪዎችን ማስጀመር እና ማቆም ዛጎሉ አብሮ የተሰራ 16-ቢት ሰዓት ቆጣሪ አለው። በሰዓት ቆጣሪው ትእዛዝ ሰዓት ቆጣሪውን ያስጀምሩት-

ሰዓት ቆጣሪ መጀመርእና ሰዓት ቆጣሪውን በማቆም ክርክር ያቁሙ

ሰዓት ቆጣሪይህ ሰዓት ቆጣሪ ከውስጣዊው USART ሰዓት ቆጣሪ ጋር አይጋጭም። ያ ዓይነቱ አስቀያሚ ዝርዝር እርስዎን የሚስብ ከሆነ ለዩአርአርት ሰዓት ቆጣሪ የትግበራ ዝርዝሮች ኮዱን ይመልከቱ

root@ATmega328p> የሰዓት ቆጣሪ ተጀመረ ተጀመረ timer.root@ATmega328p> የሰዓት ቆጣሪ ማቆሚያ ጊዜ ያለፈበት ጊዜ ~ 157 ሰከንዶች ማረጋገጫ ቅርፊቱ ባለ 8 ቁምፊ የይለፍ ቃል በ EEPROM ውስጥ ሊያከማች ይችላል። ይህ የይለፍ ቃል ዘዴ የተፈጠረው የ telnet የመግቢያ ችሎታዎችን ለመደገፍ ነው ፣ ግን ሌሎች ነገሮችን ለመጠበቅ ሊሰፋ ይችላል። ለምሳሌ ፣ እንደ የመመዝገቢያ እሴቶችን መለወጥ ፣ በማረጋገጫ ዘዴ በኩል የተወሰኑ ትዕዛዞችን ሊፈልጉ ይችላሉ። የይለፍ ቃሉን በይለፍ ቃል ትእዛዝ ያዘጋጁ

root@ATmega328p> passwd blah ሥር የይለፍ ቃልን ወደ EEPROM ጻፈበእሱ የይለፍ ቃል ላይ ይፍቀዱ (ወይም በኮድ በኩል በፕሮግራም ፈቃድ መስጠትን ይጠይቁ) በአት ትእዛዝ። ልብ ይበሉ ፣ ዋናውን የይለፍ ቃል ለመለወጥ ከሞከሩ እና ቀደም ሲል የስር የይለፍ ቃል ስብስብ ካለ ፣ ወደ አዲስ የይለፍ ቃል ለመለወጥ ከመፈቀድዎ በፊት ከድሮው የይለፍ ቃል እራስዎን እራስዎን መፍቀድ አለብዎት።

root@ATmega328p> passwd blinky ለራስህ ፈቃድ መስጠት አለብህ first.root@ATmega328p> auth blahAuthorized.root@ATmega328p> passwd blinky አዲስ ሥር የይለፍ ቃል ለ EEPROMበእርግጥ የድሮ እሴቶችን እና ተለዋዋጮችን ወደ ነበሩበት ለመመለስ firmware ን ከሰረዙ የ avrsh.eep ፋይልን መጫን ያስፈልግዎታል። Makefile የ EEPROM ፋይልን ይፈጥራል። ተለዋዋጮች ቅርፊቱ በተጠቃሚ የተገለጹ ተለዋዋጮችን ሀሳብ ይገነዘባል። ኮዱ ይህንን ወደ 20 ይገድባል ፣ ግን በ MAX_VARIABLES በስክሪፕት. ማንኛውንም የ 16-ቢት እሴት (ማለትም ፣ ማንኛውም ቁጥር እስከ 65 ፣ 536) ወደ ኋላ እንዲመለስ ወደ ተለዋዋጭ መለወጥ ይችላሉ። አገባብ የዶላር ምልክት ($) ካልሆነ በስተቀር ተለዋዋጭዎችን ወደ ዛጎሉ ለማመልከት ጥቅም ላይ ይውላል። በሕትመት ተለዋዋጮች ትዕዛዝ ሁሉንም ተለዋዋጮችዎን ይዘርዝሩ

የህትመት ተለዋዋጮች በተጠቃሚ የተገለጹ ተለዋዋጮች -የመረጃ ጠቋሚ ስም -> እሴት (01) -$ FREE $ -> 0 (02): $ FREE $ -> 0 (03): $ FREE $ -> 0 (04): $ FREE $ -> 0 (05): $ FREE $ -> 0 (06): $ FREE $ -> 0 (07): $ FREE $ -> 0 (08): $ FREE $ -> 0 (09): $ FREE $ -> 0 (10): $ FREE $ -> 0 (11): $ FREE $ -> 0 (12): $ FREE $ -> 0 (13): $ FREE $ -> 0 (14): $ FREE $ -> 0 (15): $ FREE $ -> 0 (16): $ FREE $ -> 0 (17): $ FREE $ -> 0 (18): $ FREE $ -> 0 (19): $ FREE $ -> 0 (20): $ FREE $ -> 0 የተሟላ።ተለዋዋጭ ያዘጋጁ

$ newvar = 25 $ ጊዜ ማብቂያ = 23245የተሰጠውን ተለዋዋጭ ዋጋ ያግኙ

root@ATmega328p> አስተጋባ $ newvar $ newvar 25እርስዎ አስቀድመው በሚያውቁት የህትመት ትዕዛዝ አሁን ምን ዓይነት ተለዋዋጮች እንዳስገቧቸው ማየት ይችላሉ

በተጠቃሚ የተገለጹ ተለዋዋጮች -የመረጃ ጠቋሚ ስም -> እሴት (01) -ኒውቫር -> 25 (02) -የእረፍት ጊዜ -> 23245 (03) -$ ነፃ $ -> 0 (04) -$ ነፃ $ -> 0 (05) ፦ $ FREE $ -> 0 (06): $ FREE $ -> 0 (07): $ FREE $ -> 0 (08): $ FREE $ -> 0 (09): $ FREE $ -> 0 (10) ፦ $ FREE $ -> 0 (11): $ FREE $ -> 0 (12): $ FREE $ -> 0 (13): $ FREE $ -> 0 (14): $ FREE $ -> 0 (15) ፦ $ FREE $ -> 0 (16): $ FREE $ -> 0 (17): $ FREE $ -> 0 (18): $ FREE $ -> 0 (19): $ FREE $ -> 0 (20) ፦ $ FREE $ -> 0 ይጨርሱ።የ $ FREE $ ስም የሚያመለክተው ያ ተለዋዋጭ ሥፍራ ነፃ መሆኑን እና ገና ለተለዋዋጭ ስም ገና እንዳልተመደበ ነው።

ደረጃ 5 - ዛጎሉን ማበጀት

ቅርፊቱን ማበጀት
ቅርፊቱን ማበጀት

ከፈለጉ ኮዱን ለመጥለፍ እና ለራስዎ ፍላጎቶች ለማበጀት ነፃ ነዎት። እኔ ይህን ኮድ እፈታለሁ ብዬ ባውቅ ኖሮ የተለየ የትእዛዝ አስተርጓሚ ክፍል እና የትእዛዝ አወቃቀር ባደረግሁ እና በቀላሉ በዚህ ተግባር ጠቋሚ ጠርቶ እደግመዋለሁ። እሱ የኮዱን መጠን ይቀንስ ነበር ፣ ግን እሱ እንደቆመ ዛጎሉ የትእዛዝ መስመሩን ይተነብያል እና ተገቢውን የ shellል ዘዴ ይደውላል። በእራስዎ ብጁ ትዕዛዞች ውስጥ ለመጨመር የሚከተሉትን ያድርጉ። የትእዛዝ መስመሩን ይተንትኑ እና ትዕዛዙን እና ማንኛውንም ክርክሮችን ለየብቻ ይሰጡዎታል። ክርክሮቹ እንደ ጠቋሚዎች ወይም ጠቋሚዎች እንደ ጠቋሚዎች ይተላለፋሉ ፣ ሆኖም ከእነሱ ጋር መስራት ቢፈልጉ። ይህ በ shell.cpp ውስጥ ይገኛል። Shell.cpp ን ይክፈቱ እና የ AVRShell ክፍል የ ExecCmd ዘዴን ያግኙ። ትዕዛዙን በፕሮግራም ማህደረ ትውስታ ላይ ማከል ይፈልጉ ይሆናል። እርስዎ ካደረጉ በ progmem.h እና progmem.cpp ውስጥ ትዕዛዙን ያክሉ። የ PSTR () ማክሮን በመጠቀም በቀጥታ ወደ ፕሮግራም ማህደረ ትውስታ ትዕዛዙን ማከል ይችላሉ ፣ ግን ቀደም ሲል ስለተጠቀሰው ዓይነት ሌላ ማስጠንቀቂያ ይፈጥራሉ። እንደገና ፣ ይህ ከ C ++ ጋር አብሮ የሚሠራ የታወቀ ስህተት ነው ፣ ግን እኔ እንዳደረግሁት ትዕዛዙን በቀጥታ በፕሮሜም ውስጥ* በማከል በዚህ ዙሪያ ማግኘት ይችላሉ። በ SRAM አጠቃቀምዎ ላይ ማከል የማይጨነቁ ከሆነ በ “ሰዓት” ትዕዛዝ እንዳሳየሁት ትዕዛዙን ማከል ይችላሉ። “Newcmd” የተባለ አዲስ ትእዛዝ ማከል እንደፈለጉ ይናገሩ። ወደ AVRShell:: ExecCmd ይሂዱ እና የሚከተለውን ኮድ ለማስገባት ምቹ ቦታ ያግኙ

ሌላ ከሆነ (! strcmp (c ፣ “newcmd”)) cmdNewCmd (args);ይህ ትዕዛዝዎን ያክላል እና በሚቀጥለው ደረጃ የሚጽፉትን የ cmdNewCmd ዘዴ ይደውሉ። 2. ብጁ የትእዛዝ ኮድዎን ይፃፉ በተመሳሳይ ፋይል ውስጥ ብጁ የትእዛዝ ኮድዎን ያክሉ። ይህ ዘዴ ትርጓሜ ነው። አሁንም መግለጫውን ወደ shell.h ማከል ይፈልጋሉ። ወደ ሌሎች ትዕዛዞች ብቻ ያያይዙት። በቀደመው ምሳሌ ፣ ኮዱ እንደዚህ ያለ ነገር ሊመስል ይችላል

voidAVRShell:: cmdNewCmd (char ** args) {sprintf_P (buff ፣ PSTR ("የእርስዎ ትዕዛዝ %s / r / n" ፣ args [0]) ፤ WriteRAM (buff);}እዚህ ብዙ ነገሮች አሉ። በመጀመሪያ ፣ “ቡፍ” ለአጠቃቀምዎ በኮድ ውስጥ የቀረበው የ 40-ቁምፊ ድርድር ቋት ነው። እኛ PSTR ን ስለምናስተላልፍ የ sprintf የፕሮግራሙን ማህደረ ትውስታ ስሪት እንጠቀማለን። ከፈለጉ መደበኛውን ስሪት መጠቀም ይችላሉ ፣ ግን ቅርጸቱን በ PSTR ውስጥ እንዳያስተላልፉ ያረጋግጡ። እንዲሁም ፣ ክርክሮቹ በአርጊስ ድርድር ውስጥ ናቸው። እርስዎ "newcmd arg1 arg2" ብለው ከተየቡ በእነዚህ ክርክሮች ከ args [0] እና args [1] የደንበኝነት ተመዝጋቢዎች ጋር ማግኘት ይችላሉ። በኮዱ ውስጥ እንደተገለጸው ቢበዛ MAX_ARGS ክርክሮችን ማለፍ ይችላሉ። ብዙ ተጨማሪ ክርክሮች በአንድ ጊዜ እንዲተላለፉ ሲያስፈልግዎት እንደገና ሲሰበሰቡ ያንን እሴት ለመለወጥ ነፃነት ይሰማዎት። WriteLine እና WriteRAM የ UART ን ተመሳሳይ ስም ዘዴዎችን የሚመልሱ ዓለም አቀፍ ተግባራት ናቸው። ለዚህ ተግባር 2 ኛ ክርክር ስውር ነው። ምንም ካላስተላለፉ ፣ ከዚያ በኋላ የትእዛዝ መጠየቂያ ይፃፋል። እርስዎ 0 ን እንደ 2 ኛ ክርክር ካስተላለፉ ፣ ጥያቄ አይጻፍም። የትእዛዝ ጥያቄው ወደ ተጠቃሚው ከመመለሱ በፊት ብዙ የተለያዩ ሕብረቁምፊዎችን ለማውጣት ሲፈልጉ ይህ ጠቃሚ ነው። 3. ዛጎሉ የትእዛዝ ኮዱን እንዲያስፈጽም ያድርጉ አዲሱን ትእዛዝ ሲያዘጋጁ የ cmdNewCmd ዘዴን እንዲፈጽሙ አስቀድመው ነግረውታል ፣ ግን በ shellል ነገር እንዲረዳው ወደ shell.h ፋይል ያክሉት። ልክ ከመጨረሻው ትእዛዝ በታች ወይም ከመጀመሪያው ትእዛዝ ፊት ለፊት ፣ ወይም እዚያ ውስጥ በማንኛውም ቦታ ያክሉት። እና ያ ብቻ ነው። ሶፍትዌሩን ወደ አርዱዲኖ ያጠናቅቁ እና ይስቀሉ እና አዲሱ ትእዛዝዎ ከቅርፊቱ በቅጽበት ይገኛል።

ደረጃ 6: ማጠቃለያ

ከእርስዎ AVR/Arduino ጋር እንዴት እንደሚጫኑ እና እንደሚገናኙ ማወቅ እና በሚሮጥ ማይክሮ መቆጣጠሪያዎ ላይ የቀጥታ ጥያቄን ማግኘት አለብዎት። ከ MCU የአሂድ ጊዜ መረጃን የሚጎትቱ ወይም በበረራ ላይ እሴቶችን ወደ MCU የሚያስቀምጡ ብዙ ትዕዛዞችን ያውቃሉ። እንዲሁም ለራስዎ ፍላጎቶች የበለጠ ለማበጀት የራስዎን ልዩ ትዕዛዞች ወደ ዛጎል ለመፍጠር የራስዎን ብጁ ኮድ እንዴት እንደሚያክሉ ታይተዋል። እርስዎ ፍላጎቶችዎን የሚስማማ ከሆነ ብጁ ትዕዛዞችን ብቻ እንዲይዝዎት የትእዛዝ አስተርጓሚውን እንኳን ማረም ይችላሉ። ይህንን አስተማሪ እንደወደዱት እና እንደ እውነተኛ ጊዜ የትርጓሜ አስተርጓሚ ወይም AVR llል ለእርስዎ ጠቃሚ ሊሆን እንደሚችል ተስፋ አደርጋለሁ። እንደ የመማር ሂደት የራስዎን በመተግበር ላይ። እንደ ሁልጊዜ ፣ ይህ አስተማሪ እንዴት ሊሻሻል እንደሚችል ማንኛውንም አስተያየት ወይም ጥቆማ በጉጉት እጠብቃለሁ! በ AVRዎ ይደሰቱ!

የሚመከር: