Բովանդակություն:

ADR- ի ներածություն AVR միկրոկառավարիչում - սկսնակների համար `14 քայլ
ADR- ի ներածություն AVR միկրոկառավարիչում - սկսնակների համար `14 քայլ

Video: ADR- ի ներածություն AVR միկրոկառավարիչում - սկսնակների համար `14 քայլ

Video: ADR- ի ներածություն AVR միկրոկառավարիչում - սկսնակների համար `14 քայլ
Video: 14․ 1919 թվական․ տարածաշրջանում չկան ո՛չ ռուսները, ո՛չ թուրքերը [Վանդակ | Հրանտ Տեր-Աբրահամյան] 2024, Հուլիսի
Anonim
ADR- ի ներածություն AVR միկրոկառավարիչում | սկսնակների համար
ADR- ի ներածություն AVR միկրոկառավարիչում | սկսնակների համար

Այս ձեռնարկում դուք կիմանաք ամեն ինչ ADR avr միկրոկառավարիչի մեջ

Քայլ 1: Ի՞նչ է ADC- ն:

ADC, կամ անալոգային թվային փոխարկիչ, թույլ է տալիս մեկին փոխարկել անալոգային լարումը թվային արժեքի, որը կարող է օգտագործվել միկրոկոնտրոլերի կողմից: Կան բազմաթիվ անալոգային ազդանշանների աղբյուրներ, որոնք կարելի է չափել: Կան անալոգային տվիչներ, որոնք չափում են ջերմաստիճանը, լույսի ինտենսիվությունը, հեռավորությունը, դիրքը և ուժը ՝ ընդամենը մի քանիսը նշելու համար:

Քայլ 2. Ինչպես աշխատել ADC- ում AVR- միկրոկառավարիչում

AVR ADC- ն թույլ է տալիս AVR միկրոկառավարիչին անալոգային լարումները փոխակերպել թվային արժեքների ՝ քիչ կամ առանց արտաքին մասերի: ATmega8- ը ունի 10-բիթանոց հաջորդական մոտավոր ADC: ATMega8- ը PortC- ում ունի 7 ալիքային ADC: ADC- ն ունի առանձին անալոգային մատակարարման լարման քորոց ՝ AVCC: AVCC- ն չպետք է տարբերվի ավելի քան ± 0.3 Վ -ից VCC- ից: Լարման մասին տեղեկությունը կարող է արտաքինից անջատվել AREF կապում: AVCC- ն օգտագործվում է որպես լարման հղում: ADC- ն կարող է նաև սահմանվել շարունակաբար աշխատելու համար (ազատ աշխատող ռեժիմ) կամ կատարել միայն մեկ փոխարկում:

Քայլ 3: ADC փոխակերպման բանաձև

ADC փոխակերպման բանաձև
ADC փոխակերպման բանաձև

Որտեղ Vin- ն ընտրված մուտքի քորոցի լարումն է, իսկ Vref- ը `ընտրված լարման հղումը

Քայլ 4. Ինչպե՞ս կարգավորել ADC- ն ATmega8- ում:

Ինչպե՞ս կարգավորել ADC- ն ATmega8- ում
Ինչպե՞ս կարգավորել ADC- ն ATmega8- ում

Հետևյալ գրանցամատյանները օգտագործվում են ATmega8- ում ADC- ի իրականացման համար

ADC Multiplexer- ի ընտրություն

Քայլ 5. ADLAR- ի ընտրություն

ADLAR- ի ընտրություն
ADLAR- ի ընտրություն
ADLAR- ի ընտրություն
ADLAR- ի ընտրություն

ADC Left Adjust Result ADLAR բիթը ազդում է ADC տվյալների գրանցամատյանում ADC փոխակերպման արդյունքի ներկայացման վրա: Մեկը գրեք ADLAR- ին ՝ արդյունքը ձախ կարգավորելու համար: Հակառակ դեպքում արդյունքը ճիշտ է ճշգրտվում

Երբ ADC- ի փոխարկումը ավարտված է, արդյունքը հայտնաբերվում է ADCH- ում և ADCL- ում: Հետևաբար, եթե արդյունքը մնա ճշգրտված և պահանջվի ոչ ավելի, քան 8 բիթ ճշգրտություն, բավական է կարդալ ADCH: Հակառակ դեպքում, նախ պետք է կարդալ ADCL, այնուհետև ADCH: Անալոգային ալիքի ընտրության բիթեր Այս բիթերի արժեքն ընտրում է, թե որ անալոգային մուտքերը միացված են ADC- ին:

Քայլ 6: ADCSRA ընտրություն

ADCSRA ընտրություն
ADCSRA ընտրություն
ADCSRA ընտրություն
ADCSRA ընտրություն

• Bit 7 - ADEN. ADC Միացնել Այս բիթը մեկին գրելը հնարավորություն է տալիս ADC- ին: Zeroրոյի հասցնելով ՝ ADC- ն անջատված է

• Բիթ 6 - ADSC. ADC Սկսել փոխարկումը Մեկ փոխարկման ռեժիմում, յուրաքանչյուր փոխարկումը սկսելու համար գրեք այս բիթը մեկին: Անվճար գործարկման ռեժիմում այս բիթը գրեք մեկին ՝ առաջին փոխարկումը սկսելու համար:

• Bit 5 - ADFR: ADC Free Running Select Երբ այս բիթը (մեկ) է դրված, ADC- ն գործում է Free Running ռեժիմում: Այս ռեժիմում ADC- ն անընդհատ նմուշառում և թարմացնում է Տվյալների գրանցամատյանները: Այս բիթը (զրո) մաքրելով կավարտվի Անվճար գործարկման ռեժիմը:

• Bit 4 - ADIF: ADC ընդհատման դրոշ Այս բիթը սահմանվում է, երբ ADC փոխակերպումն ավարտվում է և տվյալների գրանցամատյանները թարմացվում են: ADC փոխակերպման ամբողջական ընդհատումը կատարվում է, եթե SREG- ի ADIE բիթը և I բիթը դրված են: ADIF- ը մաքրվում է ապարատով `համապատասխան ընդհատումների բեռնաթափման վեկտորը կատարելիս: Այլապես, ADIF- ը մաքրվում է դրոշին տրամաբանական մուտքագրելով:

• Bit 3-ADIE. ADC Interrupt Enable Երբ այս բիթը գրվում է մեկի վրա և I-bit- ը SREG- ում սահմանվում է, ADC Conversion Complete Interrupt- ը ակտիվանում է:

• Բիթեր 2: 0 - ADPS2: 0: ADC Prescaler Select Bits Ըստ տվյալների թերթի, այս նախալարային սարքը պետք է սահմանվի այնպես, որ ADC մուտքագրման հաճախականությունը լինի 50 ԿՀց -ից մինչև 200 ԿՀց: ADC ժամացույցը բխում է համակարգի ժամացույցից ADPS2: 0 Այս բիթերը որոշում են XTAL հաճախականության և ADC- ի մուտքի ժամացույցի միջև բաժանման գործոնը:

Քայլ 7. Եթե ցանկանում եք վերցնել ADC- ի արժեքը, ձեզ պետք է որոշակի աշխատանք, որը կատարված է ստորև թվարկված

  • Սահմանեք ADC արժեքը
  • Կարգավորեք ելքային LED քորոցը
  • Կարգավորեք ADC սարքավորումները
  • Միացնել ADC- ը
  • Սկսեք թվային փոխակերպումների անալոգը
  • ԱՌԱ Հավերժ

ԵԹԵ ADC արժեքը ավելի բարձր է, ապա սահմանեք արժեքը, միացրեք LED ELSE- ը Անջատեք LED- ը

Քայլ 8: Սահմանեք ADC արժեքը

Կոդ ՝ uint8_t ADCValue = 128;

Քայլ 9. Կարգավորեք ելքային LED փին

Կոդ ՝ DDRB | = (1 << PB1);

Քայլ 10: Կարգավորեք ADC սարքաշարը

Կարգավորեք ADC սարքավորումները

Դա արվում է ADC- ի կառավարման ռեգիստրներում բիթեր սահմանելու միջոցով: Նախ, եկեք նախադրյալ սահմանենք ADC- ի համար: Տվյալների թերթիկի համաձայն, այս նախադրյալ սարքը պետք է սահմանվի այնպես, որ ADC մուտքային հաճախականությունը լինի 50 ԿՀց -ից մինչև 200 ԿՀց: ADC ժամացույցը բխում է համակարգի ժամացույցից: 1 ՄՀց համակարգի հաճախականությամբ, 8 -ի նախնական սակարկիչը կհանգեցնի 125 ԿՀց հաճախականության ADC հաճախականության: Նախնական չափագրումը սահմանվում է ADPS բիթերի կողմից ADCSRA գրանցամատյանում: Տվյալների թերթիկի համաձայն, բոլոր երեք ADPS2: 0 բիթերը պետք է սահմանվեն 011 -ի համար `8 նախնական սակարկիչը ստանալու համար:

Կոդ ՝ ADCSRA | = (0 << ADPS2) | (1 << ADPS1] | (1 << ADPS0];

Հաջորդը, եկեք սահմանենք ADC հղման լարումը: Սա վերահսկվում է ADMUX գրանցամատյանում REFS բիթերով: Հետևյալը սահմանում է հղման լարումը AVCC- ին:

Կոդ ՝ ADMUX | = (1 << REFS0);

Multiplexer- ով անցած ալիքը ADC- ին դնելու համար ADMUX գրանցամատյանում MUX բիթերը պետք է համապատասխանաբար սահմանվեն: Քանի որ մենք այստեղ օգտագործում ենք ADC5- ը

Կոդ ՝ ADMUX & = 0xF0; ADMUX | = 5;

ADC- ն ազատ գործարկման ռեժիմի մեջ դնելու համար ADCSRA գրանցամատյանում տեղադրեք համապատասխան անունով ADFR բիթը.

Կոդ ՝ ADCSRA | = (1 << ADFR);

Կարգավորումների վերջին փոփոխությունը կկատարվի `ADC արժեքը կարդալն ավելի պարզ դարձնելու համար: Թեև ADC- ն ունի 10 բիթ թույլատրություն, այսքան տեղեկատվություն հաճախ անհրաժեշտ չէ: Այս 10 բիթանոց արժեքը բաժանվում է երկու 8 բիթանոց գրանցիչների ՝ ADCH և ADCL: Լռելյայնորեն, ADC արժեքի ամենացածր 8 բիթը գտնվում է ADCL- ում, վերին երկուսը ADCH- ի ամենացածր երկու բիթերն են: ADLAR բիթը ADMUX գրանցամատյանում տեղադրելով ՝ մենք կարող ենք ձախ կողմում հավասարեցնել ADC արժեքը: Սա չափման ամենաբարձր 8 բիթն է դնում ADCH գրանցամատյանում, մնացածը `ADCL գրանցամատյանում: Եթե մենք այնուհետև կարդանք ADCH գրանցամատյանը, մենք ստանում ենք 8 բիթանոց արժեք, որը ներկայացնում է մեր 0 -ից 5 վոլտ չափումը որպես 0 -ից 255 համար: Մենք հիմնականում 10 -բիթանոց ADC չափումը վերածում ենք 8 բիթի: Ահա ADLAR բիթը սահմանելու կոդը.

Կոդ:

ADMUX | = (1 << ADLAR); Սա ավարտում է այս օրինակի համար ADC սարքավորումների կարգավորումը: Եվս երկու բիթ պետք է սահմանվի, մինչև ADC- ն սկսի չափումներ կատարել:

Քայլ 11: Միացնել ADC- ն

ADC- ն միացնելու համար ADEN բիթը տեղադրեք ADCSRA- ում.

Կոդ ՝ ADCSRA | = (1 << ԱԴԵՆ »);

Քայլ 12: Սկսեք թվային փոխակերպումների անալոգը

ADC չափումները սկսելու համար ADCSRA- ի ADSC բիթը պետք է սահմանվի.

Կոդ ՝ ADCSRA | = (1 << ADSC);

Այս պահին ADC- ն կսկսի շարունակաբար նմուշառել ADC5- ում ներկայացված լարումը: Այս կետի կոդն այսպիսի տեսք կունենա.

Քայլ 13 ՝ ԱՌԱ Fore ընդմիշտ

Մնում է միայն ADC արժեքը ստուգել և LED- ները սահմանել բարձր / ցածր ցուցիչ ցուցադրելու համար: Քանի որ ADC- ի ընթերցումը ADCH- ում ունի առավելագույն արժեքը 255, թ -ի թեստային արժեք է ընտրվել `որոշելու լարման բարձր կամ ցածր լինելը: FOR loops- ում IF/ELSE- ի պարզ հայտարարությունը թույլ կտա մեզ միացնել ճիշտ LED- ը.

Կոդ

եթե (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // Միացրեք LED- ը

}

ուրիշ

{

PORTB & = ~ (1 << PB0); // Անջատեք LED- ը

}

Քայլ 14: Վերջում ամբողջական ծածկագիրն է

Կոդ:

#ներառում

int հիմնական (անվավեր)

{

uint8_t ADCValue = 128;

DDRB | = (1 << PB0); // Որպես ելք սահմանեք LED1- ը

ADCSRA | = (0 << ADPS2) | (1 << ADPS1] | (1 << ADPS0]; // ADC prescalar- ը սահմանել 8 - // 125KHz նմուշի արագություն 1 ՄՀց

ADMUX | = (1 << REFS0); // ADC- ի հղումը սահմանեք AVCC- ի վրա

ADMUX | = (1 << ADLAR); // Ձախ կարգավորեք ADC արդյունքը ՝ 8 բիթանոց հեշտ ընթերցում թույլ տալու համար

ADMUX & = 0xF0;

ADMUX | = 5; // MUX արժեքները պետք է փոխվեն ADC0- ի օգտագործման համար

ADCSRA | = (1 << ADFR); // ADC- ն սահմանել Անվճար գործարկման ռեժիմի

ADCSRA | = (1 << ԱԴԵՆ »); // Միացնել ADC- ն

ADCSRA | = (1 << ADSC); // Սկսել A2D փոխակերպումները մինչ (1) // Loop Forever

{

եթե (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // Միացնել LED1- ը

}

ուրիշ

{

ԼՈORՍ & = ~ (1 << PB1); // Անջատեք LED1- ը

}

}

վերադարձ 0;

}

Նախ հրապարակեք այս ձեռնարկը Սեղմեք այստեղ

Խորհուրդ ենք տալիս: