یک تایمر ک ریست بشه سراغ ندارید؟
نمایش نسخه قابل چاپ
یک تایمر ک ریست بشه سراغ ندارید؟
میتونی به پایه اینتراپت وصلش کنی بعد توی تابع مربوط به اینتراپت بنویسی که متغیر مربوط به شمارنده رو ریست کنه
باید تو کدت دستت ببری جانم
میشه بگید چطوری؟
من الان با آردوینو 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 نمایش بدم
لطفا اگه میدونید کمکم کنید
مرسی
واقعا هیچ کس اینجا نمیتونه با آردوینو یک ساعت روی lcd طراحی کنه که reset داشته باشه؟
یک توضیح مختصری هم از برنامه بدید ممنون میشم.
سلام یه سری به لینک زیر بزنید:
Arduino 101: Timers and Interrupts | Let's Make Robots!
مرسی از معرفی این سایت
چون با رجیستر ها مقدار دهی انجام داده بهتر میشه برنامه رو درک کرد
اما این برنامه رو چط.ر میشه روی 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);