امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
تایمر0
نویسنده پیام
alfaalarm آفلاین
كاربر تک ستاره
*

ارسال‌ها: 47
موضوع‌ها: 16
تاریخ عضویت: تير ۱۳۹۰

تشکرها : 35
( 10 تشکر در 7 ارسال )
ارسال: #1
تایمر0
سلام من یه مگا8 دارم با یه کریستال 4مگا هرتز
می خوام زمان تاخیر 30 ثانیه با تایمر0 ایجاد کنم.هر کار کردم نشد.از فرمولهای تایمر هم استفاده کردم.ولی تاخیر خیلی بیشتر میشه.اگه ممکنه یه مثال برام بزنید همراه با نحوه محاسبه فرمول
ممنون
۲۵-فروردین-۱۳۹۱, ۱۰:۳۱:۱۹
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #2
RE: تایمر0
سلام.

شما زمان 1 ثانيه رو مي توني بسازي ؟
روال به اين صورت هست كه بعد از تعيين prescale و ...
هر بار كه سرريز رخ مي ده ، مي ره تو وقفه و اونجا چك مي كنه كه چندبار اومده به وقفه ، فرض كنيد با 4000 بار اومدن به وقفه 1ثانيه ي ما ساخته مي شه، درست ؟
حالا بعد از اين شرط خط اول كه برآورده شد ، باز يه متغيير جديد بذار براي شمارش كه وقتي به 30 رسيد ، يعني زمان 30 ثانيه ساخته شده و شرط دوم در روال وقفه هم برآورده مي شه و خواسته ي شما در خطوط بعدي اجرا مي شه ...

۲۵-فروردین-۱۳۹۱, ۱۴:۰۰:۳۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : abbasalifix
alfaalarm آفلاین
كاربر تک ستاره
*

ارسال‌ها: 47
موضوع‌ها: 16
تاریخ عضویت: تير ۱۳۹۰

تشکرها : 35
( 10 تشکر در 7 ارسال )
ارسال: #3
RE: تایمر0
شرمنده من متوجه نشدم.
اگه بامثال بگید فکر کنم بهتره
راستش من دستورات تایمر را میدونم ولی این که زمان سرریز شدن راچطور بدست بیارم برام مشکله.
البته چندتا فرمول دیدم از روی اونها محاسبه کردم ولی نتیجه نداد


۲۵-فروردین-۱۳۹۱, ۱۴:۳۱:۴۰
ارسال‌ها
پاسخ
تشکر شده توسط : abbasalifix
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #4
RE: تایمر0
يه مثال با كريستال 8MHz و Prescale = 8 مي زنم ، روش كار رو كه فهميديد مقادير رو براي مورد خودتون بدست بياريد.
8/8=1MHz كه فركانس شمارش هست ، 1/1M=1us كه زمان شمارش يك واحد شمارنده هست.
به تايمر صفر مقدار اوليه ي 6 مي دم. به اين ترتيب زمان لازم براي سرريز شدن تايمر0 كه يه شمارنده ي 8 بيتيه 250us مي شه ...
1 ثانيه چند ميكرو ثانيه هست ؟
1s=250us*4000
يعني با مقدار اوليه ي 6 هر وقت 250 تا شمردم ، مقدار شمارنده يك واحد بيشتر از 255 مي شه و در اين لحظه شمارنده سرريز مي شه و يك وقفه اتفاق مي افته.
در زير روال وقفه مي نويسم ...
کد php:
timm0:
m=m+1
if m<4000 then
timer0
=6
return
endif
' كد هاي مورد نظر كه بعد از هر 1ثانيه بايد اجرا بشه
.
.
.
m=0
timer0=6
return 
----------------------
حالا براي زمان 30 ثانيه ، مثل روش قبل فقط يه شرط ديگه اضافه مي كنيم ...

کد php:
timm0:
m=m+1
if m<4000 then
timer0
=6
return
endif
m=0
n
=n+1
if n<30 then
timer0
=6
return
endif
' كد هاي مورد نظر كه بعد از هر 30 ثانيه بايد اجرا بشه
.
.
.
m=0
n=0
timer0=6
return 

(آخرین ویرایش در این ارسال: ۲۵-فروردین-۱۳۹۱, ۱۶:۲۳:۰۵، توسط sharin.)
۲۵-فروردین-۱۳۹۱, ۱۶:۲۱:۱۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : alfaalarm, abbasalifix, WhiteNoise
alfaalarm آفلاین
كاربر تک ستاره
*

ارسال‌ها: 47
موضوع‌ها: 16
تاریخ عضویت: تير ۱۳۹۰

تشکرها : 35
( 10 تشکر در 7 ارسال )
ارسال: #5
RE: تایمر0
سلام
اگه میشه این برنامه را کنترل کنید.نمی دونم چرا تو پروتئوس کار نمیکنه.
کد:
regfile = "m8def".dat$
crystal = 8000000$
Dim M As Word
Dim N As Word
Config Portb = Output

Config Timer0 = Timer , Prescale = 8
Enable Interrupts
Enable Timer0
Start Timer0
On Timer0 1

1:
M = M + 1
If M < 4000 Then
Timer0 = 6
Return
End If
Set Portb.3
M = 0
N = N + 1
If N < 30 Then
Timer0 = 6
Return
End If
Set Portb.4

M = 0
N = 0
Timer0 = 6
Return
(آخرین ویرایش در این ارسال: ۱۷-مرداد-۱۳۹۳, ۱۶:۳۱:۱۹، توسط behzady.)
۰۶-اردیبهشت-۱۳۹۱, ۱۷:۳۵:۵۱
ارسال‌ها
پاسخ
تشکر شده توسط : WhiteNoise
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #6
RE: تایمر0
پروتوس رو ول كنيد ...
مخصوصا در بحث تايمينگ ...

كدتون رو در عمل چك كنيد ...

۰۶-اردیبهشت-۱۳۹۱, ۱۸:۵۸:۱۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : silent70un, behzady, WhiteNoise, helma
student123 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 27
موضوع‌ها: 7
تاریخ عضویت: اردیبهشت ۱۳۹۳

تشکرها : 16
( 2 تشکر در 2 ارسال )
ارسال: #7
Question  RE: تایمر0
سلام
من میخوام با استفاده از تایمر صفر، 60ثانیه درست کنم.فرکانس میکرو من 16 مگاهرتزه و تقسیم بر8.توضیحات شما رو خوندم ولی توی برنامه ی من یه وقفه ی دیگه از تایمر 1 وجود داره که یه pwm درست میکنه.در اینجا هم باید وقفه بذارم.و میکرو خیلی درگیر میشه باید چیکار کنم؟؟؟ بعد این 60 ثانیه میخوام وقفه ای داشته باشم تا کاری که میخواهم انجام دهد.
(آخرین ویرایش در این ارسال: ۱۷-مرداد-۱۳۹۳, ۱۵:۵۴:۱۱، توسط student123.)
۱۷-مرداد-۱۳۹۳, ۱۵:۵۰:۰۱
ارسال‌ها
پاسخ
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #8
RE: تایمر0
شما برای PWM وقفه گذاشتید؟!!!
-
لذوما میکرو خیلی درگیر نمیشه باید آزمایش کنید + PRESCALE رو چرا 8 گذاشتید خوب مگه 60 ثانیه نمی خواید مقدارشو بیشتر کنید!

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۱۷-مرداد-۱۳۹۳, ۱۶:۳۲:۳۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : WhiteNoise, رسول, babyy
student123 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 27
موضوع‌ها: 7
تاریخ عضویت: اردیبهشت ۱۳۹۳

تشکرها : 16
( 2 تشکر در 2 ارسال )
ارسال: #9
RE: تایمر0
اوکی .فهمیدم.مقدارشو 1024 میذارم.اونوقت16 میلی ثانیه میشه.(اگر از 6تا 256 تغییر کنه)برای 60 ثانیه از وقفه سرریز استفاده میکنم ولی حالا موقع رسیدن به 60 ثانیه باید چیکار کنم؟دستوراتمو کجا بنویسم؟
(آخرین ویرایش در این ارسال: ۱۷-مرداد-۱۳۹۳, ۱۷:۳۶:۴۵، توسط student123.)
۱۷-مرداد-۱۳۹۳, ۱۷:۳۴:۳۱
ارسال‌ها
پاسخ
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #10
RE: تایمر0
شما توی همون روتین وقفه چک کن که اگه 60 ثانیه شده بره به تابعی که برای 60 ثانیه نوشتی

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۱۷-مرداد-۱۳۹۳, ۱۸:۰۴:۴۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : WhiteNoise, babyy, رسول, helma


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS