Სარჩევი:

არდუინო - პერიოდული შეწყვეტა: 4 ნაბიჯი
არდუინო - პერიოდული შეწყვეტა: 4 ნაბიჯი

ვიდეო: არდუინო - პერიოდული შეწყვეტა: 4 ნაბიჯი

ვიდეო: არდუინო - პერიოდული შეწყვეტა: 4 ნაბიჯი
ვიდეო: GPS არ გაქვთ? არსებობს გამოსავალი! Ublox M8N GPS-ის პრობლემის გადაჭრა U-Center პროგრამაში 2024, ივლისი
Anonim
არდუინო - პერიოდული შეფერხება
არდუინო - პერიოდული შეფერხება

ეს ინსტრუქცია ეხება პერიოდული შეფერხების გამოყენებას Arduino პროგრამებში. ეს არის ნაბიჯი დაწყებული Arduino პროგრამისტისთვის, რომელმაც იცის, რომ Arduino– ს მეტის გაკეთება შეუძლია, მაგრამ მან არ იცის როგორ გააკეთოს ეს.

თუ არის შესრულების პრობლემა, მე ვვარაუდობ, რომ თქვენ იყენებთ ერთ ან მეტ ფუნქციას (). ხრიკი იმაში მდგომარეობს, რომ დავაღწიოთ შეფერხების () ფუნქციას (ფუნქციებს) და შეცვალოთ შეწყვეტა. შეფერხების () ფუნქცია აიძულებს არდუინოს არაფერი გააკეთოს, სანამ ელოდება () დასრულებას. შეფერხების გამოყენება საშუალებას აძლევს თქვენს პროგრამას გააკეთოს სხვა საქმეები, სანამ ელოდება შეფერხების დასრულებას. ჩვეულებრივ არის უზარმაზარი გამოუყენებელი მკვდარი დრო, რომელიც შეიძლება გამოყენებულ იქნას სხვა საქმეებისთვის დაგვიანების გამოყენებისას (). წყვეტის გამოყენება ამ პრობლემას აგვარებს.

ნაბიჯი 1: შეწყვეტის დამმუშავებელი

1. დაამატეთ შეწყვეტის დამმუშავებელი თქვენს პროგრამას. უბრალოდ დააკოპირეთ და ჩასვით სადმე კონფიგურაციის ზემოთ ();

const ხელმოუწერელი გრძელი TIMER0_COUNT = 500; // 500 წამში ტაიმერის ინტერვალი

// TIMER0 შეწყვეტის დამმუშავებელი არასტაბილური bool დრო = ყალბი; ISR (TIMER0_COMPA_vect) {სტატიკური ხელმოუწერელი გრძელი რაოდენობა = 0; თუ (++ რაოდენობა> TIMER0_COUNT) {რაოდენობა = 0; დრო = ჭეშმარიტი; // დრო დაყენებულია ჭეშმარიტად ყოველ TIMER0_COUNT ms} // (დრო უნდა გაიწმინდოს მთავარ რუტინაში)}

ნაბიჯი 2: დააყენეთ პერიოდული დროის ინტერვალი

2. დააყენეთ დროის ინტერვალი. ეს რუტინული ღორი თავს იკავებს TIMER0 შეფერხებაზე, რომელიც იწვის ყოველ ~ 1 წამში.

თქვენი "ინტერვალი" არის დამუშავების TIMER0 შეფერხებების რაოდენობა. თითოეული ინტერვალი არის m 1 წამში, ასე რომ თქვენ ნამდვილად ადგენთ რამდენი TIMER0 შეფერხების დათვლას თქვენი ინტერვალის გააქტიურებამდე. IOW, დააყენეთ ცვლადი TIMER0_COUNT იმ მილიწამზე, რომლის ლოდინიც გსურთ. მაგალითად, გამოიყენეთ 500 წამის ნახევარი. გამოიყენეთ 3000 3 წამის განმავლობაში.

ნაბიჯი 3: ინიციალიზაციის შეწყვეტა

3. დაამატეთ "TIMER0 ინიციალიზაციის" კოდი თქვენს setup () მეთოდს. ისევ და ისევ, უბრალოდ დააკოპირეთ და ჩასვით setup- ში ().

// *** TIMER0 ინიციალიზაცია ***

cli (); // გამორთეთ ყველა შეფერხება TIMSK0 = 0; // გამორთეთ ტაიმერი 0 ქვედა jitter OCR0A = 0xBB; // თვითნებური შეწყვეტის რაოდენობა TIMSK0 | = _BV (OCIE0A); // ღორი უკან გადადის interrupt sei (); // ჩართეთ შეფერხებები ისევ

ნაბიჯი 4: სად დაამატოთ თქვენი კოდი

4. დაამატეთ "დროის შემოწმების" კოდი თქვენს მარყუჟში () მეთოდს. დააკოპირეთ და ჩასვით მარყუჟში ().

თუ (დრო) {

დრო = ყალბი; // გააკეთე რამე აქ}

"დრო = ყალბი;" ხაზი მნიშვნელოვანია. ამ ხაზის გარეშე "რაღაცის გაკეთება აქ" ხაზი (ები) შესრულდება ყოველ ჯერზე, როდესაც პროგრამა ასრულებს მარყუჟს ().

რა თქმა უნდა, თქვენ შეცვლით საკუთარ საქმიანობას "გააკეთე აქ რამე" ხაზში. დაიწყეთ ტექსტის დაბეჭდვით ან LED განათებით.

Მზად ხარ!

გირჩევთ: