10 لایک
-
یک تایمر ک ریست بشه سراغ ندارید؟
-
میتونی به پایه اینتراپت وصلش کنی بعد توی تابع مربوط به اینتراپت بنویسی که متغیر مربوط به شمارنده رو ریست کنه
باید تو کدت دستت ببری جانم
-
میشه بگید چطوری؟
من الان با آردوینو 2560 کار میکنم
پایه 2 اینتراپت صفره
اما نمیدنم چطور فعالش کنم
اگه کمکم کنید مرسی
-
خب کافیه از دستور attachInterrupt() استفاده کنید
نحوه استفاده از این دستور هم در لینک زیر هست:
Arduino - AttachInterrupt
-
مرسی.
من قبلا هم این صفحه رو دیده بودم اما چند تا اشکال داشتم
اینکه چ طور میشه پایه اینتراپرو مشخص کرد که داری با اینتراپ چند کار میکنی
یا اینکه من با استفاده از همین دستور برای 2 تا پایه که خروجی مشخصشون کرده بودم این دستور رو قرار دادم به این صورت :
int pin = 13;
int pinled = A0;
void setup()
{
pinMode(pin, OUTPUT);
pinMode(pinled, OUTPUT);
attachInterrupt(0, blink, CHANGE);
}
void loop()
{
digitalWrite(pin, LOW);
delay(1000);
digitalWrite(pin, HIGH);
delay(500);
}
void blink()
{
digitalWrite(pinled, LOW);
delay(10000);
digitalWrite(pinled, HIGH);
delay(500);
}
و نتیجه ای که گرفتم این بود که پایه 13 همیشه همین طور چشمک زن کار میکرد و ایه A0 روشن بود اما وقتی پایه 2 به تغذیه وصل میشد پایه A0 هم پشمک زن کار یکرد اما سرعت روش و خاموش شدنش اصلا اون چیزی نبود که در برنامه هست.
من میخوام که وقتی تو برنامم یک کلید خاصی روشن میشه LCD تایم رو نشون بده بعد تایم RESET بشه و دوباره شمارش شروع بشه.
-
دوستان تا به حال با تایمر های خود میکرو ثل تایم 1 کار کردید؟
من از تو خود سایت آردوینو در مورد تایمر یک یک صفحه و چند تا برنامه دیدم که آخرش هم اینو نوشته بود:
Basic Usage
The timer is configured to repetitively measure a period of time, in microseconds. At the end of each period, an interrupt function can be run. The PWM pins can also be configured to switch during a portion of the period.
If using TimerThree, replace "Timer1" with "Timer3".
Configuration
Timer1.initialize(microseconds);
Begin using the timer. This function must be called first. "microseconds" is the period of time the timer takes.
Timer1.setPeriod(microseconds);
Set a new period after the library is already initialized.
Run Control
Timer1.start();
Start the timer, beginning a new period.
Timer1.stop();
Stop the timer.
Timer1.restart();
با توجه ب این توصیحات این تایمر هم stop داره هم reset اما من نمیدونم چطور باید ازش استفاده کنم
یعنی نمیدونم این پایه رو چطور رو lcd نمایش بدم
لطفا اگه میدونید کمکم کنید
مرسی
ویرایش توسط ss13 : 05-28-2015 در ساعت 09:18 AM
-
واقعا هیچ کس اینجا نمیتونه با آردوینو یک ساعت روی lcd طراحی کنه که reset داشته باشه؟
یک توضیح مختصری هم از برنامه بدید ممنون میشم.
-
-
مرسی از معرفی این سایت
چون با رجیستر ها مقدار دهی انجام داده بهتر میشه برنامه رو درک کرد
اما این برنامه رو چط.ر میشه روی lcd نمایش داد؟
مثلا برنامه زیر روچطور در lcdنمایش بدم؟
#define ledPin 13
void setup()
{
pinMode(ledPin, OUTPUT);
// initialize timer1
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 31250; // compare match register 16MHz/256/2Hz
TCCR1B |= (1 << WGM12); // CTC mode
TCCR1B |= (1 << CS12); // 256 prescaler
TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt
interrupts(); // enable all interrupts
}
ISR(TIMER1_COMPA_vect) // timer compare interrupt service routine
{
digitalWrite(ledPin, digitalRead(ledPin) ^ 1); // toggle LED pin
}
void loop()
{
// your program here...
}
یک سوال دیگه هم داشتم:
این خط چطور رجیستر timsk رو مقدار دهی کرده؟
TIMSK1 |= (1 << OCIE1A);
-
سلام در مطلب زیر آوزش کار با تایمر کانتر را قرار دادم
بخش 1
بخش 2
مجوز های ارسال و ویرایش
- شما نمیتوانید موضوع جدیدی ارسال کنید
- شما امکان ارسال پاسخ را ندارید
- شما نمیتوانید فایل پیوست کنید.
- شما نمیتوانید پست های خود را ویرایش کنید
-
مشاهده قوانین انجمن
SEO by vBSEO