Cov txheej txheem:

AVR Assembler Tutorial 7: 12 Cov Kauj Ruam
AVR Assembler Tutorial 7: 12 Cov Kauj Ruam

Video: AVR Assembler Tutorial 7: 12 Cov Kauj Ruam

Video: AVR Assembler Tutorial 7: 12 Cov Kauj Ruam
Video: AVR Ассемблер. Урок 1. Вводный. AVR Assembler. Lesson 1. Promo. 2024, Lub Xya hli ntuj
Anonim
AVR Assembler Tutorial 7
AVR Assembler Tutorial 7

Zoo siab Tutorial 7!

Niaj hnub no peb yuav xub xub qhia yuav ua li cas txhawm rau rub tus yuam sij, thiab tom qab ntawd qhia seb yuav siv Analog cov chaw nres nkoj sib txuas lus li cas txhawm rau sib tham nrog cov keypad. Peb yuav ua qhov no siv kev cuam tshuam thiab ib leeg xaim li cov tswv yim. Peb yuav xaim cov keyboard kom txhua tus nias lub zog tshwj xeeb rau cov lus sib piv uas yuav tso cai rau peb kom paub qhov txawv ntawm qhov hluav taws xob uas tus yuam sij tau raug nias. Tom qab ntawd peb yuav tso tus lej nias rau peb tus kws tshuaj ntsuam sau npe los qhia tias txhua yam tau tshwm sim zoo li nws yuav tsum muaj. Muaj cov lej ntawm qhov tsis txaus ntseeg uas koj tuaj yeem ua haujlwm thaum siv Analog rau Digital Converter (ADC) hauv ATmega328p thiab yog li peb yuav ua tej yam hauv ob peb theem ntawm txoj kev sim thiab txiav txim siab yuav ua li cas zam lawv. Peb tseem yuav pom tias yog vim li cas siv cov analog rau digital hloov pauv tsis yog txoj hauv kev zoo tshaj los tswj lub keypad txawm hais tias nws siv tsawg dua qhov chaw nres nkoj ntawm koj lub microcontroller Hauv qhov kev qhia no koj yuav xav tau:

  1. ib tug keypad. Koj tuaj yeem yuav ib lossis koj tuaj yeem ua qhov kuv tau ua thiab khaws ib qho.
  2. 2 tus poj niam lub taub hau rau cov keyboard (yog tias koj tab tom khawb ib qho)
  3. txuas xov hlau
  4. ib daim ntawv qhia zaub mov
  5. 41 Kohm resistors
  6. 1 15 Kohm resistor
  7. 1 3.3 Kohm resistor
  8. 1 180 ohm resistor
  9. 1680 ohm resistor
  10. digital multimeter
  11. koj tus kws tshuaj ntsuam los ntawm Tutorial 5

Tej zaum koj yuav xav hla thawj ob peb kauj ruam yog tias koj twb muaj tus lej keyboard thiab tsis tas yuav khawb ib qho.

Nov yog qhov txuas mus rau kev sau tiav ntawm kuv cov AVR kev sib sau ua ke qhia:

Kauj Ruam 1: Scavenge Keypad 1

Scavenge ib Keypad 1
Scavenge ib Keypad 1
Scavenge ib Keypad 1
Scavenge ib Keypad 1
Scavenge ib Keypad 1
Scavenge ib Keypad 1
Scavenge ib Keypad 1
Scavenge ib Keypad 1

Ntev dhau los, thaum txawm tias koj niam tais yawm txiv tsuas yog menyuam yaus, tib neeg siv los siv cov cuab yeej zoo li no, uas muaj cov hlua ntev txuas rau hauv phab ntsa, sib tham nrog ib leeg. Lawv raug hu ua "xov tooj" thiab feem ntau yog cov khoom yas uas pheej yig uas ua rau muaj suab nrov thaum ib tus neeg hu koj (tsis yog tias "Justin Bieber" lub suab nrov ntawm niaj hnub no tsis cuam tshuam ib yam nkaus). Txawm li cas los xij, cov cuab yeej no tau muaj cov keypads ntawm lawv uas yooj yim heev siv tau thiab yog li yooj yim rau scavenge thiab lawv muaj 2 tus yuam sij ntxiv rau lawv ("rov ua dua" thiab "flash") los ntawm cov keypads koj tuaj yeem yuav uas koj yuav xav tau rov ua dua raws li "tus yuam sij xub", "cov ntawv qhia zaub mov", lossis lwm yam. Ua ntej tshaj plaws siv lub xov tooj (Kuv siv GE ib qho raws li qhia hauv cov duab) thiab muab nws cais kom pom qhov thaiv. Tom qab ntawd nqa ib daim txiag zeb thiab ntsais tawm lub pob yas me me uas tau tuav lub keypad thiab tshem cov keyboard.

Kauj Ruam 2: Scavenge Keypad 2

Scavenge ib Keypad 2
Scavenge ib Keypad 2
Scavenge ib Keypad 2
Scavenge ib Keypad 2
Scavenge ib Keypad 2
Scavenge ib Keypad 2

Tam sim no siv lub PVC pom thiab txiav cov yas los ntawm ib puag ncig lub qhov rooj thiab tom qab ntawd txiav ib ncig ntawm ntug kom tau txais qhov tob txoj cai tawm ntawm cov keyboard nyias.

Tom qab ntawd muab lub keypad rov qab siv me me pegs uas nyob tom qab koj txiav lub hau tawm ntawm lawv hauv cov kauj ruam kawg thiab siv cov hlau txuas kom yooj yim poke cov hlau kub rau hauv txhua lub qhov peg uas yuav yaj cov yas thiab nthuav tawm nws hla hauv qab ntawm cov keypad tsim tshiab "pob qhov rooj" uas yuav tuav cov keyboard hauv qhov chaw zoo li ua ntej.

Kuv nyiam scavenge peb tus neeg hais lus thiab tej zaum lwm yam zoo li hloov pauv thiab dab tsi-tsis yog ntawm lub rooj tsavxwm. Txawm li cas los xij, lub sijhawm no kuv yuav tsis cuam tshuam cov hloov pauv thiab cov khoom vim tias peb muaj lwm lub hom phiaj tam sim no. Tsis tas li, muaj TA31002 linear IC nyob ntawd uas yog lub xov tooj nrov. Cov ntawv teev npe tau yooj yim pom thiab rub tawm online muab cov pinout thiab cov yam ntxwv. Yog li kuv yuav tso nws soldered rau lub rooj tsavxwm rau tam sim no thiab tom qab ntawd ua si nrog nws tom qab. Kuv xav nqes nws mus rau oscilloscope thiab pom cov cim txias dab tsi kuv tuaj yeem tawm ntawm nws. Tej zaum txawm tias ua lub qhov rooj tawm ntawm nws. Leej twg paub.

Xijpeem ib zaug koj ua tiav rhuav tshem lub xov tooj thiab khaws cov khoom peb yuav ua tiav ua peb cov keyboard.

Kauj Ruam 3: Scavenge Keypad 3

Scavenge tus Keypad 3
Scavenge tus Keypad 3
Scavenge tus Keypad 3
Scavenge tus Keypad 3
Scavenge tus Keypad 3
Scavenge tus Keypad 3

Siv tus pas ntsuas kub tshem tawm thiab tshem cov hlua hlua los ntawm hauv qab ntawm cov keyboard kom ntseeg tau tias lub qhov nyob hauv lub rooj sib tham ntawm lub rooj sib hais tau meej thiab tom qab ntawd txuas ob tus poj niam lub taub hau rau hauv lub rooj tsavxwm qhov twg yog qhov. Koj yuav zaum yuav tsum tau kaw koj lub taub hau kom lawv yog 4-tus pin headers.

Tam sim no tias lub taub hau tau txuas nrog koj tuaj yeem xaim nws mus rau lub khob cij, siv lub multimeter, thiab ntsuas cov yuam sij los ntawm kev ua lub multimeter hla hla tus pin tsis raug thiab ntsuas qhov tsis kam. Qhov no yuav tso cai rau koj los qhia tawm cov yuam sij. Nws nyuaj rau pom yuav ua li cas cov yuam sij tau xaim mus rau qhov tshwm sim los ntawm kev saib hauv Circuit Court tab sis yog tias koj siv lub multimeter koj tuaj yeem ntsaws nws rau hauv ob lub pins thiab tom qab ntawd nias lub pob kom txog thaum koj pom tus lej ntawm lub vijtsam es tsis txhob qhib lub Circuit Court. Qhov no yuav yog tus pinout rau tus yuam sij ntawd.

Qhia tag nrho cov yuam sij rau cov pins tso tawm hauv txoj kev no.

Kauj Ruam 4: Hlau Keypad

Hlau Keypad
Hlau Keypad
Hlau Keypad
Hlau Keypad

Tam sim no ua raws daim duab kab hluav taws xob thiab xaim lub xov tooj ntawm tes mus rau koj lub khob cij.

Qhov no yuav ua haujlwm li cas peb yuav tso 5V rau sab laug thiab sab xis mus rau GND. Thawj tus pin ntawm sab xis hauv daim duab nkag mus rau thawj ntawm peb cov pins sib piv ntawm Atmega328p microcontroller. Thaum tsis muaj cov nyees khawm nias lub teeb liab yuav yog 0V, thiab thaum txhua qhov sib txawv ntawm cov nyees khawm tau nyem qhov nkag mus rau qhov chaw nres nkoj sib xws yuav nyob nruab nrab ntawm 0V thiab 5V nrog tus nqi sib txawv nyob ntawm seb tus yuam sij tau nias. Peb tau xaiv qhov ntsuas tus nqi kom txhua txoj hauv kev yuav muaj qhov tsis sib xws uas txawv ntawm qhov so. Qhov chaw nres nkoj sib piv ntawm lub microcontroller siv lub teeb liab analog thiab faib nws mus rau 1024 qhov sib txawv ntawm 0V thiab 5V. Qhov no txhais tau tias txhua channel muaj qhov dav 5V/1024 = 0.005 V/channel = 5 mV/channel. Yog li qhov chaw nres nkoj sib piv tuaj yeem paub qhov txawv qhov hluav taws xob ntev li ntev tau qhov sib txawv ntau dua 5 mV. Hauv peb qhov xwm txheej peb tau xaiv tus nqi tiv thaiv kom ob qho kev nias siab yuav xa lub teeb liab hluav taws xob uas txawv los ntawm ntau dua qhov no yog li lub microcontroller yuav tsum yooj yim tuaj yeem txiav txim siab tus yuam sij twg. Qhov teeb meem loj yog tias tag nrho cov kab ke muaj suab nrov heev yog li peb yuav tsum xaiv ntau qhov voltages los qhia rau txhua lub pob nyem - tab sis peb yuav nkag mus rau qhov ntawd me ntsis tom qab.

Daim ntawv ceeb toom tias peb muaj peev xwm tswj tau 14 tus lej khawm siv tsuas yog ib kab nkaus xwb rau tus tswj. Qhov ntawd yog ib qho txiaj ntsig zoo ntawm cov tswv yim analog.

Tam sim no peb thawj zaug ntawm kev tswj hwm cov keypad yuav tsum muaj qhov nias ua rau muaj kev cuam tshuam, cuam tshuam subroutine yuav nyeem qhov chaw nres nkoj sib piv thiab txiav txim siab tus yuam sij tau raug nias, thiab tom qab ntawd nws yuav tso tawm tus lej ntawd rau peb cov npe tshuaj ntsuam xyuas subroutine uas yuav tso saib tus nqi tseem ceeb hauv binary ntawm peb 8 LEDs uas peb teeb tsa hauv Tutorial 5.

Kauj Ruam 5: Hlau Keypad rau Koj Tus Kws Tshuaj Ntsuam Xyuas

Hlau Keypad rau Koj Tus Ntsuam Xyuas
Hlau Keypad rau Koj Tus Ntsuam Xyuas
Hlau Keypad rau Koj Tus Ntsuam Xyuas
Hlau Keypad rau Koj Tus Ntsuam Xyuas

Cov duab qhia pom tias peb xav xaim cov keyboard rau lub microcontroller li cas peb thiaj tuaj yeem pom qhov tso tawm ntawm peb lub tshuab tshuaj ntsuam. Qhov tseem ceeb peb tsuas yog xaim cov zis los ntawm cov keyboard mus rau PortC tus pin 0, uas tseem hu ua ADC0 ntawm ATmega328P.

Txawm li cas los xij, muaj ob peb yam ntxiv. Peb tseem yuav xaim lub pob rau PD2. I.e. nqa xov hlau los ntawm koj 5V txoj kev tsheb nqaj hlau mus rau ntawm lub pob thiab los ntawm lwm sab ntawm lub pob mus rau PD2, thiab kawg, peb xav kom txuas tus pin AREF los ntawm peb txoj kab tsheb 5V thiab hloov nws tawm. Peb tuaj yeem tso lub 0.1 microfarad decoupling capacitor yog tias peb xav tau. Qhov no yog cov capacitor ceramic nrog 104 sau rau ntawm nws. Thawj ob tus lej yog tus lej thiab tus lej kawg yog lub zog ntawm 10 peb muab nws suav los ntawm kev tau txais cov lus teb hauv picofarads (pico txhais tau tias 10^-12), Yog li 104 txhais tau tias 10 x 10^4 picofarads, uas yog tib yam li 100 nanofarads (nano txhais tau tias 10^-9), uas zoo ib yam li 0.1 microfarads (micro txhais tau tias 10^-6). Xijpeem, txhua yam no ua yog stablize tus pin AREF thaum peb tuaj yeem siv nws ua peb tus pin siv.

Peb kuj xav tau 1 Mohm resistor ntawm PD2 thiab hauv av. Peb tab tom yuav teeb tsa PD2 ua tus pin tso tawm ntawm 0V thiab peb yuav ua rau pom qhov zoo ntawm tus pin ntawd. Peb xav kom ntug ploj tam sim ntawd thaum peb tso lub pob kom peb yuav ntxig qhov "rub cia" tus tiv thaiv.

Qhov laj thawj uas peb xav tau lub pob yog vim peb xav ua kom peb lub Analog-rau-Digital hloov pauv ntawm tus pin INT0 ntawm lub nti, uas tseem yog PD2. Thaum kawg peb xav tau cov keypress rau ob qho ua rau ADC thiab tseem muab cov tswv yim los hloov pauv yam tsis muaj khawm cais, tab sis vim yog txoj hauv kev lub sijhawm ua haujlwm peb yuav pib los ntawm kev muaj khawm sib cais los ua rau ADC thiab ib zaug peb hlau tag nrho cov kab tawm thiab ntseeg siab tias txhua yam ua haujlwm tau zoo, tom qab ntawd peb yuav daws cov suab nrov thiab teeb meem lub sijhawm uas tuaj nrog ua los ntawm tib lub khawm nias uas peb xav nyeem.

Yog li, tam sim no, txoj hauv kev nws ua haujlwm yog peb yuav tuav tus yuam sij, tom qab ntawd nyem lub pob kom ua rau ADC, thiab tom qab ntawd tso mus thiab cia siab tias tus lej binary ntawm lub pob peb thawb yuav tshwm rau ntawm tus kws tshuaj ntsuam.

Yog li cia peb sau qee cov cai uas yuav ua tiav qhov ntawd.

Kauj Ruam 6: Twg Toggle Hloov Peb Yuav Tsum Teeb?

Toggle Hloov Qhov Twg Peb Yuav Teeb?
Toggle Hloov Qhov Twg Peb Yuav Teeb?

Cia peb xub xav txog yuav ua li cas peb yuav mus rau tus lej no kom tus tswj hwm tuaj yeem nyeem cov lus nkag los ntawm cov keyboard thiab tig nws mus rau tus lej tus lej sib xws rau lub pob uas tau nias. uas yog tsim rau hauv Atmega328p. Peb yuav siv AREF raws li peb qhov ntsuas hluav taws xob thiab peb cov keypad tso tawm yuav txuas nrog PortC0 lossis PC0. Nco ntsoov tias tus lej no tseem hu ua ADC0 rau Analog-rau-Digital Converter 0. Nws yuav yog lub tswv yim zoo rau koj kom nyeem dhau Tshooj 12.4 ntawm kev cuam tshuam rau ATmega328P thiab tseem tshooj 24 ntawm Analog-to-Digital Converter ua ntej peb tau txais pib lossis tsawg kawg muaj cov ntu npaj rau kev siv. Txhawm rau teeb tsa lub microcontroller kom nws paub tias yuav ua dab tsi nrog cov teeb liab analog, thiab yuav cuam tshuam nrog peb li haujlwm li cas, thawj zaug peb yuav tsum teeb tsa ob peb ntawm ntau yam ADC ntsig txog cov khoom me me. Cov no yog qhov tseem ceeb sib npaug rau cov hloov pauv qub ntawm thawj lub khoos phis tawj. Koj yog tig lub qhov hluav taws xob ON lossis OFF, lossis tseem txuas ntxiv rov qab koj yuav ntsaws cov kab hluav taws xob nruab nrab ntawm ib lub qhov hluav taws xob thiab lwm qhov kom cov hluav taws xob mus txog qhov nkhaus hauv txoj kev yuav pom ib lub qhov rooj kaw thiab lwm qhov qhib yuam nws mus rau lwm txoj hauv kev tshawb nrhiav. Circuitry thiab yog li ua qhov haujlwm sib txawv. Thaum coding hauv cov lus sib dhos peb tau nkag mus ze rau cov haujlwm ntawm microcontroller uas yog ib yam ntxim nyiam txog kev ua nws thawj zaug. Nws yog "txhais tes" ntau dua thiab tsawg dua mus rau "tom qab lub ntsej muag" zoo li nws yog. Yog li tsis txhob xav txog teeb tsa cov npe no ua haujlwm nyuaj. Nov yog qhov ua rau cov lus sib dhos nthuav! Peb tau txais kev sib raug zoo ntawm tus kheej nrog kev ua haujlwm sab hauv thiab cov laj thawj ntawm cov nti thiab ua kom nws ua raws nraim qhov peb xav tau - tsis ntau thiab tsis tsawg. Tsis muaj lub sij hawm nkim sij hawm. Yog li no yog cov npe ntawm cov hloov peb xav tau teeb tsa:

  1. Tua lub Power Reduction ADC me ntsis, PRADC, uas yog 0 ntawm PRR rau npe, txij li yog tias qhov me ntsis nyob ntawm nws yuav kaw ADC. Kev sau npe txo hwj chim yog ib txoj hauv kev kaw ntau yam uas siv lub zog thaum koj tsis xav tau. Txij li thaum peb tab tom siv ADC peb xav kom paub tseeb tias nws tsis xiam oob qhab li no. (Saib PRADC ntawm nplooj 46)
  2. Xaiv cov analog input channel los ua ADC0 los ntawm kev tua MUX3… 0 hauv ADC Multiplexer Selection (ADMUX) rau npe (Saib cov lus 24-4 nplooj ntawv 249) cov no twb tau ua tiav lawm yog li peb tsis xav tau tiag tiag los ua qhov no. Txawm li cas los xij, Kuv suav nrog nws txij li yog tias koj ib txwm siv qhov chaw nres nkoj uas tsis yog ADC0 koj yuav xav tau hloov cov hloov pauv no kom haum. Ntau qhov sib txuas ua ke ntawm MUX3, MUX2, MUX1, MUX0 tso cai rau koj siv ib qho ntawm cov chaw nres nkoj sib piv raws li koj cov tswv yim thiab koj tseem tuaj yeem hloov cov no ntawm yoov yog tias koj xav saib ib pawg ntawm cov cim sib txawv sib txawv ntawm ib zaug.
  3. Tua tawm REFS0 thiab REFS1 cov khoom hauv ADMUX sau npe kom peb yuav siv AREF ua peb qhov ntsuas hluav taws xob ntau dua li siv sab hauv (Saib nplooj 248).
  4. Qhib ADLAR me ntsis hauv ADMUX yog li qhov tshwm sim yog "sab laug kho" peb yuav tham txog qhov kev xaiv no hauv cov kauj ruam tom ntej.
  5. Teeb ADC0D ntsis hauv Digital Input Disable Register (DIDR0) kom tua cov tswv yim digital rau PC0. Peb tab tom siv qhov chaw nres nkoj ntawd rau cov tswv yim sib txuas yog li peb yuav ib yam nkaus thiab lov tes taw cov tswv yim digital rau nws.
  6. Teeb ISC0 thiab ISC1 nyob rau Sab Nraud cuam tshuam Kev Tswj Xyuas Npe A (EICRA) los qhia tias peb xav ua rau qhov nce ntawm ntug kev teeb liab mus rau INT0 tus pin (PD2), saib nplooj 71.
  7. Tshem cov khoom INT0 thiab INT1 hauv Sab Nraud cuam tshuam daim npog npe (EIMSK) los qhia tias peb tsis siv cuam tshuam ntawm tus pin no. Yog tias peb yuav pab kom cuam tshuam ntawm tus pin no peb yuav xav tau tus cuam tshuam cuam tshuam ntawm qhov chaw nyob 0x0002 tab sis hloov chaw peb tab tom teeb tsa nws kom lub teeb liab ntawm tus pin no ua rau ADC hloov pauv, qhov ua tiav uas tau ua los ntawm ADC hloov pauv ua tiav cuam tshuam ntawm npe 0x002a. Saib phab 72.
  8. Teeb ADC Pab Tau (ADEN) me ntsis (me ntsis 7) hauv ADC kev tswj hwm thiab xwm txheej sau npe A (ADCSRA) kom pab tau ADC. Saib phab 249.
  9. Peb tuaj yeem pib hloov pauv ib zaug los ntawm kev teeb tsa ADC pib hloov pauv me ntsis (ADSC) txhua lub sijhawm peb xav nyeem cov teeb liab sib xws, txawm li cas los xij, rau tam sim no peb xav kom nws nyeem tau thaum twg los xij leej twg thawb lub pob, yog li ntawd peb yuav pab kom ADC Autotrigger Pab (ADATE) me ntsis hauv ADCSRA rau npe kom qhov ua kom tiav yog ua tiav.
  10. Peb kuj teeb tsa ADPS2..0 khoom (AD Prescalar cov khoom) rau 111 yog li ntawd ADC moos yog CPU moos uas faib los ntawm ib qho ntawm 128.
  11. Peb yuav xaiv lub hauv paus ntawm ADC ua rau PD2 uas tseem hu ua INT0 (Sab Nraud cuam tshuam Thov 0). Peb ua qhov no los ntawm kev hloov pauv ntau yam khoom hauv ADCSRB rau npe (Saib Cov Lus 24-6 ntawm nplooj 251). Peb pom los ntawm lub rooj uas peb xav tau ADTS0 tawm, ADTS1 rau, thiab ADTS2 tawm kom ADC yuav ua rau tus pin ntawd. Nco tseg yog tias peb xav txuas ntxiv ua piv txwv cov chaw nres nkoj sib xws zoo li yog peb tau nyeem qee qhov teeb meem sib txuas tas li (zoo li kev piv txwv suab lossis qee yam) peb yuav teeb tsa qhov no mus rau Kev Ua Haujlwm Dawb. Txoj hauv kev peb tab tom siv teeb tsa teeb tsa ntawm PD2 ua rau ADC nyeem ntawv ntawm qhov chaw nres nkoj zoo sib xws PC0 yam tsis ua rau cuam tshuam. Qhov cuam tshuam yuav los thaum kev hloov pauv tiav.
  12. Pab kom ADC Interrupt Enable (ADIE) me ntsis hauv ADCSRA sau npe kom thaum cov analog rau digital hloov pauv ua tiav nws yuav tsim kev cuam tshuam uas peb tuaj yeem sau tus cuam tshuam cuam tshuam rau thiab muab tso rau.org 0x002A.
  13. Teeb I me ntsis hauv SREG kom pab cuam tshuam.

Kev Ua Haujlwm 1: Nco ntsoov tias koj nyeem cov ntu cuam tshuam hauv cov ntawv teev tseg rau txhua qhov teeb tsa saum toj no kom koj nkag siab tias muaj dab tsi tshwm sim thiab yuav muaj dab tsi tshwm sim yog tias peb hloov lawv mus rau lwm qhov chaw.

Kauj Ruam 7: Sau Tus cuam tshuam cuam tshuam

Hauv cov kauj ruam kawg peb pom tias peb tau teeb tsa nws kom pom qhov nce ntawm qhov pom ntawm PD2 yuav ua rau muaj kev sib piv rau kev hloov pauv digital ntawm PC0 thiab thaum qhov kev hloov pauv no tiav nws yuav cuam tshuam ADC Kev Hloov Hloov Ua Ntej cuam tshuam. Tam sim no peb xav ua qee yam nrog qhov cuam tshuam no. Yog tias koj tshuaj xyuas Rooj 12-6 ntawm nplooj ntawv 65 koj yuav pom daim ntawv teev cov kev cuam tshuam uas cuam tshuam tau. Peb twb tau pom RESET cuam tshuam ntawm chaw nyob 0x0000 thiab Timer/Counter0 Overflow cuam tshuam ntawm chaw nyob 0x0020 hauv Tutorials yav dhau los. Tam sim no peb xav saib ADC cuam tshuam uas peb pom los ntawm lub rooj yog ntawm chaw nyob 0x002A. Yog li thaum pib ntawm peb cov lus sib dhos lus peb yuav xav tau kab uas nyeem:

.org 0x002Arjmp ADC_int

uas yuav dhia mus rau peb cov neeg cuam tshuam cuam tshuam nrog daim ntawv lo ADC_int thaum twg ADC tau ua tiav kev hloov pauv. Yog li peb yuav sau peb cov neeg cuam tshuam cuam tshuam li cas? Txoj hauv kev uas ADC ua haujlwm yog los ntawm kev ua cov lej hauv qab no:

ADC = Vin x 1024 / Vref

Yog li cia peb saib yuav muaj dab tsi tshwm sim yog tias kuv thawb lub "redial" khawm ntawm lub keyboard. Qhov ntawd qhov hluav taws xob ntawm PC0 yuav hloov mus rau qee tus nqi, hais tias 1.52V, thiab txij li Vref nyob ntawm 5V peb yuav muaj:

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

thiab yog li nws yuav tshwm li 311. Yog tias peb xav hloov qhov no rov qab mus rau qhov hluav taws xob peb tsuas yog thim rov qab qhov kev suav. Peb yuav tsis tas yuav ua qhov no txawm li cas los xij vim peb tsis txaus siab rau qhov hluav taws xob tiag tiag hauv qhov sib txawv ntawm lawv. Thaum qhov kev hloov pauv tiav, qhov txiaj ntsig tau khaws cia hauv 10-ntsis tus lej tso rau hauv ADCH thiab ADCL cov npe thiab peb tau ua rau nws "sab laug kho" uas txhais tau tias 10-khoom pib ntawm me ntsis 7 ntawm ADCH thiab nqis mus rau me ntsis 6 ntawm ADCL (muaj 16 cov khoom tag nrho hauv ob daim ntawv sau npe no thiab peb tsuas yog siv 10 ntawm lawv, piv txwv li 1024 raws). Peb tuaj yeem muaj qhov tshwm sim "kho kom raug" yog tias peb xav tau los ntawm kev tshem tawm ADLAR me ntsis hauv ADMUX rau npe. tej zaum tsuas yog suab nrov xwb yog li peb yuav paub qhov txawv txav siv tsuas yog tus lej 8 tus lej saum toj no, hauv lwm lo lus, peb tsuas yog yuav tsum tau saib ntawm ADCH txhawm rau txheeb xyuas seb lub pob twg tau nias. sau npe, hloov tus lej ntawd mus rau tus lej tseem ceeb tus lej, thiab tom qab ntawd xa tus nqi ntawd mus rau peb tus kws tshuaj ntsuam tso npe kom peb tuaj yeem txheeb xyuas qhov thawb "9" hais, yuav ua rau LED sib xws rau "00001001" kom pom kev. Ua ntej peb mus qhov ntawd nyob deb txawm tias peb yuav tsum xub pom dab tsi tshwm sim hauv ADCH thaum peb thawb ntau lub khawm. Yog li cia peb sau yooj yim cuam tshuam tus neeg tuav haujlwm uas tsuas yog xa cov ntsiab lus ntawm ADCH mus rau lub ntsuas tshuaj ntsuam. Yog li nov yog yam peb xav tau:

ADC_int: lds analyzer, ADCH; thauj tus nqi ntawm ADCH rau hauv peb cov analyzersbi EIFR, 0; tshem tawm tus chij cuam tshuam sab nraud kom nws tau npaj rov mus dua

Txog tam sim no, koj yuav tsum muaj peev xwm tsuas yog theej cov cai los ntawm peb tus kws tshuaj ntsuam hauv kev qhia 5 thiab ntxiv qhov cuam tshuam no thiab cov kev hloov pauv thiab khiav nws. Qhov 2: Sau cov cai thiab khiav nws. Pom tias koj tau txais ADCH tso rau ntawm koj lub ntsuas tshuaj ntsuam. Sim thawb tib lub nias ntau zaus. Koj puas ib txwm tau txais tus nqi qub hauv ADCH?

Kauj Ruam 8: Qhia Tawm Qhov Ntsuas Qhov Ntsuas

Daim Ntawv Qhia Tawm Keypress Qhov Tseem Ceeb
Daim Ntawv Qhia Tawm Keypress Qhov Tseem Ceeb

Dab tsi peb yuav tsum tau ua tam sim no yog hloov qhov tseem ceeb hauv ADCH rau hauv tus lej sib xws rau tus yuam sij uas tau nias. Peb ua qhov no los ntawm kev sau tawm cov ntsiab lus ntawm ADCH rau txhua qhov nias thiab tom qab ntawd hloov qhov ntawd mus rau hauv tus lej zauv zoo li kuv tau ua hauv daim duab. Hauv peb qhov kev cuam tshuam kev tswj hwm niaj hnub peb yuav txiav txim siab tag nrho cov txiaj ntsig raws li sib raug rau txhua qhov nias kom ADC yuav teeb tsa ib qho dab tsi hauv qhov ntawd mus rau qhov muab nias.

Qoj 3: Ua qhov ma-p.webp

Nov yog qhov kuv tau txais rau kuv (koj li yuav zoo li yuav txawv). Daim ntawv ceeb toom tias kuv tau teeb tsa nws nrog ntau qhov txiaj ntsig rau txhua qhov nias.

ADC_int:; Kev cuam tshuam sab nrauv cuam tshuam tus tes tuav tes ntsuas ntsuas; npaj rau cov xov tooj tshiab khawm H, ADCH; ADC hloov tshiab thaum ADCH tau nyeem clccpi khawm H, 240brlo PC+3; yog ADCH loj dua ces nws yog 1ldi analyzer, 1; yog li thauj cov tshuaj ntsuam nrog 1rjmp rov qab; thiab xa rov qab clccpi buttonH, 230; Yog tias ADCH loj dua 2brlo PC+3ldi analyzer, 2rjmp rov clccpi khawm H, 217brlo PC+3ldi analyzer, 3rjmp rov clccpi buttonH, 203brlo PC+3ldi analyzer, 4rjmp rov clccpi buttonH, 187brlo PC+3ldi analyzer, 5rjmp rov clccpi khawm, 155brlo PC+3ldi analyzer, 6rjmp rov clccpi buttonH, 127brlo PC+3ldi analyzer, 255; peb yuav teeb nyem raws li txhua qhov onrjmp rov clccpi khawm H, 115brlo PC+3ldi tsom xam, 7rjmp rov clccpi khawm H, 94brlo PC+3ldi tsom xam, 8rjmp rov clccpi khawm H, 62brlo PC+3ldi tsom xam, 9rjmp rov clccpi buttonH, 37brlo PC+3ldi tsom xam, 0b11110000; lub hnub qub yog ib nrab saum onrjmp rov qab clccpi khawm H, 28brlo PC+3ldi analyzer, 0rjmp rov clccpi buttonH, 17brlo PC+3ldi analyzer, 0b00001111; hash kos npe yog hauv qab ib nrab onrjmp rov clccpi khawm H, 5brlo PC+3ldi analyzer, 0b11000011; redial yog sab saum toj 2 hauv qab 2rjmp rov ldi analyzer, 0b11011011; txwv tsis pub yuam kev tshwm sim rov qab: reti

Kauj ruam 9: Code thiab Video rau Version 1

Kuv tau txuas kuv tus lej rau thawj qhov hloov pauv ntawm tus tsav tsheb. Hauv qhov no koj yuav tsum thawb tus yuam sij thiab tom qab ntawd nyem lub pob txhawm rau txhawm rau ua rau ADC nyeem cov lus nkag los ntawm cov keyboard. Qhov peb xav tau yog tsis muaj khawm tab sis hloov lub teeb liab los ua qhov hloov pauv los ntawm kev nias tus kheej. Qhov 3: Sib sau ua ke thiab rub cov lej no thiab sim nws. Koj yuav tsum tau hloov pauv ntau yam pib hloov pauv kom sib haum rau koj cov keypress voltages vim tias lawv yuav txawv ntawm kuv li. Yuav ua li cas yog tias koj sim siv lub tswv yim los ntawm cov keyboard ob qho tib si rau ADC0 thiab rau sab nraud cuam tshuam tus pin hloov los ntawm khawm? hauv kuv tus lej muaj ib ntu pib ua Stack Pointer. Muaj ntau yam kev sau npe uas peb yuav xav thawb thiab nthuav tawm los ntawm pawg thaum peb tab tom siv cov kev hloov pauv thiab dab tsi-tsis yog thiab tseem muaj cov npe uas peb yuav xav khaws thiab rov qab los tom qab. Piv txwv li, SREG yog daim ntawv sau npe uas tsis khaws cia hla kev cuam tshuam, yog li cov chij sib txawv uas tau teeb tsa thiab tshem tawm raws li qhov tshwm sim ntawm kev ua haujlwm yuav raug hloov yog tias muaj kev cuam tshuam tshwm sim hauv nruab nrab ntawm qee yam. Yog li nws yog qhov zoo tshaj yog tias koj thawb SREG rau ntawm pawg thaum pib ntawm tus cuam tshuam cuam tshuam thiab tom qab ntawd tshem nws tawm ntxiv thaum kawg ntawm tus cuam tshuam cuam tshuam. Kuv tau muab nws tso rau hauv txoj cai kom pom tias nws tau pib li cas thiab cia siab tias peb yuav xav tau nws li cas tom qab tab sis vim peb tsis quav ntsej dab tsi tshwm sim rau SREG thaum cuam tshuam hauv peb cov cai kuv tsis siv pawg rau qhov no. tias kuv tau siv txoj haujlwm hloov pauv los teeb tsa ntau yam khoom hauv npe thaum pib. Piv txwv li hauv kab:

ldi kub, (1 <> sts EICRA, temp

Qhov "<<" hais kom ua hauv thawj kab ntawm cov cai saum toj no yog kev hloov pauv. Qhov tseem ceeb siv tus lej binary 1, uas yog 0b00000001 thiab hloov nws sab laug los ntawm tus lej ISC01. Nov yog txoj haujlwm ntawm lub npe me ntsis ISC01 hauv EICRA sau npe. Txij li ISC01 yog ntsis 1, tus lej 1 tau hloov mus rau sab laug 1 txoj haujlwm los ua 0b00000010. Ib yam li qhov thib ob, ISC00, yog 0 me ntsis ntawm EICRA thiab yog li kev hloov pauv ntawm tus lej 1 yog xoom txoj haujlwm rau sab laug. Yog saib mus saib lwm qhov ntawm m328Pdef.inc cov ntaub ntawv uas koj rub tawm hauv thawj qhov kev qhia thiab tau siv evrr txij li, koj yuav pom tias nws tsuas yog cov npe ntev ntawm ".equ" nqe lus. Koj yuav pom tias ISC01 yog sib npaug 1. Cov neeg sib sau ua ke hloov pauv txhua qhov piv txwv ntawm nws nrog 1 ua ntej txawm pib sib sau ua ke. Lawv tsuas yog cov npe rau npe khoom me me los pab peb tib neeg nyeem thiab sau code. Tam sim no, txoj kab ntsug ntawm ob txoj haujlwm ua haujlwm saum toj no yog qhov ua haujlwm "lossis" kev ua haujlwm. Nov yog qhov sib npaug:

0b00000010 | 0b00000001 = 0b00000011

thiab qhov no yog qhov peb tab tom thauj khoom (siv "ldi") rau hauv qhov kub. Yog vim li cas tib neeg siv txoj hauv kev no los thauj cov txiaj ntsig rau hauv npe yog tias nws tso cai rau ib tus siv lub npe me ntsis es tsis txhob siv tus lej xwb thiab qhov no ua rau cov lej nyeem tau yooj yim dua. Peb siv cov lus qhia "ori" thiab "andi". Cov no tso cai rau peb SET thiab CLEAR cov khoom ib feem tsis hloov pauv ntawm lwm cov khoom hauv kev sau npe. Piv txwv li, thaum kuv siv

lub sij hawm, (1

qhov no "lossis" lub sijhawm sov nrog 0b00000001 uas tso 1 hauv zeroth ntsis thiab tso tag nrho qhov seem tsis hloov pauv. Kuj thaum peb sau

thiab temp, 0b11111110

qhov no hloov pauv zeroth me ntsis ntawm qhov kub mus rau 0 thiab tawm tag nrho qhov tsis hloov pauv.

Nqe Lus 4: Koj yuav tsum hla txoj cai thiab xyuas kom koj nkag siab txhua kab. Tej zaum koj yuav pom nws nthuav los nrhiav txoj hauv kev zoo dua rau kev ua thiab sau cov phiaj xwm zoo dua. Muaj ib puas txoj hauv kev los teev cov khoom thiab kuv zoo nkauj ntseeg tias koj tuaj yeem pom txoj hauv kev zoo dua li kuv li. Koj kuj tseem tuaj yeem pom (txwv tsis pub ntuj ceeb tsheej!) Yuam kev thiab tshem tawm. Hauv qhov xwm txheej ntawd kuv xav paub xav hnov txog lawv kom lawv tuaj yeem kho tau.

Okay, tam sim no cia saib seb peb puas tuaj yeem tshem tawm qhov khawm tsis txaus ntseeg …

Kauj ruam 10: Code rau Version 2

Txoj hauv kev yooj yim tshaj plaws kom tshem lub pob tsuas yog tshem nws tag nrho, tsis nco qab cov tswv yim rau PB2, thiab tsuas yog hloov ADC mus rau "Free Running Mode".

Hauv lwm lo lus yooj yim hloov ADCSRB sau npe kom ADTS2, ADTS1, thiab ADTS0 yog txhua tus xoom.

Tom qab ntawd teeb tsa ADSC me ntsis hauv ADCSRA rau 1 uas yuav pib hloov pauv thawj zaug.

Tam sim no rub nws mus rau koj lub microcontroller thiab koj yuav pom tias tus lej raug los ntawm cov zaub thaum koj nyem lub pob thiab tsuas yog thaum koj nyem lub pob. Qhov no yog vim tias ADC txuas ntxiv ua piv txwv ADC0 chaw nres nkoj thiab nthuav tawm tus nqi. Thaum koj tshem koj tus ntiv tes tawm ntawm lub pob, "khawm thaws" yuav ua rau ob peb qhov txiaj ntsig tsis raug tshwm sim sai heev thiab tom qab ntawd nws yuav rov qab los rau 0V cov tswv yim. Hauv peb tus lej peb muaj 0V tshwm li 0b11011011 (vim tias tus nias '0' twb tau siv 0b00000000 tso tawm tus nqi)

Qhov no tsis yog qhov kev daws teeb meem uas peb xav tau txawm tias yog ob yam. Ua ntej peb tsis xav kom tuav lub pob. Peb xav nias nws ib zaug thiab muaj tus lej tso tawm (lossis siv qee qhov cai tshiab hauv kev qhia tom qab). Qhov thib ob, peb tsis xav txuas ntxiv ua piv txwv ADC0. Peb xav kom nws nyeem ib zaug, hloov nws, thiab tom qab ntawd pw kom txog thaum tus yuam sij tshiab ua rau hloov dua siab tshiab. Hom khiav dawb yog qhov zoo tshaj plaws yog qhov tsuas yog qhov koj xav kom lub microcontroller ua yog txuas ntxiv nyeem qee cov lus sib piv - zoo li yog tias koj xav pom lub sijhawm kub tiag lossis qee yam.

Yog li cia nrhiav lwm qhov kev daws teeb meem …

Kauj Ruam 11: Peb Yuav Raug Tshem Tawm Li Cas? Version 3

Yuav Ua Li Cas Peb Thiaj Li Tshem Tawm Cov Khawm? Version 3
Yuav Ua Li Cas Peb Thiaj Li Tshem Tawm Cov Khawm? Version 3

Muaj ntau txoj hauv kev peb tuaj yeem ua mus ntxiv. Ua ntej peb tuaj yeem ntxiv kho vajtse kom tshem tau lub khawm. Piv txwv li peb yuav sim muab lub transistor tso rau hauv Circuit Court ntawm cov kab tawm ntawm tus yuam sij kom nws yuav siv qhov me me ntawm qhov tam sim no los ntawm cov zis thiab xa 5V mem tes mus rau tus pin cuam tshuam PD2.

Txawm li cas los xij, qhov ntawd tej zaum yuav muaj suab nrov tsawg kawg thiab qhov phem tshaj nws yuav tsis tso cai rau lub sijhawm txaus rau kev nyeem yuam sij kom raug vim tias qhov hluav taws xob tso tawm ntawm cov keyboard yuav tsis muaj sijhawm ruaj khov ua ntej nyeem ADC.

Yog li peb yuav theej tuaj nrog cov software daws teeb meem. Qhov peb xav ua yog ntxiv qhov cuam tshuam ntawm tus lej PD2 thiab sau tus cuam tshuam cuam tshuam rau nws uas hu ib zaug nyeem ntawm tus lej tus lej. Hauv lwm lo lus, peb tshem tawm qhov cuam tshuam autotrigger los ntawm ADC, thiab ntxiv qhov cuam tshuam sab nraud uas hu rau ADC sab hauv nws. Txoj kev ntawd lub teeb liab los nyeem ADC los tom qab PD2 lub teeb liab tau tshwm sim thiab qhov no yuav muab sijhawm txaus los txhawm rau txhawm rau txhawm rau ntsuas qhov tseeb ua ntej PC0 tus pin tau nyeem thiab hloov dua siab tshiab. Peb tseem yuav muaj ADC ua tiav cuam tshuam uas ua rau cov txiaj ntsig mus rau tus ntsuas ntsuas pom thaum kawg.

Ua siab zoo? Zoo peb ua nws …

Ua tibzoo saib cov cai tshiab txuas nrog.

Koj pom cov kev hloov hauv qab no:

  1. Peb ntxiv rjmp ntawm qhov chaw nyob.org 0x0002 los tswj INT0 sab nraud cuam tshuam
  2. Peb hloov EIMSK sau npe los qhia tias peb xav cuam tshuam ntawm tus lej INT0
  3. Peb hloov ADATE tus pin hauv ADCSRA rau npe kom tsis siv neeg autotriggering
  4. Peb tau tshem ntawm ADCSRB cov chaw vim tias lawv tsis cuam tshuam thaum ADATE tawm
  5. Peb tsis tas yuav rov pib dua tus chij sab nraud txij li INT0 cuam tshuam niaj hnub ua qhov no tau thaum nws ua tiav - yav dhau los peb tsis muaj kev cuam tshuam ib ntus, peb tsuas yog ua rau ADC tawm ntawm lub teeb liab ntawm tus pin, yog li peb yuav tsum tshem tus chij ntawd los ntawm txhais tes.

Tam sim no hauv kev cuam tshuam cov neeg lis haujlwm peb tsuas yog hu rau kev hloov pauv ib leeg los ntawm ADC.

Qoj 5: Khiav qhov version no thiab saib yuav muaj dab tsi tshwm sim.

Kauj Ruam 12: Code thiab Video rau Kev Ua Haujlwm

Raws li peb pom los ntawm qhov kawg version, khawm cuam tshuam tsis ua haujlwm zoo vim tias kev cuam tshuam tau cuam tshuam rau ntawm qhov nce mus rau tus pin PD2 thiab tom qab ntawd tus cuam tshuam cuam tshuam hu rau ADC hloov dua siab tshiab. Txawm li cas los xij, ADC tom qab ntawv tau txais qhov ntsuas hluav taws xob ua ntej nws tau ruaj khov thiab yog li nws nyeem tsis muaj qab hau.

Dab tsi peb xav tau yog qhia txog kev ncua ntawm kev cuam tshuam ntawm PD2 thiab ADC nyeem ntawm PC0. Peb yuav ua qhov no los ntawm kev ntxiv lub sijhawm/txee, lub txee cuam tshuam cuam tshuam, thiab ncua sijhawm tas li. Luckily peb twb paub yuav ua li cas los ntawm Tutorial 3! Yog li peb yuav tsuas yog luam thiab muab cov cai cuam tshuam los ntawm qhov ntawd.

Kuv tau muab cov txiaj ntsig tshwm sim thiab cov vis dis aus qhia nws ua haujlwm.

Koj yuav pom tias kev nyeem ntawv tsis raug raws li qhov xav tau. Qhov no yuav yog vim muaj ntau qhov chaw:

  1. peb tab tom tapping los ntawm qhov hluav taws xob tso tawm ntawm cov keyboard kom ua rau PD2 uas cuam tshuam rau kev nyeem hauv PC0.
  2. peb yeej tsis paub tias yuav ncua sijhawm ntev npaum li cas tom qab tau txais kev nyeem ntawv zoo tshaj plaws.
  3. nws yuav siv ob peb kauj ruam rau ADC kev hloov pauv kom ua tiav uas txhais tau tias peb tsis tuaj yeem tua hluav taws sai ntawm cov keyboard.
  4. tej zaum muaj suab nrov hauv cov keyboard nws tus kheej.
  5. lwm yam …

Yog li, txawm hais tias peb tau tswj kom tau cov keyboard los ua haujlwm, thiab tam sim no peb tuaj yeem siv nws hauv cov ntawv thov los ntawm kev siv tus yuam sij qhov tseem ceeb hauv qee txoj hauv kev es tsis txhob tso tawm lawv mus rau lub tshuab tshuaj ntsuam, nws tsis yog qhov tseeb thiab nws yog qhov txaus ntshai heev. Tias yog vim li cas kuv xav tias txoj hauv kev zoo tshaj plaws rau xaim keypads yog yooj yim los lo txhua qhov tawm los ntawm cov keypad mus rau lwm qhov chaw nres nkoj thiab txiav txim siab tus yuam sij twg yog nias los ntawm cov chaw nres nkoj twg pom qhov hluav taws xob. Qhov ntawd yooj yim, nrawm heev, thiab raug heev.

Qhov tseeb, tsuas muaj ob qho laj thawj vim li cas ib tus thiaj xav tsav lub keypad raws li peb tau ua ntawm no:

  1. Nws tsuas yog siv 2 ntawm tus pin ntawm peb lub microcontroller hloov 8.
  2. Nws yog txoj haujlwm zoo los qhia qhov sib txawv ntawm ADC ntawm lub microcontroller uas txawv ntawm cov txheej txheem uas koj tuaj yeem pom muaj xws li ntsuas kub, tig lub hwj chim, thiab lwm yam. ntau dua li tsuas yog khiav dawb CPU-gobbling hom.

Xijpeem, ntawm no yog ob peb qhov kev tawm dag zog zaum kawg rau koj:

Nqe Lus 6: Rov sau ADC kev hloov pauv ua tiav cuam tshuam cuam tshuam tus neeg siv los siv Cov Lus Saib. I.e. Yog li nws ntsuas qhov sib piv nrog thawj cov khoom hauv lub rooj thiab yog tias nws loj dua nws rov los ntawm kev cuam tshuam, yog tias nws tsis yog nws nce Z mus rau cov khoom tom ntej hauv lub rooj thiab ceg rov qab los rau kev sim dua. Qhov no yuav ua rau tus lej luv thiab ntxuav qhov cuam tshuam cuam tshuam thiab ua kom nws zoo dua. (Kuv yuav muab txoj hauv kev daws teeb meem raws li cov kauj ruam tom ntej) Nqe Lus 7: Nqa koj lub keypad mus rau 8 tus pin ntawm lub microcontroller thiab sau tus tsav tsheb yooj yim rau nws thiab paub ntau npaum li cas nws zoo dua. Koj puas tuaj yeem xav txog ob peb txoj hauv kev los ua kom peb txoj kev ua haujlwm zoo dua?

Qhov ntawd yog txhua yam rau qhov kev qhia no. Kuv tau txuas qhov kawg nrog cov taw qhia. Raws li peb ua peb txoj hauv kev ze rau peb lub hom phiaj kawg, peb yuav siv cov keyboard ib zaug ntxiv hauv Tutorial 9 los qhia yuav ua li cas tswj xya ntu ntu qhia nrog nws (thiab tsim qee yam ntxim nyiam uas siv cov yuam sij ntxiv ntawm lub xov tooj ntawm tes) thiab tom qab ntawd peb yuav hloov mus rau kev tswj hwm yam khoom nrog khawm-nias hloov chaw (txij li cov txheej txheem haum zoo dua nrog cov khoom kawg peb tab tom tsim nrog rau cov kev qhia no) thiab peb yuav cia li khaws cov keyboard.

Ntsib koj zaum tom ntej!

Pom zoo: