ዝርዝር ሁኔታ:

AVR ሰብሳቢ መማሪያ 1: 5 ደረጃዎች
AVR ሰብሳቢ መማሪያ 1: 5 ደረጃዎች

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

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

በአርዱዱኖ ውስጥ ጥቅም ላይ የዋለው ማይክሮ መቆጣጠሪያ ለኤትሜጋ 328 ፒ የስብሰባ ቋንቋ ፕሮግራሞችን እንዴት እንደሚጽፉ ተከታታይ ትምህርቶችን ለመጻፍ ወስኛለሁ። ሰዎች ፍላጎት ካላቸው እኔ ነፃ ጊዜ እስኪያልቅ ድረስ ወይም በሳምንት አንድ ወይም ከዚያ በላይ ማውጣቴን እቀጥላለሁ ፣ አለበለዚያ ሰዎች እነሱን ማንበብ ያቆማሉ።

እኔ አርክ ሊኑክስን እሠራለሁ እና በዳቦ ሰሌዳ ላይ በተዘጋጀው atmega328p-pu ላይ እሠራለሁ። እንደ እኔ በተመሳሳይ መንገድ ማድረግ ይችላሉ ወይም በቀላሉ አርዱዲኖን በኮምፒተርዎ ውስጥ ይሰኩ እና በዚያው ማይክሮ መቆጣጠሪያ ላይ መሥራት ይችላሉ።

በአብዛኞቹ አርዱዲኖዎች ውስጥ እንደነበረው ለ 328 ፒ ፕሮግራሞችን እንጽፋለን ነገር ግን እነዚህ ተመሳሳይ ፕሮግራሞች እና ቴክኒኮች ለማንኛውም የአቴሜል ማይክሮ መቆጣጠሪያዎች እንደሚሠሩ እና በኋላ ላይ (ፍላጎት ካለ) ከአንዳንዶቹ ጋር እንደምንሰራ ልብ ይበሉ። ሌሎቹም እንዲሁ። የማይክሮ መቆጣጠሪያው ዝርዝሮች በአትሜል የውሂብ ሉሆች እና በትምህርቱ አዘጋጅ ማንዋል ውስጥ ይገኛሉ። እኔ ከዚህ ትምህርት ሰጪ ጋር አያያዛቸዋለሁ።

የሚያስፈልግዎት ነገር ይኸውና:

1. የዳቦ ሰሌዳ

2. አርዱዲኖ ፣ ወይም ማይክሮ መቆጣጠሪያ ብቻ

3. ሊኑክስን የሚያሄድ ኮምፒተር

4. የ avra ሰብሳቢው git ን በመጠቀም: git clone https://github.com/Ro5bert/avra.git ወይም ኡቡንቱን ወይም ዴቢያንን መሠረት ያደረገ ስርዓት የሚጠቀሙ ከሆነ “sudo apt install avra” ብለው ይተይቡ እና ሁለቱንም የኤአር ሰብሳቢውን ያገኛሉ እና avrdude. የሆነ ሆኖ ፣ github ን በመጠቀም የቅርብ ጊዜውን ስሪት ካገኙ እርስዎም ሁሉንም አስፈላጊ ፋይሎችን ያካትታሉ ፣ በሌላ አነጋገር እሱ ቀድሞውኑ m328Pdef.inc እና tn85def.inc ፋይሎች አሉት።

5. avrdude

የእኔ የ AVR ሰብሳቢ መማሪያዎች ሙሉ ስብስብ እዚህ ይገኛል

ደረጃ 1 የሙከራ ቦርድ ይገንቡ

የሙከራ ቦርድ ይገንቡ
የሙከራ ቦርድ ይገንቡ

ከፈለጉ በቀላሉ አርዱዲኖዎን መጠቀም እና በእነዚህ ትምህርቶች ውስጥ ሁሉንም ነገር ማድረግ ይችላሉ። ሆኖም ፣ እኛ በስብሰባ ቋንቋ ውስጥ ስለ ኮድ ማውራት ስለምንናገር ፍልስፍናችን በተፈጥሮ ውስጥ ያሉትን ሁሉንም አከባቢዎች ለማስወገድ እና በቀጥታ ከማይክሮ መቆጣጠሪያ ራሱ ጋር መስተጋብር መፍጠር ነው። ስለዚህ በዚያ መንገድ ማድረጉ የበለጠ አስደሳች አይመስልም?

ለሚስማሙዎት ፣ ማይክሮ መቆጣጠሪያውን ከአርዲኖዎ ውስጥ ማውጣት እና እዚህ መመሪያዎቹን በመከተል “የዳቦ ሰሌዳ አርዱዲኖ” በመገንባት መጀመር ይችላሉ-

በሥዕሉ ላይ በትላልቅ የዳቦ ሰሌዳ ላይ ሁለት ራሱን የቻለ Atmega328p ን ያካተተ ቅንብሬን አሳያለሁ (በሚቀጥለው ላይ በሚሠራበት ጊዜ የቀደመውን አጋዥ ስልጠና ገመድ እና ተጭኖ በአንድ ማይክሮ መቆጣጠሪያ ላይ መጫን መቻል እፈልጋለሁ)። በጣም ከፍተኛው ሀዲድ 9 ቮ እና ሌሎቹ በሙሉ ከ voltage ልቴጅ ተቆጣጣሪው 5 ቮ እንዲሆኑ የኃይል አቅርቦቱ ተዘርግቷል። እንዲሁም ቺፖችን ለማቀናበር የ FT232R ማቋረጫ ቦርድ እጠቀማለሁ። እኔ ገዛኋቸው እና የማስነሻ መጫዎቻዎችን ራሴ በላያቸው ላይ አደረግኩ ፣ ግን አንዱን ከአርዱዲኖ ካወጡ ከዚያ ቀድሞውኑ ጥሩ ነው።

ይህንን በ ATtiny85 እየሞከሩ ከሆነ የ Sparkfun Tiny Programmer ን እዚህ ብቻ ማግኘት ይችላሉ https://www.sparkfun.com/products/11801# እና ከዚያ በቀላሉ በኮምፒተርዎ ላይ ባለው የዩኤስቢ ወደብ ላይ ይሰኩት። በመጀመሪያ በአቲንቲ 85 ላይ የማስነሻ ጫኝ መጫን ያስፈልግዎታል እና ቀላሉ መንገድ አርዱዲኖ አይዲኢን መጠቀም ብቻ ነው። ሆኖም ፣ ፋይል ፣ እና ምርጫዎች ላይ ጠቅ ማድረግ እና ከዚያ ይህንን አዲስ የቦርዶች ዩአርኤል ማከል ያስፈልግዎታል https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json ይህም የማስነሻ ጫloadውን እንዲጭኑ ያስችሉዎታል (የእርስዎ ATtiny85 ቀድሞውኑ አንድ ካልመጣ)።

ደረጃ 2 አሰባሳቢውን እና አቭርዱን ይጫኑ

በዚህ አጋዥ ስልጠና የመጀመሪያ ደረጃ ላይ ከተሰጡት አገናኞች አሰባሳቢውን እና avrdude ን ማውረድ እና መጫን ይችላሉ። ምናልባት ከአርዱዲኖ ጋር አብረው ከሠሩ ከዚያ ቀድሞውኑ avrdude ን ጭነዋል።

አቫራን ከጫኑ በኋላ “ምንጮች” ተብሎ የሚጠራ ንዑስ ማውጫ እንዳለ እና በዚያ ማውጫ ውስጥ ብዙ የተካተቱ ፋይሎች እንዳሉ ያስተውላሉ። እነዚህ በአቫራ ሊያዘጋጁት የሚችሏቸው ሁሉም ማይክሮ መቆጣጠሪያዎች ናቸው። እዚህ የምንጠቀምበት ለ 328 ፒ ፋይል እንደሌለ ወዲያውኑ ያስተውላሉ። አንዱን አያይ Iዋለሁ። ፋይሉ m328Pdef.inc ተብሎ መጠራት አለበት እና በማካተት ማውጫ ውስጥ ወይም በሚወዱት በማንኛውም ቦታ ውስጥ ማስገባት አለብዎት። በስብሰባ ቋንቋ መርሃ ግብሮቻችን ውስጥ እናካተተዋለን። ይህ ሁሉ የሚያደርገው የእያንዳንዱን መመዝገቢያ ማይክሮሶፍት ተቆጣጣሪ ስሞች ከመረጃ ወረቀቱ መስጠት ነው ስለዚህ እኛ የእነሱን ኦክሳይድ ስሞች መጠቀም የለብንም። ከላይ የተካተተው ፋይል ለ C እና ለ C ++ መርሃ ግብር የተነደፈ ስለሆነ ‹ፕራግማ መመሪያዎችን› ይ containsል። ሰብሳቢው “የፕራግማ መመሪያን ችላ በማለት” ቅሬታዎች ሲተፋ ማየቱ ቢደክምዎ ወደ ፋይሉ ውስጥ ይግቡ እና ከ #ፕራግማ የሚጀምሩትን ሁሉንም መስመሮች ይሰርዙ ወይም አስተያየት ይስጡ

እሺ ፣ አሁን የማይክሮ መቆጣጠሪያዎ ዝግጁ ፣ ሰብሳቢዎ ዝግጁ እና የፕሮግራም አዘጋጅዎ ዝግጁ ስለሆኑ ፣ የመጀመሪያ ፕሮግራማችንን መፃፍ እንችላለን።

ማሳሰቢያ: ከ ATmega328P ይልቅ ATtiny85 ን እየተጠቀሙ ከሆነ ከዚያ የተለየ tn85def.inc የተባለ ፋይል ያስፈልግዎታል። እኔ ደግሞ አያይዘዋለሁ (አስተማሪዎቹ እንድሰቅለው እንዲፈቅዱልኝ tn85def.inc.txt ብዬ መጥራት ነበረብኝ) ስለዚህ እሱን እንዲያገኙ እና እራስዎ እንዲያጠናቅሩት እመክራለሁ- git clone

ደረጃ 3 ሰላም ዓለም

የዚህ የመጀመሪያ አጋዥነት ግብ ማንኛውንም አዲስ ቋንቋ ሲማሩ ወይም ማንኛውንም አዲስ የኤሌክትሮኒክስ መድረክ ሲያስሱ የሚጽፈውን መደበኛ የመጀመሪያ መርሃ ግብር መገንባት ነው። "ሰላም ልዑል!." በእኛ ሁኔታ በቀላሉ የመሰብሰቢያ ቋንቋ መርሃ ግብር ለመፃፍ ፣ ለመሰብሰብ እና ወደ ማይክሮ መቆጣጠሪያችን ለመስቀል እንፈልጋለን። ፕሮግራሙ ኤልኢዲ እንዲበራ ያደርገዋል። ለወትሮው የአርዱዲኖ ሰላም ዓለም መርሃ ግብር እንደሚያደርጉት “ብልጭ ድርግም” (LED) እንዲፈጠር ማድረጉ በእውነቱ በስብሰባ ቋንቋ በጣም የተወሳሰበ ፕሮግራም ነው እና እኛ ያንን ገና አናደርግም። በጣም ቀላል የሆነውን “እርቃን አጥንቶች” ኮድ በአነስተኛ አላስፈላጊ ጉንፋን እንጽፋለን።

በመጀመሪያ አንድ ኤልዲዲ ከ PB5 ጋር ያገናኙ (የፒኖው ዲያግራምን ይመልከቱ) እሱም ዲጂታል ውጣ 13 በአርዱዲኖ ላይ ፣ ወደ 220 ohm resistor ፣ ከዚያ ወደ GND። ኢ.

PB5 - LED - R (220 ohm) - GND

አሁን ፕሮግራሙን ለመፃፍ። የእርስዎን ተወዳጅ የጽሑፍ አርታኢ ይክፈቱ እና “hello.asm” የተባለ ፋይል ይፍጠሩ

; ሰላም

; ከ PB5 (ዲጂታል ውጭ 13) ጋር የተገናኘውን ኤልኢዲ ያበራል። "./m328Pdef.inc" ldi r16 ፣ 0b00100000 ከ DDRB ፣ r16 ውጭ PortB ፣ r16 ጀምር: rjmp ጀምር

ከላይ ያለው ኮድ ነው። እኛ በደቂቃ ውስጥ በመስመር እንሄዳለን ፣ ግን በመጀመሪያ በመሣሪያዎ ላይ እየሰራን ማግኘት እንደምንችል እናረጋግጥ።

ፋይሉን ከፈጠሩ በኋላ ፣ በተርሚናል ውስጥ እንደሚከተለው ይሰበሰባሉ-

avra hello.asm

ይህ ኮድዎን ይሰበስባል እና እኛ እንደሚከተለው ልንጭነው የምንችለውን hello.hex የተባለ ፋይል ይፈጥራል።

avrdude -p m328p -c stk500v1 -b 57600 -P /dev /ttyUSB0 -U ብልጭታ: w: hello.hex

የዳቦ ሰሌዳ አርዱዲኖን የሚጠቀሙ ከሆነ ከላይ ያለውን ትእዛዝ ከመፈጸምዎ በፊት የዳቦ ማስቀመጫ ቁልፍ ሰሌዳውን በአርዱዲኖ ላይ መጫን ያስፈልግዎታል። እንዲሁም ሱዶን ከፊትዎ ማከል ወይም እንደ ሥር ማስፈፀም ሊኖርብዎት እንደሚችል ልብ ይበሉ። እንዲሁም በአንዳንድ የአርዱዲኖዎች (እንደ አርዱዲኖ UNO) ምናልባት የቢት መጠንን ወደ -b 115200 እና ወደብ -P /dev /ttyACM0 መለወጥ እንደሚኖርብዎት ልብ ይበሉ (ስለ ልክ ያልሆነ የመሣሪያ ፊርማ ከ avrdude ስህተት ካገኙ ብቻ ይጨምሩ) - F ወደ ትዕዛዙ)

ሁሉም ነገር እንደፈለገው ከሰራ አሁን የ LED መብራት ይኖርዎታል….. “ሰላም ዓለም!”

ATtiny85 ን እየተጠቀሙ ከሆነ የ avrdude ትዕዛዙ የሚከተለው ይሆናል-

avrdude -p attiny85 -c usbtiny -U ፍላሽ: w: hello.hex

ደረጃ 4: Hello.asm መስመር-በ-መስመር

ይህንን የመግቢያ ትምህርት ለመጨረስ እንዴት እንደሚሰራ ለማየት በ hello.asm ፕሮግራም መስመር-መስመር እንሄዳለን።

; ሰላም

; ከ PB5 (ዲጂታል ውጭ 13) ጋር የተገናኘውን ኤልኢዲ ያበራል

ከሴሚኮሎን በኋላ ሁሉም ነገር በአሰባሳቢው ችላ ይባላል እና ስለሆነም እነዚህ የመጀመሪያዎቹ ሁለት መስመሮች ፕሮግራሙ የሚያደርገውን በቀላሉ “አስተያየቶች” ናቸው።

. "ያካትቱ"./m328Pdef.inc"

ይህ መስመር ሰብሳቢው ያወረዱትን የ m328Pdef.inc ፋይል እንዲያካትት ይነግረዋል። ይህንን በተመሳሰሉ ፋይሎች ማውጫ ውስጥ ማስቀመጥ ከፈለጉ ከዚያ ወደዚያ ለማመልከት ከላይ ያለውን መስመር ይለውጡ።

ldi r16 ፣ 0b00100000

ldi “ወዲያውኑ ጫን” ማለት ሲሆን ሰብሳቢው የሥራ ምዝገባን ፣ በዚህ ጉዳይ ላይ r16 እንዲወስድ እና በዚህ ጉዳይ ላይ የሁለትዮሽ ቁጥርን በውስጡ እንዲጭነው ፣ 0b00100000 ን ይነግረዋል። ከፊት ለፊቱ ያለው 0b ቁጥራችን በሁለትዮሽ ነው ይላል። እኛ ከፈለግን እንደ ሄክሳይድሲማል ያለ ሌላ መሠረት መምረጥ እንችል ነበር። እንደዚያ ከሆነ ቁጥራችን 0x20 ነበር ፣ ይህም ለ 0b00100000 ሄክሳይድሲማል ነው። ወይም ለተመሳሳይ ቁጥር መሠረት 10 አስርዮሽ የሆነውን 32 ን ልንጠቀምበት እንችላለን።

መልመጃ 1 ፦ ከላይ ባለው መስመር ላይ ያለውን ቁጥር ወደ ሄክሳይድሲማል በመቀየር በኮድዎ ውስጥ ወደ አስርዮሽ ለመቀየር ይሞክሩ እና አሁንም በእያንዳንዱ ሁኔታ ውስጥ የሚሰራ መሆኑን ያረጋግጡ።

ወደቦች እና መዝገቦች በሚሠሩበት መንገድ ምክንያት ሁለትዮሽ መጠቀም በጣም ቀላል ነው። በአትሜጋ 328 ፒ ወደቦች እና ምዝገባዎች ላይ ወደፊት በሚሰጡት ትምህርቶች ውስጥ በበለጠ ዝርዝር እንወያይበታለን ፣ ግን ለአሁኑ r16 ን እንደ “የሥራ መዝገባችን” እየተጠቀምን መሆናችንን እንደምናስቀምጠው እኛ እንደምናከማቸው እንደ ተለዋዋጭ እንጠቀማለን ማለት ነው። ቁጥሮች። አንድ “መዝገብ” የ 8 ቢት ስብስብ ነው። 0 ወይም 1 (“ጠፍቷል” ወይም “በርቷል”) ሊሆኑ የሚችሉ 8 ቦታዎች። ከላይ ያለውን መስመር ተጠቅመን የሁለትዮሽ ቁጥሩን 0b00100000 በመዝገቡ ውስጥ ስንጭን በቀላሉ ያንን ቁጥር በመዝገቡ r16 ውስጥ አስቀምጠነዋል።

ውጭ DDRB ፣ r16

ይህ መስመር የመመዝገቢያውን r16 ይዘቶች ወደ DDRB መዝገብ እንዲገለብጡ ለአቀነባባሪው ይነግረዋል። DDRB “የውሂብ አቅጣጫ መመዝገቢያ ለ” ን ያመለክታል እና በፖርትቢ ላይ “ፒኖችን” ያዘጋጃል። ለ 328 ፒ በሚወጣው ካርታ ላይ PB0 ፣ PB1 ፣… ፣ PB7 የተሰየሙ 8 ፒኖች እንዳሉ ማየት ይችላሉ። እነዚህ ፒኖች የ “ፖርትቢ” ን “ቁርጥራጮች” ይወክላሉ እና የሁለትዮሽ ቁጥሩን 00100000 ወደ DDRB መመዝገቢያ ስንጭን እኛ PB0 ፣ PB1 ፣ PB2 ፣ PB3 ፣ PB4 ፣ PB6 እና PB7 ን ከገቡበት እንደ ፒን ፒን እንዲፈልጉ እንፈልጋለን እያልን ነው። 0 በውስጣቸው ፣ እና በዚያ ቦታ ላይ 1 ካስቀመጥን PB5 እንደ OUTPUT ፒን ተዘጋጅቷል።

መውጫ PortB ፣ r16

አሁን የፒንቹን አቅጣጫዎች አስተካክለን አሁን እኛ በእነሱ ላይ የቮልቴጅ መጠኖችን ማዘጋጀት እንችላለን። ከላይ ያለው መስመር ተመሳሳዩን የሁለትዮሽ ቁጥር ከእቃ ማከማቻችን r16 ወደ PortB ይገለብጣል። ይህ 5 ቮልት ከሆነው PB5 እስከ HIGH በስተቀር ሁሉንም ካስማዎች ወደ 0 ቮልት ያዘጋጃል።

መልመጃ 2 ዲጂታል መልቲሜትር ይውሰዱ ፣ ጥቁር እርሳሱን ወደ መሬት (GND) ያስገቡ እና ከዚያ እያንዳንዱን ፒኖች PB0 በ PB7 በኩል በቀይ እርሳስ ይፈትሹ። በእያንዳንዱ ፒኖች ላይ ያሉት ውጥረቶች 0B00100000 ን በ PortB ውስጥ ከማስቀመጥ ጋር የሚዛመዱ ናቸው? ያልነበሩ ካሉ ለምን ይመስልዎታል? (የፒን ካርታውን ይመልከቱ)

ጀምር ፦

rjmp ጀምር

በመጨረሻም ፣ ከላይ ያለው የመጀመሪያው መስመር በኮድ ውስጥ ቦታን የሚለይ “መለያ” ነው። በዚህ ሁኔታ ያንን ቦታ “ጀምር” ብሎ መሰየም። ሁለተኛው መስመር “ዘመድ ወደ መለያው ዘልለው ይሂዱ” ይላል። የተጣራ ውጤቱ ኮምፒውተሩ ወደ መጀመሪያው ብስክሌት እንዲመለስ በሚያደርግ ማለቂያ በሌለው ዑደት ውስጥ እንዲቀመጥ መደረጉ ነው። ይህንን እንፈልጋለን ምክንያቱም ፕሮግራሙ ሊጨርስ ወይም ከገደል መውደቅ ስለማንችል ፣ መብራቱ እንዲበራ ፕሮግራሙ መሮጡን መቀጠል አለበት።

መልመጃ 3 - ፕሮግራሙ ከገደል ላይ እንዲወድቅ ከላይ ያሉትን ሁለት መስመሮች ከኮድዎ ያስወግዱ። ምን ሆንክ? አርዱinoኖ እንደ ‹ሠላም ዓለም› የሚጠቀምበትን ባህላዊ “ብልጭ ድርግም” መርሃ ግብር የሚመስል ነገር ማየት አለብዎት። ለምን በዚህ መንገድ ይሠራል ብለው ያስባሉ? (ፕሮግራሙ ከገደል ሲወድቅ ምን እንደሚሆን አስቡ…)

ደረጃ 5 መደምደሚያ

ይህንን ከደረሱ እንኳን ደስ አለዎት! አሁን የመሰብሰቢያ ኮድ መጻፍ ፣ መሰብሰብ እና በማይክሮ መቆጣጠሪያዎ ላይ መጫን ይችላሉ።

በዚህ መማሪያ ውስጥ የሚከተሉትን ትዕዛዞች እንዴት እንደሚጠቀሙ ተምረዋል-

ldi hregister ፣ ቁጥር አንድ ቁጥር (0-255) ወደ የላይኛው ግማሽ መዝገብ (16-31) ይጭናል

ከ ioregister ውጭ ፣ አንድን ቁጥር ከሥራ መዝገብ ወደ I/O ምዝገባ ቅጂዎችን ይመዝግቡ

የ “rjmp” መለያ በ “መለያ” ወደተሰየመው የፕሮግራሙ መስመር (ከ 204 መመሪያዎች በላይ ሊሆን አይችልም - ማለትም አንጻራዊ ዝላይ)

አሁን እነዚህ መሠረታዊ ነገሮች ከመንገድ ወጥተዋል ፣ የማጠናቀር እና የመጫን ሜካኒክስን ሳንወያይ የበለጠ ሳቢ ኮድ እና የበለጠ አስደሳች ወረዳዎችን እና መሳሪያዎችን መፃፋችንን መቀጠል እንችላለን።

በዚህ የመግቢያ ትምህርት እንደተደሰቱ ተስፋ አደርጋለሁ። በሚቀጥለው መማሪያ ውስጥ ሌላ የወረዳ ክፍል (አንድ ቁልፍ) እንጨምራለን እና የግብዓት ወደቦችን እና ውሳኔዎችን ለማካተት የእኛን ኮድ ያስፋፋሉ።

የሚመከር: