Cov txheej txheem:

Nyeem Hloov Nrog ATtiny2313: 9 Cov Kauj Ruam
Nyeem Hloov Nrog ATtiny2313: 9 Cov Kauj Ruam

Video: Nyeem Hloov Nrog ATtiny2313: 9 Cov Kauj Ruam

Video: Nyeem Hloov Nrog ATtiny2313: 9 Cov Kauj Ruam
Video: 3 Yam Ua Rau Koj Yog Tus Neeg Vam Meej 2024, Lub Xya hli ntuj
Anonim
Nyeem Hloov Nrog ATtiny2313
Nyeem Hloov Nrog ATtiny2313

Muaj ntau ntau Cov Lus Qhia cuam tshuam nrog cov txiaj ntsig los ntawm ATtiny2313 thiab cov khoom siv AVR zoo sib xws. Piv txwv li, https://www.instructables.com/id/Ghetto-Programming%3a-Getting-started-with-AVR-micro/, https://www.instructables.com/id/Drive-a-Stepper- Tsav-nrog-ib-AVR-Microprocessor/. Ua haujlwm ntawm qhov tseeb kawg los ntawm Qhov Real Elliot, uas qhia pom yuav ua li cas tswj cov tshuab hluav taws xob, kuv pom tias nws yuav pab tau tiag tiag kom tuaj yeem ua lwm ntu ntawm cov cai hauv tib qhov haujlwm yog li kuv tsis tas yuav rov sau dua ATtiny2313 txhua lub sijhawm kuv xav sim qhov hloov pauv me ntsis (xws li ib nrab-kauj ruam lossis khiav tus stepper rov qab). Thaum nws yooj yim los sau cov cai siv qhov hloov pauv/cov ntaub ntawv kab lus kom tso cai xaiv lwm qhov kev hloov pauv, qee txoj hauv kev xaiv cov ntaub ntawv xav tau. Qhov ntawd txhais tau tias qee yam khoom ntaus ntawv yuav tsum tau nyeem los tswj cov ntaub ntawv. Hmoov zoo, ATtiny2313 muaj ntau I/O pins thiab tau tsim kom zoo rau kev nyeem cov tswv yim los ntawm cov hloov pauv. Cov Lus Qhia no yuav qhia yuav ua li cas nyeem cov tswv yim thiab txiav txim siab raws li lawv lub xeev. Txij li qhov ntawd ib leeg yuav ua rau kev qhia tsis txaus ntseeg, Kuv yuav piav qhia txoj hauv kev yooj yim ntawm kev siv lub sijhawm/lub peev xwm ntawm ATtiny2313 kom tsav tus neeg hais lus me me ua suab paj nruag. Tseem yuav muaj qhov digression me me ntawm cov txheej txheem debugging yooj yim.

Kauj Ruam 1: Cov Khoom Siv

Cov Khoom Siv
Cov Khoom Siv
Ntaus Ntawv
Ntaus Ntawv

Cov Lus Qhia no tsim los ntawm kev ua haujlwm zoo ntawm Real Elliot thiab siv ATtiny2313 Ghetto txoj kev txhim kho nws piav qhia. ATtiny2313 cov ntaub ntawv los ntawm Atmel yog qhov kawg siv rau txhua txoj haujlwm, tab sis nws tsis tas yuav yooj yim nyeem. https://www.atmel.com/dyn/products/datasheets.asp?family_id=607 (Txuas muaj tag nrho cov ntaub ntawv AVR, nrhiav 2313.) Daim duab qhia tau yooj yim teeb ntawm cov khoom siv hloov pauv. Qhov no tsuas yog ib pob ntawm plaub qhov qhib/tua qhov hloov pauv; tseem paub tias yog ib tus ncej, ib qho pov tseg ib leeg (SPST). Feem ntau, ib qho kev sib txuas, lossis tus ncej, ntawm txhua qhov kev hloov pauv tau raug khi rau hauv av thaum lwm qhov kev sib txuas tau rub siab los ntawm qhov txwv tam sim no resistor (10K lossis yog li). Cov tswv yim microcontroller txuas nrog tus ncej nrog tus tiv thaiv. Yog tias qhov hloov pauv tau qhib, lub microcontroller yuav nyeem cov lus nkag ua HI. Yog tias qhov hloov pauv raug kaw, lub microcontroller yuav nyeem LO cov tswv yim. Xa mus rau cov txheej txheem kom paub meej. Qhov no txhais tau tias cov hloov pauv tuaj yeem yooj yim muaj ib tus ncej txuas rau hauv av (LO) thiab lwm tus ncej txuas nrog rau cov khoom siv nkag. Thawj qhov piv txwv qhia tau tias tsuas yog ob txoj hauv kev. Cov hloov pauv tau nyeem thiab teeb tsa nrog cov cai hauv qab no. Kev teeb tsa cov hloov pauv raws li kev nkag: (Tsis xav tau tus lej; qhov no yog lub neej ntawd.) Qhib lub rub tawm resistors: PORTB = _BV (PB0) | _BV (PB1); Nyeem cov tswv yim: but1 = ~ PINB & 0x03; Nco tseg siv kev thim rov qab thiab npog ntsej muag kom tau txais tus nqi raug.

Kauj Ruam 2: Teeb taws rau teeb liab

Peb yuav siv ob qhov kev hloov no kom ntsais ib qho LED ib lub sijhawm ua haujlwm tau. Cov LEDs peb yuav siv yuav yog lub teeb ntsais uas Real Elliot ua rau nto moo. Kev hloov pauv 1 thiab 2 yuav raug kho raws li ob tus lej binary, yog li kev sib xyaw ua ke tuaj yeem sawv cev rau tus lej 0, 1, 2, thiab 3. Peb qhov program yuav nyeem ob lub qhov muag thiab ntsais lub LED kom tsim nyog tus lej, tab sis tsuas yog hloov hloov tau hloov. Cov hloov pauv tau nthuav tawm rau 500 milliseconds (tsis ua kom zoo dua). Debounce algorithm yog yooj yim zoo nkauj. Cov hloov pauv tau nyeem thiab sau ntawv nyeem. Yog tias nws txawv ntawm qhov qub tab sis tus nqi (tus nqi khaws tseg zaum kawg), tom qab ntawv txoj haujlwm raug ncua rau 500 milliseconds thiab cov hloov pauv tau rov nyeem dua. Yog tias tus nqi zoo ib yam li tau nyeem yav dhau los, tus nqi ntawm qub tab sis yuav raug hloov kho thiab LED yuav ntsais tus lej ntawm lub sijhawm cuam tshuam los ntawm tus lej binary ntawm ob qhov hloov pauv. Nco tseg qhov hloov pauv ntawm tus nqi txij li qhov hloov pauv uas yog "ntawm" nyeem LO. Cov keyboards yuav raug tshuaj xyuas tas mus li rau qhov hloov pauv ntxiv. Ua tibzoo saib ntawm no https://www.ganssle.com/debouncing.pdf kom kawm paub ntau ntxiv txog kev hloov pauv qhov deb. Qhov no yog ATtiny2313 code rau qhov piv txwv no. Hauv kev ua haujlwm, txoj haujlwm no yuav ntsais muag LED ntawm PB4 (tus pin lub cev 8) ob zaug los qhia tias nws tau pib ua ntej. Nws yuav nyeem cov hloov pauv ib thiab ob, thiab ntsais ib mus rau peb zaug nyob ntawm qhov hloov chaw thaum twg lawv hloov. Thaum cov hloov pauv tsis hloov pauv, LED yuav ntsais ntsais. Koj khiav cov cai no, tsim cov npe tshiab (hu nws "Basic" yog tias koj nyiam) thiab rub cov ntaub ntawv C code hauv qab no thiab ua cov ntaub ntawv rau hauv. Hloov npe Makefile1.txt tsuas yog Makefile. Siv WinAVR, suav cov program thiab thauj nws mus rau hauv koj li ATtiny2313.

Kauj Ruam 3: Me Me Digression ntawm Debugging

Yog tias koj zoo li kuv (thiab txhua tus programmer hauv ntiaj teb) koj tej zaum tau ntsib lub sijhawm thaum "tsis muaj qhov yuam kev" tus lej koj tau ua tib zoo ntaus thiab sau ua ke tsis ua qhov koj xav kom nws ua. Tej zaum nws tsuas ua tsis tau dab tsi! Yog li qhov teeb meem yog dab tsi? Koj yuav mus li cas thiaj paub? Hmoov zoo, muaj ntau txoj hauv kev kom tau txais yam ua haujlwm. (Tau txais phau ntawv no rau kev kho mob zoo ntawm cov ncauj lus ntawm kev debugging. Http://www.debuggingrules.com/) Kuv xav muab qee qhov lus qhia yooj yim hais txog lub ncauj lus ntawm kev debugging microcontroller daim ntawv thov. koj paub dab tsi. Yog tias koj tau txais lub teeb ntsais ntsais ua haujlwm ib zaug, tom qab ntawd siv nws dua kom pom qhov twg koj nyob hauv koj qhov haujlwm. Kuv nyiam kom muaj LED ntsais ob zaug txhawm rau teeb tsa qhov pib ntawm txoj haujlwm. Koj tuaj yeem tso tus lej txhawm rau ua qhov no thaum pib ntawm koj qhov haujlwm. Thaum koj paub tias tsis muaj dab tsi tsis raug nrog koj lub khoos phis tawj, tsim kom muaj nuj nqi ua qhov ntsais muag. Nov yog cov haujlwm kuv siv./ ---------------------------------------------------------------------------- ------------------------------ ** blinkEm-ua haujlwm kom ntsais LED siv PD4 ** PD4 yuav tsum tau teeb tsa ua qhov tso tawm. ** -------------------------------------------------------------- Ua tsaug ntau ---------------------*/void blinkEm (uint8_t suav) {thaum (suav> 0) {PORTD = _BV (PD4); _delay_ms (1000); PORTD = ~ _BV (PD4); _delay_ms (1000); suav-- }} Tam sim no muaj peev xwm siv txoj haujlwm no ntawm ntau cov ntsiab lus hauv koj cov cai ua lub cim qhia tias cov cai tau ua tiav nyob deb. Paub txog txoj cai tau ua haujlwm txhais tau tias koj tuaj yeem ua tib zoo tshuaj xyuas txhua ntu uas tau ua haujlwm, tab sis tsis ua tiav qhov koj xav tau, txhawm rau pom qhov ua yuam kev. Hloov ib yam ntawm ib lub sijhawm yog cov txheej txheem tseem ceeb rau kev debugging (piav qhia hauv qhov kev hais los saum toj no). Txoj hauv kev no ua haujlwm nrog "sib faib thiab kov yeej": ua tus menyuam kauj ruam ntxiv rau kev ua haujlwm ntxiv. Qhov no yuav zoo li yog txoj hauv kev qeeb, tab sis nws tsis ze li qeeb raws li sim daws qhov feem ntau ntawm cov cai tsis ua haujlwm txhua lub sijhawm.

Kauj ruam 4: Debugging Ntau

Muaj ntau lub sijhawm thaum peb xav tshuaj xyuas ib feem ntawm cov cai los ntawm hla cov kab feem ntau hauv nws, tom qab ntawd ua rau lawv ib leeg zuj zus thaum peb txheeb xyuas txhua tus ua haujlwm. Feem ntau, peb ua qhov no los ntawm "tawm lus tawm" kab peb xav hla. Kev txuas ntxiv ntawm cov txheej txheem no yog txhawm rau txiav thiab muab tshuaj txhuam cov cai, tawm tswv yim thawj (yog li peb tsis poob nws), thiab tshem tawm ntawm daim ntawv theej C. muaj plaub txoj hauv kev yooj yim los tawm tswv yim kab. Muab "//" tso rau ntawm kab lus tawm ntawm kab ntawv. Enclosing ib lossis ntau kab hauv "/*" thiab "*/" yuav tawm tswv yim tag nrho ntu. Rau txoj hauv kev no kom ua haujlwm tau zoo, yuav tsum tsis muaj lwm qhov "*/" hauv qhov chaws thaiv (tsis yog qhov xaus ib qho). Yog li kev qhuab qhia muaj txiaj ntsig yog siv // rau cov lus pom hauv cov lej ntawm cov cai, thiab khaws cov / * * / tsim rau cov lus tawm tswv yim thiab rau kev tawm tswv yim ntu ntu ntawm cov cai. Placing "#if 0" thaum pib ntawm qhov thaiv tawm lus thiab xaus ntu nrog "#endif". Kev xaiv ntau txoj hauv kev tuaj yeem siv "#ifdef (tus cim)" thaum pib ntawm qhov thaiv thiab "#endif" thaum kawg. Yog tias koj xav kom lub block raug suav sau, siv "#define (identifier)" ua ntej hauv qhov program. Nco tseg cov cim cim cim yog rau kev hais lus nkaus xwb thiab tsis suav nrog. Ua ke cov txheej txheem no yuav tsum muaj txoj hauv kev los daws teeb meem koj li ATtiny2313 cov haujlwm. Koj tuaj yeem pom cov cuab yeej no muaj txiaj ntsig zoo li peb ua dhau los ntawm Cov Lus Qhia no.

Kauj Ruam 5: Siv Timer/Counter 0 rau Beeps

Siv Timer/Counter 0 rau Beeps
Siv Timer/Counter 0 rau Beeps

ATtiny2313 muaj ob lub sijhawm timer/cov peev txheej muaj zog: ib qho 8-ntsis thiab ib qho 16-ntsis. Cov no tuaj yeem teeb tsa ua cov tshuab hluav taws xob ntau zaus, sib txawv ntawm qhov ntsuas qhov ntsuas qhov ntsuas qhov ntsuas qhov ntsuas, thiab cov txiaj ntsig sib piv sau npe. Kev ua haujlwm tag nrho ntawm cov no tau piav qhia hauv 49 nplooj ntawv ntawm cov ntawv xov xwm. Txawm li cas los xij, peb yuav siv rooj plaub yooj yim. Tsuas yog Timer/Counter 0 (8-ntsis ib qho) yuav siv thiab nws yuav siv yooj yim raws li lub tshuab hluav taws xob ntau zaus. Qhov zaus yuav raug xa mus rau tus hais lus me me los tsim lub suab nrov. Timer/Counter 0 tau piav qhia tag nrho hauv nplooj ntawv 66 txog 83 ntawm ATtiny2313 cov ntaub ntawv. Kev nyeem ntawv ze ntawm cov ntaub ntawv no yuav muab ib qho kev nkag siab zoo ntawm Lub Sijhawm/Counter 0. Zoo siab, ib qho yooj yim haum, Clear Timer on Compare (CTC), yog txhua yam uas xav tau los tsim lub suab nrov nrov peb xav tau.

Rau hom uas peb yuav siv, kev ua haujlwm ntawm Timer/Counter yog ncaj nraim. Thaum xaiv lub moos teeb liab, lub txee pib ntawm xoom thiab nce txhua lub moos mem tes. Thaum tus nqi txee nce mus txog tus nqi hauv Kev Tso Tawm Sib Piv Sau Npe (TOP), lub txee rov pib dua rau xoom thiab suav rov pib dua. Qhov tso tawm me ntsis cuam tshuam nrog Timer/Counter yog toggled los tsim cov duab plaub fab. Qhov no ncaj qha tsav lub suab hloov pauv kom ua suab nrov. TDK Audio Transducer me me ua rau lub suab nrov nrov. Chav tsev tsim nyog yog Digikey 445-2530-ND, TDK SD1209T3-A1 (Kuv tau siv cov ntawv ua ntej ntawm qhov no). Qhov no yog 3 volt version; 5 volt version kuj tseem yuav ua haujlwm uas kuv xav tau. Kuv tsav qhov no ncaj qha tawm ntawm qhov chaw nres nkoj tso tawm ntawm Attiny2313 thiab nws zoo li ua haujlwm tau zoo. Sparkfun muaj cov cuab yeej zoo sib xws.

Kauj Ruam 6: Kho Timer/Counter 0

Hom CTC tuaj yeem siv los hloov qhov tso tawm OC0A ntawm tus Pin 2, Chaw nres nkoj B (tus pin lub cev 14). Txhawm rau ua kom muaj txiaj ntsig ntawm tus pin no, DDRB yuav tsum tau teeb tsa kom tsim nyog. Tus lej C rau qhov no zoo ib yam li teeb tsa cov zis rau lub teeb ntsais. DDRB = _BV (PB2); // Chaw nres nkoj B2 yog qhov tso tawm. Qhov kauj ruam tom ntej yog muab lub moos teeb liab thiab thauj cov khoom sib piv tso npe los tsim cov duab yoj raws qhov zaus. Qhov sib npaug rau qhov tshwm sim zaus tau muab rau hauv cov ntaub ntawv (nplooj 72). Cov ntsiab lus hauv kab zauv yuav piav qhia hauv qab no. Nov yog qhov sib npaug: fOC0A = fclk_I/O/2*N*(1+OCR0A) Qhov twg fOC0A: = tso zis zaus fclk_I/O: = moos qhov zaus zaus N: = moos prescale factor OCR0A: = tus nqi hauv qhov sib piv tso npe rau Timer/ Counter 0A. Clock Source Zaus, fclk_I/OT Qhov no yog qhov zaus ntawm lub moos system. Tus nqi pib yog 1MHz. Khoom CS00, CS01, thiab CS02 ntawm TCCR0B tswj qhov kev xaiv no. Txij li cov khoom no tseem xaiv tus nqi ntawm N, nws tau piav qhia ntxiv tom ntej. Prescaler Tus Nqi, NN yog tus nqi siv los faib, lossis ntsuas ua ntej, lub moos moos. Khoom CS00, CS01, thiab CS02 ntawm TCCR0B tswj qhov kev xaiv no. Rooj 41 ntawm nplooj 81 ntawm ATtiny2313 cov ntaub ntawv piav qhia txog kev sib txuas. Txij li qhov xav tau ze ntawm 1kHz xav tau, cov khoom CS00 thiab CS01 ntawm TCCR0B yuav raug teeb tsa. Nco ntsoov tias teeb tsa tag nrho peb cov khoom mus rau 0, yog li xaiv tsis muaj lub moos qhov chaw, ua rau nres qhov tso tawm. Qhov no yog txoj hauv kev uas yuav siv los pib thiab nres lub suab nrov. OP Tus nqi, OCR0AT Tus nqi no yog TOP tus nqi rau lub txee uas tau thauj mus rau hauv Kev Tso Tawm Sib Piv Sau Npe rau Timer/Counter 0A. Thaum tus nqi no mus txog, lub txee yuav rov pib dua rau xoom thiab suav yuav pib dua kom txog thaum TOP mus txog thiab lub voj voog rov ua dua. TOP tau hloov pauv tau yooj yim, yog li qhov zaus ntawm lub suab nrov tau hloov pauv tau yooj yim. Txij li qhov xav tau ze li ntawm 1kHz xav tau, TOP tau teeb tsa rau 7. (Nco tseg tias lub prescaler tuaj yeem raug teeb tsa mus rau 8, thiab TOP teeb tsa rau 63. Cov txiaj ntsig zoo ib yam - koj xaiv.) Zaus Tso Tawm, fOC0AU siv qhov sib npaug los xam cov txiaj ntsig tso tawm hauv: fOC0A = 1, 000, 000 /2 * 64 * (1+7) fOC0A = 977Hz Kaw txaus! Nov yog tus lej txhawm rau txhawm rau Tso Tawm Cov Ntawv Sib Piv Sau Npe thiab Timer Counter Control Register 0B. Thov saib qhov program program tiag kom nkag siab tias siv cov no li cas. OCR0A = 7; // Lub Sijhawm Tus Nqi TCCR0B = _BV (CS01) | _BV (CS00); // Xaiv lub moos sab hauv & prescale = 8 TCCR0B = 0; // tsis muaj lub moos qhov twg los qhib lub suab Teem Sijhawm/Counter Mode Raws li qhov lus qhia kawg, peb yuav qhia lub Timer/Counter hom peb xav tau los ntawm teeb tsa cov khoom tsim nyog hauv Timer/Counter Control Register 0A. CTC hom raug xaiv los ntawm teeb tsa me ntsis WGM01 raws li tau piav qhia hauv Table 40, nplooj 79 ntawm cov ntaub ntawv. Txij li thaum peb xav kom cov zis tso rau txhua lub voj voog, me ntsis COM0A0 kuj yuav tsum tau teeb tsa raws li tau piav qhia hauv Table 34 ntawm nplooj ntawv 77. Nov yog tus lej: TCCR0A = _BV (COM0A0) | _BV (WGM01); // CTC Toggle Mode

Kauj Ruam 7: Siv Plaub Hloov

Raws li peb siv lub beeper, cia peb txuas ntxiv peb cov cuab yeej kho vajtse thiab software los lis plaub qhov hloov pauv. Txij li qhov tso tawm ntawm Timer Counter 0A nyob ntawm Chaw nres nkoj B, tus pin 2, peb tsis tuaj yeem yooj yim sib txuas ntau qhov hloov pauv mus rau Chaw Nkag B. Kev daws teeb meem yooj yim yuav yog siv Chaw D, tab sis cia qhov chaw nres nkoj muaj rau lwm txoj haujlwm (tej zaum stepper lub cev muaj zog). Yog li cia peb sib txuas ntxiv cov hloov pauv mus rau PB3 thiab PB4. Nej nyeem cov hloov pauv feem ntau tsis hloov pauv. Lub npog ntsej muag tus nqi tau hloov mus rau 0x1B (00011011 binary) los npog qhov me ntsis 2 nrog rau 5, 6, thiab 7. Ib qho ntxiv dag zog yog siv los tsim 4-ntsis binary tooj. Hloov cov khoom 3 thiab 4 txoj cai ib ntsis thiab ua ke nrog cov khoom 0 thiab 1 rau hauv 4 tus lej binary. Qhov no yog tus qauv C syntax rau kev hloov pauv thiab sib txuas ua ke, tab sis tej zaum yuav tsis paub zoo rau cov neeg tshiab. but1a = (but1 & 0x03) | ((but1 & 0x18) >> 1); // tab sis 1 tau hloov pauv Kev nyeem ntawv Hauv kev ua haujlwm, txoj haujlwm yuav ntsais muag ob zaug thiab beep ob zaug kom pom qhov pib. Txhua lub sijhawm hloov pauv, tus lej uas lawv sawv cev yuav raug beeped. Thaum cov hloov pauv tsis hloov pauv, LED yuav ntsais. Kev khiav cov cai no, tsim cov npe tshiab (hu nws Beep yog tias koj nyiam) thiab rub tawm C cov ntaub ntawv hauv qab no thiab ua cov ntaub ntawv rau hauv. Hloov npe Makefile2.txt tsuas yog Makefile. Siv WinAVR, suav cov program thiab thauj nws mus rau hauv koj li Attiny2313.

Kauj Ruam 8: Siv Kev Hloov/rooj plaub Tsim

Kauj ruam kawg yog "tsuas yog software": Raws li tau cog lus tseg, peb yuav siv qhov kev hloov pauv/teeb tsa. Txawm hais tias qhov piv txwv no tsuas yog qhia ob qho kev ua lwm yam, nws yuav tsum tau meej heev yuav siv qhov kev tsim no los xaiv ib qho ntawm ob peb txoj cai hloov pauv ntu. Hauv kev ua haujlwm, txoj haujlwm no saib xyuas cov hloov pauv thiab yog tias muaj kev hloov pauv, nws yuav beep tus lej tsim nyog yog tias nws txawv; nws yuav ntsais muag yog tus lej txawm. Nws tsis ua dab tsi tshwj tsis yog tias muaj kev hloov pauv.

Txhawm rau khiav cov cai no, tsim cov npe tshiab (hu nws Hloov yog tias koj nyiam) thiab rub tawm C cov ntaub ntawv hauv qab no thiab ua cov ntaub ntawv rau hauv. Hloov npe Makefile3.txt tsuas yog Makefile. Siv WinAVR, suav cov program thiab thauj nws mus rau hauv koj li Attiny2313.

Kauj Ruam 9: Xaus

Xaus
Xaus

Yog li ntawd nws yog! Tam sim no koj paub yuav siv cov hloov pauv li cas los tswj kev ua tiav ntawm koj qhov haujlwm los ntawm kev nyeem lawv hauv thiab xaiv qhov kev nqis tes ua raws qhov hloov chaw. Koj kuj paub yuav tsim lub suab nrov nrov li cas thiab tau kawm qee lub tswv yim debug ib yam.

Yog tias koj xav ntsuas koj qhov kev nkag siab, sim hloov kho qhov program kawg kom ua suab nrov ntawm lub suab siab yog tias txawm tias, beep sau ntawv qis yog tias khib, thiab ntsais lub LED txuas ntxiv yog tias tsis muaj kev hloov pauv hauv qhov koj yuav xav saib rov qab ntawm ntu ntawm kev debugging rau kev pab.

Pom zoo: