ዝርዝር ሁኔታ:

የጂፒዮ የጦር መሣሪያ ጉባኤ - ቲ. የሮቦቲክ ስርዓት የመማሪያ ኪት - ላብ 6: 3 ደረጃዎች
የጂፒዮ የጦር መሣሪያ ጉባኤ - ቲ. የሮቦቲክ ስርዓት የመማሪያ ኪት - ላብ 6: 3 ደረጃዎች

ቪዲዮ: የጂፒዮ የጦር መሣሪያ ጉባኤ - ቲ. የሮቦቲክ ስርዓት የመማሪያ ኪት - ላብ 6: 3 ደረጃዎች

ቪዲዮ: የጂፒዮ የጦር መሣሪያ ጉባኤ - ቲ. የሮቦቲክ ስርዓት የመማሪያ ኪት - ላብ 6: 3 ደረጃዎች
ቪዲዮ: Консультант от бога Tg: cadrolikk 2024, ሀምሌ
Anonim
የጂፒዮ የጦር መሣሪያ ጉባኤ - ቲ. የሮቦቲክ ስርዓት የመማሪያ ኪት - LAB 6
የጂፒዮ የጦር መሣሪያ ጉባኤ - ቲ. የሮቦቲክ ስርዓት የመማሪያ ኪት - LAB 6

ሰላም, የቴክሳስ መሣሪያዎችን TI-RSLK ን በመጠቀም የ ARM ስብሰባን ለመማር በቀደመው መመሪያ ውስጥ ቲአይ (ቲአይ) እየሠሩ ከሆነ ፣ ላብራ 3 ተብሎ ይጠራል። በእርግጥ ፣ እንደ መመዝገቢያ መፃፍ እና ሁኔታዊ ማዞርን የመሳሰሉ አንዳንድ በጣም መሠረታዊ መመሪያዎችን አልፈናል። የ Eclipse IDE ን በመጠቀም አፈፃፀሙን አልፈናል።

እኛ የፈፀምናቸው ታዳጊ ፕሮግራሞች ከውጭው ዓለም ጋር ለመገናኘት ምንም አላደረጉም።

አሰልቺ ዓይነት።

ስለ ግብዓት/ውፅዓት ወደቦች በተለይም ስለ ዲጂታል ጂፒኦ ፒኖች ትንሽ በመማር ዛሬ ያንን ትንሽ ለመለወጥ እንሞክር።

ስለዚህ ይህ MSP432 በልማት ቦርድ ላይ የሚመጣው ቀድሞውኑ ሁለት የግፋ-አዝራር መቀየሪያዎች ፣ አርጂቢ ኤልኢዲ እና ቀይ ኤል.ዲ. ፣ ሁሉም ከአንዳንድ የጂፒዮ ወደቦች ጋር የተሳሰሩ ናቸው።

ይህ ማለት በስብሰባ በኩል እነዚህን ፒንዎች ማቀናበር እና መጠቀማችንን ስንማር ፣ እነዚያን ውጤቶች በእይታ ማየት እንችላለን።

አራሚውን ከማለፍ የበለጠ አስደሳች።

(አሁንም እርምጃ እንወስዳለን - ይህ የእኛ ‹መዘግየት› ተግባር ይሆናል):-D

ደረጃ 1 ከራም ለመፃፍ / ለማንበብ እንሞክር

GPIO ን ለመድረስ እና ለመቆጣጠር ከመዝለላችን በፊት ትንሽ እርምጃ መውሰድ አለብን።

ወደ መደበኛ የማህደረ ትውስታ አድራሻ በማንበብ እና በመጻፍ ብቻ እንጀምር። ራም በ 0x2000 0000 እንደሚጀምር ከቀድሞው አስተማሪ (እዚያ ምስሎችን ይመልከቱ) እናውቃለን ፣ ስለዚህ ያንን አድራሻ እንጠቀም።

በዋና መዝገብ (R0) እና 0x2000 0000 መካከል መረጃን እናንቀሳቅሳለን።

በስብሰባ ፕሮግራም መሠረታዊ ፋይል አወቃቀር ወይም ይዘቶች እንጀምራለን። የቲኦ ኮድ አቀናባሪ ስቱዲዮ (ሲሲኤስ) ፣ እና አንዳንድ የናሙና ፕሮጄክቶችን በመጠቀም የመሰብሰቢያ ፕሮጀክት ለመፍጠር እባክዎን ይህንን Instructable ን ይመልከቱ።

.አውራ ጣት

.ጽሁፍ.መደብ 2.አለም አቀፍ ዋና.thumbfunc ዋና ዋና. ------------------------------------------------; (የእኛ ኮድ እዚህ ይሄዳል); ------------------------------------------ ---------------------------------------.endasmfunc.end

ወደ ላይኛው ክፍል አዲስ ነገር ማከል እፈልጋለሁ ፣ አንዳንድ መግለጫዎች (መመሪያዎች) ነበሩ። በኋላ ላይ የበለጠ ግልጽ ይሆናል።

ACONST.set 0x20000000; ይህንን ወደ ታች እንጠቀማለን (ቋሚ ነው)

; በግልጽ ፣ ‹0x› የሚያመለክተው የሄክስ እሴት ነው።

ስለዚህ የእኛ የመነሻ ፋይል ይዘቶች አሁን እንደዚህ ይመስላሉ

.አውራ ጣት

. ጽሑፍ.መመደብ 2 ACONST.set 0x20000000; ይህንን ወደ ታች እንጠቀማለን (ቋሚ ነው) ፣ በግልጽ ፣ ‹0x› የሚያመለክተው የሄክስ እሴት ነው።.አለም አቀፍ.thumbfunc ዋና ዋና.asmfunc; -------------------------------------- ------------------------------------------; (የእኛ ኮድ እዚህ ይሄዳል); ------------------------------------------ ---------------------------------------.endasmfunc.end

አሁን ከዚህ በላይ ስላለን በተሰነጣጠሉ መስመሮች መካከል ኮድ እንጨምር።

ወደ ራም ቦታ በመፃፍ እንጀምራለን። በመጀመሪያ ወደ ራም የምንጽፍበትን የውሂብ ንድፍ ፣ እሴት እንመሰርታለን። ያንን እሴት ወይም ውሂብ ለመመስረት ዋና መዝገብ እንጠቀማለን።

ማሳሰቢያ-በኮዱ ውስጥ ማንኛውም መስመር ከፊል-ኮሎን (';') ያለው ማለት ከዚያ ከፊል-ኮሎን በኋላ ሁሉም አስተያየት ነው ማለት ነው።

;-----------------------------------------------------------------------------------------------

; መጻፍ; ------------------------------------------------------ ---------------------------------------------- MOV R0 ፣ #0x55; ዋና መመዝገቢያ R0 ወደ ራም ቦታ ለመጻፍ የምንፈልገውን ውሂብ ይይዛል።; በግልጽ ፣ ‹0x› የሚያመለክተው የሄክስ እሴት ነው።

በመቀጠል ፣ DONT የሚሰሩ መግለጫዎችን እንመልከት።

; MOV MOV መረጃን ወደ ራም ቦታ ለመፃፍ ጥቅም ላይ አይውልም።

; MOV ለመመዝገብ ወዲያውኑ መረጃ ብቻ ነው ፣ ወይም ከአንድ መዝገብ ወደ ሌላ; ማለትም MOV R1 ፣ R0።; STR STR ን መጠቀም አለበት።; STR R0 ፣ = ACONST; በአረፍተ ነገር ውስጥ መጥፎ ቃል (the '='); STR R0 ፣ 0x20000000; ለሱቅ ትምህርት ሕገ -ወጥ የአድራሻ ሁኔታ; STR R0 ፣ ACONST; ለሱቅ ትምህርት ሕገ -ወጥ የአድራሻ ሁኔታ

በጣም ብዙ ሳናብራራ ፣ ያንን 'ACONST' ከላይ ለመጠቀም ሞክረናል። በዋናነት ፣ እንደ 0x20000000 ያለ ቀጥተኛ እሴት ከመጠቀም ይልቅ ቋሚ ወይም ቋሚ ነው።

ከላይ ተጠቅመን ወደ ራም ቦታ ለመፃፍ መፃፍ አልቻልንም። ሌላ ነገር እንሞክር።

; የ RAM ቦታ የያዘ ሌላ መዝገብ መጠቀም ያለብን ይመስላል

; ወደዚያ ራም ሥፍራ MOV R1 ፣ #0x20000000 ለማከማቸት ትእዛዝ ፤ የ RAM ቦታን (ይዘቱን ሳይሆን ቦታውን) ወደ R1 ያዘጋጁ።; በግልጽ ፣ ‹0x› የሚያመለክተው የሄክስ እሴት ነው። STR R0 ፣ [R1]; R1 ን በመጠቀም በ R0 (0x55) ውስጥ ወደ ራም (0x20000000) ይፃፉ።; የ RAM ሥፍራ አድራሻ ያለው ሌላ መዝገብ (R1) እንጠቀማለን ፤ ወደዚያ የ RAM ቦታ ለመፃፍ።

ከላይ የተጠቀሰበትን ሌላ መንገድ ፣ ግን በቁሳዊ አድራሻ እሴት ምትክ ‹ACONST› ን መጠቀም ፦

; ከላይ ያለውን እንደገና እናድርግ ፣ ግን በጥሬው ራም ቦታ እሴት ምትክ ምልክት እንጠቀም።

; ለ 0x20000000 እንደ መቆሚያ ‹ACONST› ን መጠቀም እንፈልጋለን።; ወዲያውኑ ዋጋን ለማመልከት '#' ማድረግ አለብን ፣ ስለዚህ (ከላይ ይመልከቱ) ፣ ‹.set› የሚለውን መመሪያ መጠቀም ነበረብን።; ይህንን ለማረጋገጥ በ R0 ውስጥ ያለውን የውሂብ ንድፍ እንቀይር። MOV R0 ፣ #0xAA; እሺ ከቁሳዊ አድራሻ እሴት MOV R1 ፣ #ACONST STR R0 ፣ [R1] ይልቅ ምልክቱን በመጠቀም ወደ ራም ለመጻፍ ዝግጁ ነን።

ቪዲዮው ወደ አንዳንድ ተጨማሪ ዝርዝሮች ይሄዳል ፣ እንዲሁም ከማህደረ ትውስታ ቦታ በማንበብ ይራመዳል።

እንዲሁም የተያያዘውን ምንጭ.asm ፋይል ማየትም ይችላሉ።

ደረጃ 2 - አንዳንድ መሠረታዊ ወደብ መረጃ

Image
Image
አንዳንድ መሠረታዊ ወደብ መረጃ
አንዳንድ መሠረታዊ ወደብ መረጃ
አንዳንድ መሠረታዊ ወደብ መረጃ
አንዳንድ መሠረታዊ ወደብ መረጃ

አሁን ከ RAM ቦታ እንዴት መፃፍ / ማንበብ እንደሚቻል ጥሩ ሀሳብ አለን ፣ ይህ የጂፒኦ ፒን እንዴት መቆጣጠር እና መጠቀም እንደሚቻል በተሻለ ለመረዳት ይረዳናል።

ስለዚህ ከጂፒኦ ፒኖች ጋር እንዴት እንገናኛለን? ይህንን የማይክሮ መቆጣጠሪያ እና የአርኤም መመሪያዎቹን ከቀደመው እይታችን ፣ የውስጥ መዝገቦቹን እንዴት መቋቋም እንደሚቻል እናውቃለን ፣ እና ከማህደረ ትውስታ (ራም) አድራሻዎች ጋር እንዴት መስተጋብር መፍጠር እንደሚቻል እናውቃለን። ግን ጂፒኦ ፒኖች?

ይህ የሚሆነው እነዚያ ካስማዎች በማስታወሻ የተቀረጹ መሆናቸው ነው ፣ ስለዚህ እኛ እንደ ማህደረ ትውስታ አድራሻዎች አንድ አይነት ልንይዛቸው እንችላለን።

ይህ ማለት እነዚያ አድራሻዎች ምን እንደሆኑ ማወቅ አለብን ማለት ነው።

ከዚህ በታች የወደብ መነሻ አድራሻዎች ናቸው። በነገራችን ላይ ለ MSP432 “ወደብ” የፒን ስብስብ ነው ፣ እና አንድ ፒን ብቻ አይደለም። ከ Raspberry Pi ጋር የሚያውቁ ከሆነ ፣ እዚህ ካለው ሁኔታ የተለየ ነው ብዬ አምናለሁ።

ከላይ ባለው ምስል ላይ ያሉት ሰማያዊ ክበቦች ለሁለት መቀያየሪያዎች እና ኤልኢዲዎች በቦርዱ ላይ ያለውን ጽሑፍ ያሳያሉ። ሰማያዊ መስመሮች ወደ ትክክለኛዎቹ ኤልኢዲዎች ያመለክታሉ። የራስጌ መዝለያዎችን መንካት የለብንም።

እኛ የምንመለከታቸው ወደቦችን ከዚህ በታች በድፍረት ሠራሁ።

  • GPIO P1: 0x4000 4C00 + 0 (አድራሻዎች እንኳን)
  • GPIO P2: 0x4000 4C00 + 1 (ያልተለመዱ አድራሻዎች)
  • GPIO P3: 0x4000 4C00 + 20 (አድራሻዎች እንኳን)
  • GPIO P4: 0x4000 4C00 + 21 (ያልተለመዱ አድራሻዎች)
  • GPIO P5: 0x4000 4C00 + 40 (አድራሻዎች እንኳን)
  • GPIO P6: 0x4000 4C00 + 41 (ያልተለመዱ አድራሻዎች)
  • GPIO P7: 0x4000 4C00 + 60 (አድራሻዎች እንኳን)
  • GPIO P8: 0x4000 4C00 + 61 (ያልተለመዱ አድራሻዎች)
  • GPIO P9: 0x4000 4C00 + 80 (አድራሻዎች እንኳን)
  • GPIO P10: 0x4000 4C00 + 81 (ያልተለመዱ አድራሻዎች)

ገና አልጨረስንም። ተጨማሪ መረጃ እንፈልጋለን።

ወደብን ለመቆጣጠር ፣ በርካታ አድራሻዎች ያስፈልጉናል። ለዚህም ነው ከላይ ባለው ዝርዝር ውስጥ “አድራሻዎች እንኳን” ወይም “ያልተለመዱ አድራሻዎች” የምናየው።

I/O የምዝገባ አድራሻ ብሎኮች

ሌሎች አድራሻዎችን እንፈልጋለን ፣ ለምሳሌ ፦

  • ወደብ 1 የግብዓት ምዝገባ አድራሻ = 0x40004C00
  • ወደብ 1 የውጤት መመዝገቢያ አድራሻ = 0x40004C02
  • ወደብ 1 አቅጣጫ መመዝገቢያ አድራሻ = 0x40004C04
  • ወደብ 1 ይምረጡ 0 ይመዝገቡ አድራሻ = 0x40004C0A
  • ወደብ 1 ይምረጡ 1 ይመዝገቡ አድራሻ = 0x40004C0C

እና ሌሎች ሊያስፈልጉን ይችላሉ።

ደህና ፣ አሁን አንድ ቀይ ቀይ LED ን ለመቆጣጠር የ GPIO መመዝገቢያ አድራሻዎችን ክልል እናውቃለን።

በጣም አስፈላጊ ማስታወሻ በ MSP432 LaunchPad ሰሌዳ ላይ ያለው እያንዳንዱ የ I/O ወደብ የብዙ (አብዛኛውን ጊዜ 8) ፒኖች ወይም መስመሮች ስብስብ ነው ፣ እና እያንዳንዱ እንደ ግብዓት ወይም ውፅዓት በተናጠል ሊዋቀር ይችላል።

ይህ ማለት ፣ ለምሳሌ ፣ ለ “ወደብ 1 አቅጣጫ መመዝገቢያ አድራሻ” እሴቶችን እያቀናበሩ ከሆነ ፣ በዚያ አድራሻ ላይ የትኛውን ቢት (ወይም ቢት) እንደሚያቀናብሩ ወይም እንደሚቀይሩ መጨነቅ አለብዎት። ተጨማሪ በዚህ ላይ በኋላ።

የጂፒኦ ወደብ መርሃ ግብር ቅደም ተከተል

እኛ የምንፈልገው የመጨረሻው ቁራጭ ፣ ኤልኢዲውን ለመቆጣጠር ሂደት ወይም ስልተ ቀመር ነው።

የአንድ ጊዜ ጅምር;

  • P1.0 ን ያዋቅሩ (P1SEL1REG: P1SEL0REG Register) <--- 0x00 ፣ 0x00 ለመደበኛ የጂፒኦ ተግባር።
  • የአቅጣጫ መመዝገቢያውን ቢት 1 of P1DIRREG እንደ ውጤት ፣ ወይም HIGH ያዘጋጁ።

Loop:

ቀይ LED ን ለማብራት ከ P1OUTREG መመዝገቢያ ወደ ከፍተኛ 0 ይፃፉ

  • የመዘግየት ተግባር ይደውሉ
  • ቀይ LED ን ለማጥፋት ከ P1OUTREG መመዝገቢያ LOW ወደ ቢት 0 ይፃፉ
  • የመዘግየት ተግባር ይደውሉ
  • ተደጋጋሚ ሉፕ

የትኛው የግቤት / የውጤት ተግባር (SEL0 እና SEL1 ን ያዋቅሩ)

በ LaunchPad ላይ ያሉት ብዙ ፒኖች ብዙ አጠቃቀሞች አሏቸው። ለምሳሌ ፣ ተመሳሳይ ፒን መደበኛ ዲጂታል ጂፒኦ ሊሆን ይችላል ፣ ወይም ደግሞ በ UART ፣ ወይም I2C ተከታታይ ግንኙነቶች ውስጥ ሊያገለግል ይችላል።

ለዚያ ፒን ማንኛውንም የተለየ ተግባር ለመጠቀም ፣ ያንን ተግባር መምረጥ ያስፈልግዎታል። የፒኑን ተግባር ማዋቀር ያስፈልግዎታል።

ይህንን ደረጃ በምስል መልክ ለማብራራት የሚሞክር ከዚህ በላይ የሆነ ምስል አለ።

የ SEL0 እና SEL1 አድራሻዎች እንደ አንድ ዓይነት ተግባር / ባህሪ ምርጫ የሚሠሩ ጥንድ ጥምረት ይፈጥራሉ።

ለዓላማችን ፣ መደበኛ ዲጂታል ጂፒኦ ለትንሽ 0. እንፈልጋለን ማለት ያ ማለት ለ SEL0 እና SEL1 ትንሽ ለመሆን ትንሽ 0 እንፈልጋለን ማለት ነው።

የወደብ ፕሮግራም ቅደም ተከተል (እንደገና)

1. 0x00 ን ለ P1 SEL 0 Register ይጻፉ (አድራሻ 0x40004C0A)። ይህ ለዝቅተኛ 0 LOW ያስቀምጣል

2. 0x00 ን ለ P1 SEL 1 Register (አድራሻ 0x40004C0C) ይጻፉ። ይህ ለ GPIO ቅንብር ለትንሽ 0 LOW ን ያዘጋጃል።

3. 0x01 ን ለ P1 DIR Register (አድራሻ 0x40004C04) ይፃፉ። ይህ ለከፍተኛ ቢት 0 ያወጣል ፣ ትርጉሙም ውፅዓት ማለት ነው።

4. 0x01 ን ወደ P1 OUTPUT Register (አድራሻ 0x40004C02) በመጻፍ ኤልኢዲውን ያብሩ።

5. አንድ ዓይነት መዘግየት ያድርጉ (ወይም በማረም ላይ ባለ አንድ እርምጃ ብቻ)

6. 0x00 ን ወደ P1 OUTPUT Register (አድራሻ 0x40004C02) በመጻፍ ኤልኢዲውን ያጥፉ።

7. አንድ ዓይነት መዘግየት ያድርጉ (ወይም በማረም ላይ ባለ አንድ እርምጃ ብቻ)

8. ደረጃ 4 እስከ 7 ይድገሙት።

በእያንዳንዱ የስብሰባ መመሪያ ውስጥ አንድ-ደረጃ ስናደርግ እና ስንነጋገር እና የ LED እርምጃውን ስናሳይ ለዚህ ደረጃ ተጓዳኝ ቪዲዮው ቀጥታ ማሳያ ውስጥ አጠቃላይ ሂደቱን ያካሂደናል። እባክዎን የቪዲዮውን ርዝመት ይቅርታ ያድርጉ።

ደረጃ 3 - በቪዲዮው ውስጥ አንዱን ጉድለት ያዙት?

በጠቅላላው የፕሮግራም አወጣጥ ሂደት እና ኤልኢዲውን በማብራት በቪዲዮው ውስጥ ፣ በዋናው ዑደት ውስጥ ወደ አንድ ጊዜ ጅምር ሊንቀሳቀስ የሚችል ተጨማሪ እርምጃ ነበር።

ይህንን አስተማሪነት ለማለፍ ጊዜ ስለወሰዱ እናመሰግናለን።

ቀጣዩ እዚህ የጀመርነውን ያሰፋዋል።

የሚመከር: