ዝርዝር ሁኔታ:

አርዱዲኖዎን ወደ መግነጢሳዊ ካርድ አንባቢ ይለውጡት !: 9 ደረጃዎች (ከስዕሎች ጋር)
አርዱዲኖዎን ወደ መግነጢሳዊ ካርድ አንባቢ ይለውጡት !: 9 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: አርዱዲኖዎን ወደ መግነጢሳዊ ካርድ አንባቢ ይለውጡት !: 9 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: አርዱዲኖዎን ወደ መግነጢሳዊ ካርድ አንባቢ ይለውጡት !: 9 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: Голубая стрела (1958) фильм 2024, ሀምሌ
Anonim
አርዱዲኖዎን ወደ መግነጢሳዊ ካርድ አንባቢ ይለውጡት!
አርዱዲኖዎን ወደ መግነጢሳዊ ካርድ አንባቢ ይለውጡት!
አርዱዲኖዎን ወደ መግነጢሳዊ ካርድ አንባቢ ይለውጡት!
አርዱዲኖዎን ወደ መግነጢሳዊ ካርድ አንባቢ ይለውጡት!
አርዱዲኖዎን ወደ መግነጢሳዊ ካርድ አንባቢ ይለውጡት!
አርዱዲኖዎን ወደ መግነጢሳዊ ካርድ አንባቢ ይለውጡት!

ሁሉም ሰው መግነጢሳዊ ካርድ አንባቢን ተጠቅሟል ፣ አምናለሁ። ማለቴ ፣ በእነዚህ ቀናት ጥሬ ገንዘብ ማን ይይዛል? እነሱም እንዲሁ እጆችዎን ለመያዝ አስቸጋሪ አይደሉም ፣ እና ወደ እኔ ተወዳጅ የአከባቢ ኤሌክትሮኒክስ ሱቅ በሚጓዙበት ጊዜ በእነዚህ ሰዎች የተሞላ መያዣ አገኘሁ። ስለዚህ….እርግጥ እኔ ምን ዓይነት ነገሮችን በእሱ እና በ AVR ማድረግ እንደምችል ለማየት አንዱን አንስቼ ወደ ቤት አመጣሁት።

ይህ አስተማሪ የማግቴክ መግነጢሳዊ ካርድ አንባቢን ከኤቪአር ወይም አርዱinoኖ/ክሎይን ጋር እንዴት እንደሚያገናኙ እና ከመጀመሪያው የካርድ ትራክ ላይ መረጃን እንደሚያነቡ ያሳየዎታል። መቀመጫዎችዎን ይዝጉ; መግነጢሳዊ ካርድ አንባቢዎች ከፍተኛ መጠን አላቸው!

ደረጃ 1 - የመሣሪያዎች ዝርዝር

የመሳሪያዎች ዝርዝር
የመሳሪያዎች ዝርዝር
የመሳሪያዎች ዝርዝር
የመሳሪያዎች ዝርዝር

ለመጀመር የሚያስፈልጉዎት ጥቂት ነገሮች እዚህ አሉ።

  • መግነጢሳዊ ካርድ አንባቢ (የእኔ ማግኔት 90 ሚሜ ባለ ሁለት ራስ አንባቢ ነው። $ 5.00)
  • AVR ፣ Arduino ፣ ወይም clone (ATmega328p ~ $ 4.30 ከ Mouser.com)
  • የማይሸጥ የዳቦ ሰሌዳ
  • አንዳንድ ሽቦ
  • ያንን የከፋ ነገር ከወደዱ ምናልባት ራስጌ።
  • ተከታታይ ወደብዎን የሚያነብ ነገር። AVR ተርሚናልን ከ BattleDroids.net እጠቀማለሁ

ለመጀመር የሚያስፈልግዎት ይህ ብቻ ነው። እርስዎ በሚያገኙት የማግካርድ አንባቢ ላይ በመመስረት ፣ ከተለየ አንባቢዎ ጋር ለመስራት እነዚህን መመሪያዎች እና በጣም በእርግጠኝነት ኮዱን ማሻሻል ሊኖርብዎት ይችላል። ሆኖም ፣ እኔ የጻፍኩት ኮድ በጣም ሩቅ ያደርግልዎታል ፣ ተስፋ አደርጋለሁ።

ደረጃ 2 የራስ-ሰዓት መግነጢሳዊ ካርድ አንባቢዎች

የራስ-ሰዓት መግነጢሳዊ ካርድ አንባቢዎች
የራስ-ሰዓት መግነጢሳዊ ካርድ አንባቢዎች
የራስ-ሰዓት መግነጢሳዊ ካርድ አንባቢዎች
የራስ-ሰዓት መግነጢሳዊ ካርድ አንባቢዎች
የራስ-ሰዓት መግነጢሳዊ ካርድ አንባቢዎች
የራስ-ሰዓት መግነጢሳዊ ካርድ አንባቢዎች
የራስ-ሰዓት መግነጢሳዊ ካርድ አንባቢዎች
የራስ-ሰዓት መግነጢሳዊ ካርድ አንባቢዎች

መግነጢሳዊ ካርድ አንባቢዎች “የራስ-ሰዓት ቆጣሪ” ናቸው ፣ ማለትም የተገናኘው ማይክሮ መቆጣጠሪያውን የሚያመሳስልበትን “ስትሮብ” የተባለ ሰዓት ይሰጣሉ ማለት ነው። ይህ ደግነት ነው። ይህ ማለት የሰዓት ምልክት ለመፈለግ እና ምልክቱን በቀጥታ በሰዓት ምት ላይ ለማቆየት መጨነቅ አያስፈልግዎትም ፣ እና ወደ የሰዓት ምልክቱ ጣፋጭ ቦታ ምንም የሚረብሽ የለም። ስለ ካርድ መንሸራተቻዎች ሲያስቡ ይህ ምክንያታዊ ነው -እያንዳንዱ ሰው በተለየ ፍጥነት ፣ አንዳንድ ቀርፋፋ ፣ አንዳንዶቹ ከሌሎቹ በበለጠ ፍጥነት ያንሸራትቱ። የራስ-ሰዓት ሰዓት የእኔ ጣፋጭ አያቴ እንኳን የእጅ አንጓን ሳይሰበር ካርዷን የመጠቀም ችሎታን ይፈቅዳል። ሁለቴ ጠቅታ ለማስመዝገብ በጠቅታዎች መካከል ምን ያህል ጊዜ እንደሚሠራ የሚወስን ቅንብሩን መለወጥ እንዳለብኝ ያስታውሰኛል….

ስትሮቢው መስመር ላይ ከመቀመጡ በፊት የዚህ ካርድ አንባቢ ውሂብ ለእኛ 1.0 ለእኛ የሚሰራ ነው ፣ ስለዚህ እራስዎን ወደ “ቢት ጊዜ” ውስጥ ለመግባት መዘግየት ምንም አይጨነቅም። እንደ እኔ እየተጠቀምኩ ላለው ባለሁለት ራስ አንባቢ ለማንበብ ሁለት የውሂብ ትራኮች አሉ። በዚህ ‹ible› ውስጥ ፣ እርስዎ ለመጀመር ከዋናው የመጀመሪያ ትራክ ንባብን ለማሳየት እሄዳለሁ። ለአነስተኛ I/O ወደቦች ጥቅም ላይ የዋለውን የበለጠ የተስተካከለ ቁጥጥርን መተው የማይፈልጉ ከሆነ አራት ማድረግ ያለብዎት (አራት) አሉ። ከታች ያለውን ስዕል ይመልከቱ። ጥቁር ሽቦ ወደ መሬት ሲሄድ ቀይ ሽቦው ወደ +5V ይሄዳል። አረንጓዴው ሽቦ /CARD_PRESENT; ቢጫው ሽቦ /STROBE ፣ እና ነጭ ሽቦ /DATA1 ነው። ወደ ፊት የመቀነስ (/) ማለት ውሂቡ የተገላቢጦሽ ነው ማለት ነው። ዝቅተኛ ምልክት (ማለትም 0) እንደ አንድ ወይም ከፍተኛ ይነበባል። ሌሎቹ አያያorsች ለ /STROBE2 እና ብርቱካን ለ /DATA2 ቡኒ ናቸው። እኛ እነዚህን አንጠቀምም። ከፈለጉ ስለ /CARD_PRESENT መርሳት ይችላሉ። አንድ ካርድ መኖሩን (ይህ ማለት አንባቢዎ የውሸት መረጃ እንዲልክ ከሚያደርግ የዘፈቀደ ጫጫታ ይልቅ) ከ 17 ገደማ የጭንቅላት ፍሰት ሽክርክሪቶች በኋላ ይህ የውሂብ መስመር ዝቅ ይላል እና እርስዎ የሚያገኙት ውሂብ የካርድ ውሂብ መሆኑን እና ለማረጋገጥ ጥቅም ላይ ይውላል። ቆሻሻ አይደለም። በውሂብ ዥረት ላይ የመነሻ ተልዕኮን ካረጋገጡ ይህንን ግንኙነት መዝለል ይችላሉ። ከዚያ በኋላ ተጨማሪ። ከዚህ በታች እንደሚመለከቱት ፣ ከዳቦ ሰሌዳ ጋር የተገናኘ የቀኝ ማዕዘን ወንድ ራስጌን ተጠቅሜ አንባቢዬን ከዚያ ጋር አገናኘሁት። ከፒንዲ 2 ጋር (አርድዲኖ ላይ ዲጂታል ፒን 2) ፣ /CARD_PRESENT ወደ PIND3 (ለምስል ዓላማዎች) ፣ እና /ዳታ 1 ከፒንዲ 4 ጋር አገናኘሁ /STROBE ን አገናኘሁ። የእርስዎ ፒኖች እንዳይንሳፈፉ በእነዚህ መሰኪያዎች ላይ ዱባዎችን ማንቃትዎን ያረጋግጡ። እኔም ወደ ዳቦ ሰሌዳ ውስጥ የሚስማማበትን መንገድ ስለወደድኩ አርዲኖኖዬን ለባዶ አጥንት AVR አውጥቼዋለሁ።

ደረጃ 3: መግነጢሳዊ ካርድ መሰረታዊ ነገሮች

መግነጢሳዊ ካርድ መሰረታዊ ነገሮች
መግነጢሳዊ ካርድ መሰረታዊ ነገሮች

መግነጢሳዊ ካርድን ለማንበብ ማድረግ ያለብዎት ዋና ተግባራት - 1. ካርዱ ሲንሸራተት ማወቅ 2. የውሂብ ዥረት ያንብቡ 3. ካርዱ ሲሄድ ይወቁ 4. ውሂቡን ያስኬዱ 5. መረጃውን ያሳዩ ውሂብ በመጀመሪያ ፣ የራስዎን ኮድ መጻፍ ሲጀምሩ ማወቅ ያለብዎትን አንዳንድ መግነጢሳዊ ካርድ መሰረታዊ ነገሮችን ላስተዋውቅዎታለሁ።

መግነጢሳዊ ካርድ መመዘኛዎች

በሚከተሉት ሰነዶች ውስጥ መግነጢሳዊ ካርዶች በ ISO ደረጃቸውን የጠበቁ ናቸው። 5 የትራክ ቦታ 3 7811-6 መግነጢሳዊ ጭረት - ከፍተኛ ግትርነት 7813 የፋይናንስ ግብይት ካርዶች እርስዎ እንደሚመለከቱት ፣ የፋይናንስ ካርዶች በተለየ ሰነድ ውስጥ የተገለጹ እና ብዙውን ጊዜ ፣ ከግሮሰሪ ካርድዎ ወይም ከዓለም አቀፍ የጥሪ ካርድዎ ይልቅ የተለያዩ ቅርፀቶች አሏቸው። ለእነዚህ ልዩነቶች ፕሮግራም ማውጣት ይኖርብዎታል። እኔ በቀላሉ የክሬዲት ካርድ እና የኢንሹራንስ ካርድ ነበረኝ ፣ ስለዚህ ለእነዚህ ዓይነቶች ፕሮግራም አወጣሁ (ሁለቱም ቅርጸት ቢ የሚሆነውን)።

የካርድ ቅርጸቶች

ለማግኔት ካርዶች በርካታ የተለያዩ ቅርፀቶች አሉ። ቅርጸት ሀ እና ለ የተለመዱ ናቸው ፣ ቢ በጣም ያየሁት ፣ እና በዚህ ኮድ ውስጥ የሚደገፍ ነው። ቅርጸቶች ሐ እስከ ኤም በ ISO ተይዘዋል ፣ አምናለሁ ፣ N በኩል እያለ ?? ለተቋማዊ ብጁ አጠቃቀም የተያዙ ናቸው። ትራክ 1 ለፋይናንስ ካርዶች የመጀመሪያው ትራክ በ 210 ቢት በአንድ ኢንች ተመዝግቦ ከላይ ከካርዱ የመጀመሪያው 0.110 ነው። ውሂቡ እንደ ገጸ-ባህሪ 7-ቢት እንደ ‹የካርድ ውሂብ› በኮድ ተመዝግቧል። ያ 6-ቢት ለ ገጸ -ባህሪው እና ትንሽ ለእኩልነት። በትራኩ ላይ ~ 79 የቁጥር ፊደላት አሉ 1. አካላዊ ቅደም ተከተሉ ወደ ኋላ ነው። ያም ማለት ውሂብ ግን በካርዱ ላይ ወደ ኋላ የተፃፈ ነው (እና ስለዚህ ፣ በእርስዎ firmware ይነበባል) እንደ። እኩልነት እንግዳ ነው። የካርድ ውሂብ ቅርጸት እንደዚህ ይመስላል

[SS] [FC] [ተቀዳሚ መለያ #] [FS] [ስም] [FS] [ተጨማሪ ውሂብ] [FS] [ES] [LRC] የት:

ኤስ ኤስ ጀምር የተላከ FC ቅርጸት ኮድ FS የመስክ መለያያ ES መጨረሻ የተላከ LRC የረጅም ጊዜ ቅነሳ ማረጋገጫ ባህሪ አንድ ኤስ ኤስ = '%' ይከታተሉ ፣ FC = ከቅርፀቶቹ አንዱ (ብዙ ጊዜ ቢ ይሆናል) ፣ ኤፍኤስ ብዙውን ጊዜ ‹፣ ES ነው›? እና የኤልአርሲው ገጸ -ባህሪ በተለምዶ ‹<› ቢሆንም በደረጃዎቹ ውስጥ ባይገለጽም። በካርዱ ላይ ወደ ኋላ ከመፃፉ በተጨማሪ ፣ ውሂቡ ያልተለመደ የእኩል መጠን አለው እና ከ ASCII 0x20 ነው። ውሂቡን ስናካሂድ ይህንን እናስተናግደዋለን። ትራክ 2 ይከታተሉ ሁለት 0.110 "ስፋት ያለው እና ከካርዱ አናት 0.110 ይጀምራል። የመመዝገቡ ጥግግት በአንድ ኢንች 75 ቢት ነው። ውሂቡ በአንድ ገጸ-ባህሪ 5-ቢት ሲሆን ወደ 40 የቁጥር ምልክቶች ብቻ ያካተተ ነው። በዚህ ትራክ ላይ ያሉ ፊደሎች። የካርድ ውሂብ ቅርጸት ይህንን መዋቅር መከተል አለበት

[ኤስ.ኤስ.] [ተቀዳሚ መለያ #] [ኤፍኤስ] [ተጨማሪ ውሂብ | ምክንያታዊ መረጃ] [ES] [LRC]

ለትራክ ሁለት ኤስኤስ ሴሚኮሎን ነው - ';' እና FS ነው '=' በዚህ ቅዱስ ዕውቀት በቀበቶዎ ስር ፣ ከላይ የተዘረዘሩትን የአሠራር ሂደቶች ተግባራዊ ለማድረግ ኮድ ወደሚቀጥለው ደረጃዎች ይቀጥሉ።

ደረጃ 4: አንድ ካርድ ሲንሸራተት ይወቁ

ካርድ ሲንሸራተት ይወቁ
ካርድ ሲንሸራተት ይወቁ

1. አንድ ካርድ በመደበኛነት ሲንሸራተት ይወቁ ፣ አንድ ሰው /CARD_PRESENT ፒን ወደ ታች መውረዱን ለማየት ይፈትሻል። እንደ እድል ሆኖ ፣ ይህ በእርግጥ አስፈላጊ አይደለም። የሚሰራ ካርድን በኋላ እንፈትሻለን። በአማራጭ ፣ ስትሮብስ በፒን ላይ ሲለጠፍ ለማየት የስትሮቢን ፒንዎን ማንበብ ይችላሉ ፣ ሆኖም ፣ ይህ ብዙ ዜሮዎችን ያስቆጥርዎታል። መረጃ ሊቀርብ መሆኑን አንባቢው ከ60-70 የሚሆኑ ዜሮዎችን ይልካል። ሆኖም ፣ ቢት መቅዳት መቼ እንደሚጀመር ለማወቅ የሁለትዮሽ ውሂብ ተፈጥሮን እንጠቀማለን። ለትራክ አንድ የመጀመሪያ ማስጀመሪያ (SS) የመቶኛ ምልክት (%) ነው። የሁለትዮሽ እሴቱ 0010 0101 ነው ማለት ነው (ማለትም ይነበባል) እንደ 1010 001 (7-ቢት ነው ስለዚህ 8 ኛው ቢት እንዳይተላለፍ)። አሁን ፣ አስተዋይ አንባቢ ምንም እንኳን ውሂቡ ወደ ኋላ ቢሆንም ፣ የሁለትዮሽ ASCII እሴት ጋር እንደማይዛመድ ያስተውላል። ይህ የሆነው ከሄክስ 0x20 ቅናሽ ስላለው ነው። % ምልክት 0x25 እና 0100 0101 0x05 ነው። የካርድ ውሂብ ከዋጋ 0x20 ተቀንሷል። በከፍተኛው ንብ ውስጥ እዚያ የሚንጠለጠለው እንግዳ እኩልነት ትንሽ ነው። በእሴቱ ውስጥ ያልተለመደ የ “1” ዎች ቁጥር እንዲኖር እዚያ የተቀመጠ ነው። ስለዚህ ልክ የሆነ ካርድ ሁል ጊዜ በዚህ ጅምር ላኪ እንደሚጀምር እናውቃለን ፣ እና የእኩልነት ቢት 1 ስለሆነ ፣ ከዚያ በመረጃ ፒን ላይ የመጀመሪያውን HIGH to LOW ሽግግር ስናገኝ ፣ ከዚያ እኛ አሁን መቀበል እንደጀመርን እናውቃለን። ተላኪን ከካርድ ይጀምሩ። አሁን ፣ ይህ ሁል ጊዜ እውነት አይሆንም ፣ እና የማይረባ እቅድ በተጨማሪ /LARD_PRESENT ካርዱን በተጨማሪ መፈለግ /አለመኖሩን ማረጋገጥ ይሆናል። የኤስኤስስን ጅምር ለመለየት ቀላሉ መንገድ ፣ በ /STROBE መውደቅ ጠርዝ ላይ የተቀሰቀሰ የውጭ መቋረጥ መፍጠር ነው። ከመውደቁ ጠርዝ በፊት ውሂቡ ለእኛ 1.0 ነው ፣ ስለዚህ የወደቀውን ጠርዝ ናሙና ሲያደርጉ ፣ ከዚያ /DATA1 ፒን ማንበብ እና ትክክለኛ እሴት ማግኘት እንደሚችሉ ያውቃሉ። በመውደቅ ጠርዝ ላይ የተቀሰቀሰውን የውጭ መቋረጥዎን ለመፍጠር ይህ ኮድ እዚህ አለ።

voidInitInterrupt (ባዶ) {// Setup interrupt BSET (EIMSK, INT0); // የውጭ ማቋረጫ ጭምብል BSET (EICRA ፣ ISC01); // የወደቀ ጠርዝ BCLR (EICRA ፣ ISC00); // የወደቀ ጠርዝ BSET (SREG ፣ 7); // I-bit በ SREG}

በሁሉም ፕሮግራሞቼ ውስጥ ባካትተው የእኔ common.h ውስጥ ፣ የ BSET እና BCLR ትርጓሜዎች ሊገኙ ይችላሉ። ቢት እንዴት ማቀናበር እንደሚቻል ጥያቄዎች ካሉዎት ያንን ፋይል ይመልከቱ። አሁን ፣ ማቋረጫው ሲቀሰቀስ ፣ /DATA1 ን (እንደ CARD_DATA በተገለጸው ኮዴ ውስጥ) ናሙና እና በአጠቃላይ ዓላማ IO ምዝገባ ውስጥ ትንሽ ማዘጋጀት እንፈልጋለን። እኛ በ 7 ኛው ቢት ላይ ከሆንን ፣ በአለምአቀፍ ቋትችን ውስጥ እንደ ገጸ -ባህሪይ ከመዝገቡ ያስቀምጡ። ፈጣን ፈጣን መዳረሻ ስለሆነ የ GPIOR0 መዝገብ እጠቀማለሁ። የውሸት ኮድ እንደዚህ ያለ ነገር ነው

ባለ 16-ቢት ሰዓት ቆጣሪን ያቁሙ ሰዓት ቆጣሪን ያፅዱ DATA LOW Set BIT = 1 በ REGISTER ዲክሪፕት ቢት አዘጋጅ ባንዲራ ስለዚህ ሌላ 0 ን እንዳይዘልልን ዳታ በ REGISTER ውስጥ ቢት 0 = 0 በ REGISTER ቅነሳ ቢት ቢት ቢት ወደ ቋት ያክሉ የእድገት መረጃ ጠቋሚ ቢት ዳግም አስጀምር

ከመጨመር ይልቅ ለምን ለምን እንደሚቀንስ እራስዎን ከጠየቁ ፣ ውሂቡ ወደ ኋላ መሆኑን ያስታውሱ ፣ ስለዚህ ከ LSB ወደ MSB ስናገኝ ቁራጮቹን ከመቅዳት ይልቅ እኛ ከ MSB ወደ LSB እናስቀምጣቸዋለን ፣ ስለዚህ ቁርጥራጮቹን መቀልበስ የለብንም። በኋላ ላይ ውሂቡን ሲያካሂዱ። በእርግጥ ከፈለጉ ፣ እዚህ 0x20 ሄክሳ ማከል ይችላሉ ፣ ግን በእነዚህ ስቶብስ ላይ 5us ያህል ስለሆነ በዚህ የማቋረጫ አገልግሎት አሠራር ውስጥ ሂደቱን በትንሹ እጠብቃለሁ።

ISR (INT0_vect) {StopTimer (); ClearTimer (); ከሆነ (! BCHK (PIND ፣ CARD_DATA1)) // ተገላቢጦሽ ዝቅተኛ = 1 {BSET (GPIOR0 ፣ ቢት); --ቢት; bDataPresent = 1; } ሌላ ከሆነ (bDataPresent) {BCLR (GPIOR0 ፣ ቢት) ፤ --ቢት; } ከሆነ (ቢት <0) {buff [idx] = (char) GPIOR0; ++ idx; ቢት = 6; } StartTimer ();} የጊዜ ንግድ ምን ማለት እንደሆነ እያሰቡ ከሆነ ፣ ያ ካርዱ አንባቢውን መቼ እንደለቀቀ በሚወስነው ደረጃ ውስጥ ተሸፍኗል።

ደረጃ 5 የውሂብ ዥረት ያንብቡ

የውሂብ ዥረት ያንብቡ

ደህና ፣ እኛ ለውድቀት ጠርዝ ውጫዊ መቋረጣችን የአቋራጭ አገልግሎት የዕለት ተዕለት አካል ስለሆነ ውሂቡን እንዴት እንደሚያነቡ አስቀድሜ አሳይቻለሁ። በአማራጭ ዘዴ በአይኤስአር ውስጥ ባንዲራ ማዘጋጀት ፣ እና በዋናው ሉፕ ውስጥ ባንዲራውን መርጠው መረጃውን በዚያ መንገድ ማንበብ ነው ፣ ግን እኔ ያቀረብኩበት መንገድ ንፁህ ነው ብዬ አምናለሁ። የራስዎ ዳኛ ይሁኑ እና የራስዎን ይፃፉ ሆኖም ግን የእርስዎ MCU ቢፈቅድም ይህ ማለት ካርዱ ኤልቪስን ሲጎትት እና ሕንፃውን ለቆ ሲወጣ እንዴት እንደሚለዩ ለማወቅ እንቀጥል።

ደረጃ 6 - ከአንባቢው የሚወጣውን ካርድ ይወቁ

ከአንባቢው የሚወጣውን ካርድ ይወቁ
ከአንባቢው የሚወጣውን ካርድ ይወቁ

ካርድ ሲጠፋ ይወቁ

በመደበኛነት ፣ አንድ /HARD_PRESENT ፒን እንደገና HIGH /ሄዶ እንደሆነ ለማየት ናሙና ያወጣል ፣ ነገር ግን ሌላ የ I /O ወደብ ለመውሰድ ምንም ዓይነት የስታይንኪን / /CARD_PRESENT አያስፈልገንም። እነዚያ ሰዓት ቆጣሪዎች የሚገቡበት ነው። ማቋረጫው በተጠራ ቁጥር /STROBE ላይ የወደቀ ጠርዝ ስላገኘን ሰዓት ቆጣሪን እናቆማለን ፣ የሰዓት ቆጣሪውን እሴት እናጸዳለን እና ማንበብ እንጀምራለን። አንብበን ስንጨርስ ሰዓት ቆጣሪውን እንደገና እንጀምራለን። የማስታወክ ማቅለሽለሽ ፣ ወይም ሰዓት ቆጣሪው የተወሰነ እሴት እስኪደርስ ድረስ ይድገሙት። ያ ማለት የመጨረሻው ማቋረጫ ተጠርቷል እና ተጨማሪ ውሂብ አልገባም ፣ ስለሆነም ያ ነው ብለን እንገምታለን እና የሰበሰብነውን ውሂብ ማቀናበር እንጀምራለን። ለሰዓት ቆጣሪዎች ፣ እኛ TIMER1 ን ፣ ማለትም 16-ቢት ቆጣሪውን እንጠቀማለን። እኔ ወደ እኔ AVR ከውጭ 16 Mhz አስተጋባን እጠቀማለሁ። አርዱዲኖን የሚጠቀሙ ከሆነ ምናልባት እርስዎም እርስዎ ነዎት። ስለዚህ ፣ እኔ የ 1024 ቅድመ -ተቆጣጣሪ እሴት መርጫለሁ ፣ ይህም ማለት እያንዳንዱ (16 ፣ 000 ፣ 000 /1024) ጊዜ ቆጣሪው ይጨምራል። ያም ማለት በሰከንድ 15 ፣ 625 ጊዜ ‹ምልክት ያደርጋል› ማለት ነው። /CARD_PRESENT ካርዱ አንባቢው ከመጨረሻው የውሂብ ቢት በኋላ 150ms ገደማ እንደሄደ የሚያመለክት ከፍ ይላል። ይህንን በማወቅ ፣ ስለ እያንዳንዱ 1/4 ሰከንድ ለመመርመር ወሰንኩ። ያ እንደዚህ ያለ ነገር ይመስላል -

(((F_CPU) / PRESCALER) / 4) ይህም ወደ 3900 አካባቢ ይሆናል። ስለዚህ ፣ የሰዓት ቆጣሪ TCNT1 3900 ሲደርስ ፣ ከዚያ 300ms እንደነበረ አውቃለሁ እናም ካርዱ አንባቢውን ትቶ በደህና መደምደም እችላለሁ። ቀላል

#መግለፅ PRESCALER 1024#CHECK_TIME ((F_CPU / PRESCALER) / 4) // 250 ms#ይግለጹ StartTimer () BSET (TCCR1B ፣ CS10) ፣ BSET (TCCR1B ፣ CS12) // 1024 prescaler#definition StopTimer () BCLR (TCCR1) ፣ CS10) ፣ BCLR (TCCR1B ፣ CS12)#ጥራት ClearTimer () (TCNT1 = 0) በእያንዳንዱ ማቋረጫ ላይ ሰዓት ቆጣሪው በሚጀመርበት ፣ በሚቆምበት እና በሚጸዳበት በ ISR ውስጥ ተመልክተዋል። አሁን ፣ በዋናው ሉፕ ውስጥ የሰዓት ቆጣሪ ቆጣሪው የታለመውን እሴታችን ላይ ደርሶ እንደሆነ ለማየት እንፈትሻለን ፣ እና ከሆነ የውሂብ ሂደቱን ይጀምሩ

ለ (;;) {ከሆነ (TCNT1> = CHECK_TIME) {

StopTimer (); ClearTimer (); የሂደት ውሂብ (); ReadData (); idx = 0; ቢት = 6; bDataPresent = 0; memset (& buff ፣ 0 ፣ MAX_BUFF_SZ1); }} አሁን ውሂቡን ማስኬድ ደህና ነው

ኮድ የተቀረፀው በ

ደረጃ 7 - ውሂቡን ያሂዱ

ውሂቡን ያስኬዱ
ውሂቡን ያስኬዱ

ውሂቡን ያስኬዱ

የሂደቱ ሂደት የሚከተሉትን ያጠቃልላል

  • የሚሰራ ኤስ.ኤስ
  • እኩልነትን በመፈተሽ ላይ
  • ወደ ASCII መለወጥ
  • ልክ የሆነ ES ን በመፈተሽ ላይ
  • LRC ን በመፈተሽ ላይ

እዚህ ፣ ያንን ትንሽ ወደ ዜሮ ስላቀናበርኩ እኩልነትን በመፈተሽ አልጨነቅም። እኔ ለዚህ ትንሽ ትምህርት LRC ን አልሰላም። ያ ሙሉ በሙሉ የተገነዘበ firmware ሊፈልግ ይችላል። ከዚህ በላይ የተጠቀሱትን እርምጃዎች (ከዚህ ቀደም የተጠቀሰውን ሳይጨምር) ውሂቡን ለማስኬድ ኮዱ እዚህ አለ። ከታች በምስሉ ውስጥ ያግኙት። እሱ አስተያየት የተሰጠው እና እራሱን የሚያብራራ ነው። በእኩልነት እና በ ASCII ላይ ልዩ ማስታወሻ - እኔ በቀላሉ የእኩልነት ቢት (7 ኛ ቢት… ማለትም ከኋላው 6 ዜሮ ያለው 1) እና ከ “ካርድ ውሂብ” ለመለወጥ 0x20 ን ወደ እሴቱ ማከል አለብዎት። ስለሱ ነው።

ደረጃ 8 - ውሂቡን ያሳዩ

ውሂቡን ያሳዩ
ውሂቡን ያሳዩ
ውሂቡን ያሳዩ
ውሂቡን ያሳዩ

ውሂቡን ያሳዩ

ማሳያው በ RS232 ወይም በዩኤስቢ በኩል ከኤቪአር ጋር ለመገናኘት በተለይ ወደጻፍኩት ተርሚናል ፕሮግራም ይሄዳል። ፕሮግራሙ AVR ተርሚናል ተብሎ ይጠራል። የ ReadData () ዘዴ በጣም አስቀያሚ ነው እና እኔ ካመጣሁት የበለጠ ንጹህ መፍትሄ እንዲያገኙ ይበረታታሉ። በ AVR ተርሚናል ውስጥ የተግባሩ ውጤትም አለ። ውጤቱም በመጀመሪያ የጤና መድን ካርድ ሲሆን ሁለተኛው ደግሞ የቪዛ ካርድ ነው። በስዕሉ በላይኛው ግራ ጥግ ላይ ያለውን ጠቅ ያድርጉ እና የተሻለ ለማየት የመጀመሪያውን ወይም ትልቅ ምስል ይምረጡ።

ደረጃ 9 ኮድ ማውረድ እና መጠቅለል

በዚህ መመሪያ ውስጥ ስለ መግነጢሳዊ ካርድ አንባቢዎች አንዳንድ መሰረታዊ ነገሮችን ተወያየሁ እና ከማግኔት ካርዶች መረጃን በትክክለኛው አቅጣጫ እንዲጀምሩ ለማድረግ አንዳንድ ኮድ አሳይቻለሁ። እንደ 2 ኛ ትራኩን ማንበብ እና ዲኮዲንግ ፣ ኤልአርአይሲን ማስላት እና በእያንዳንዱ ባይት ላይ ያልተለመደ እኩልነትን ማስላት ያሉ ብዙ ተጨማሪ ሥራዎች አሉ። ሙሉ ምንጭ ኮድ ከዚህ በታች ለማውረድ ይገኛል። በ AVR ስቱዲዮ 4.17 ውስጥ ተፃፈ። ይህንን አስተማሪ እንደወደዱት ተስፋ አደርጋለሁ ፣ እና እንደ ሁልጊዜ ፣ እርስዎ ሊኖሩዎት የሚችሉትን ማንኛውንም አስተያየት ወይም ጥቆማ በጉጉት እጠብቃለሁ። መልካም ኮድ እና AVR’ing!

የሚመከር: