امتیاز موضوع:
  • 2 رأی - میانگین امتیازات: 3
  • 1
  • 2
  • 3
  • 4
  • 5
درخواست کمک در محاسبه طول پالس ورودی میکرو
نویسنده پیام
soonaeid آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 2
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #1
درخواست کمک در محاسبه طول پالس ورودی میکرو
بسم الله الرحمن الرحیم

احتیاج به برنامه ای دارم که مدت زمان یک یا صفر بودن ورودی پایه ها را محاسبه ( برحسب میلی ثانیه با دقت 50 میکرو ثانیه ) کند.


بعد از محاسبه آنها را با یک مقدار خاص جمع کند و در خروجی ظاهر کند
حداقل برای 3 پایه
پیشاپیش از همکاری شما سپاسگذارم


[تصویر:  Untitled.jpg]
۲۷-مهر-۱۳۹۱, ۲۰:۲۴:۰۴
ارسال‌ها
پاسخ
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13642
( 14739 تشکر در 4686 ارسال )
ارسال: #2
RE: درخواست کمک در محاسبه طول پالس ورودی میکرو
سلام
اگه با بسکام می خواهی می تونی از دستور pulsein استفاده کنی ولی با کدویژن کارت مشکل تره باید ازتایمر ها استفاده کنی
بعدش اینا عدد می دن و خودت باید با فرمول نویسی تبدیلشون کنی به زمان واقعیAt
کلا با بسکام آسونتره چون بیشتر دستوراش آماده هستWink

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

ارسال‌ها: 5
موضوع‌ها: 2
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #3
RE: درخواست کمک در محاسبه طول پالس ورودی میکرو
سلام. خودم خیلی راه ها به ذهنم میرسه و دوستان هم پیشنهاداتی کردند. اما خواهش میکنم در صورتی که برنامه عملی میشناسید برام بنویسیدش
۲۸-مهر-۱۳۹۱, ۱۵:۱۱:۲۲
ارسال‌ها
پاسخ
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13642
( 14739 تشکر در 4686 ارسال )
ارسال: #4
RE: درخواست کمک در محاسبه طول پالس ورودی میکرو
(۲۸-مهر-۱۳۹۱, ۱۵:۱۱:۲۲)soonaeid نوشته است: سلام. خودم خیلی راه ها به ذهنم میرسه و دوستان هم پیشنهاداتی کردند. اما خواهش میکنم در صورتی که برنامه عملی میشناسید برام بنویسیدش
این راه کاملا عملیه به ترتیب اجرا کن
1-سخت افزاری رو برات می گذارم روی بردبرد پیاده کن
2- یه پالس با طول 2 میلی ثانیه به آی سی بده
3- عددی که روی ال سی دی می بینی یاد داشت کن
تا اینجا عدد مورد نظر بدست می یاری
4- حالا سخت افزار اصلیت رو بساز
5-حالا اینو به برنامه اصلیت اضافه کن
کد:
pulsein a,pinb,0,1
a=a+عدد موردنظر
pulseout portb,1,a
تو این برنامه portb.0 ورودیه وportb.1 خروجیهWink
البته اگر می خواهی دقیق تر باشه از تایمر باید استفاده کنیRolleyes


فایل‌(های) پیوست شده
.rar   test.rar (اندازه: 16.53 KB / تعداد دفعات دریافت: 86)

۲۸-مهر-۱۳۹۱, ۱۶:۳۰:۲۰
ارسال‌ها
پاسخ
تشکر شده توسط : soonaeid, رسول
soonaeid آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 2
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #5
تشکر و درخواست راهنمایی
ضمن تشکر از شما ...
با این فرض که من هیچ سوادی در بیسیک ندارم کمک کنید.
خوب ... بنده قبلا به برنامه زیر رسیدم که البته به علت وجود حلقه نمیشه بیشتر از یک ورودی بهش اعمال کرد. این ساده ترین و ابتکاری ترین راه بوده. حالا میشه برنامه ای که بهم دادید رو هم به چند ورودی مستقل تعمیم داد تا خروجی هایی مستقل داشته باشند ؟
ضمن اینکه کدی که مجزا قرار دادید رو کجا باید اضافه کرد ؟
از همکاریتون بی نهایت سپاسگذارم
کد:
$regfile = "m16def.dat"
$crystal = 8000000
Config Pinb.1 = Input
Config Portb.2 = Output
Do
If Pinb.1 = 1 Then
Portb.2 = 1
L1:
If Pinb.1 = 1 Then Goto L1
Waitms 5
Portb.2 = 0
End If
Loop
۲۸-مهر-۱۳۹۱, ۱۹:۴۹:۵۸
ارسال‌ها
پاسخ
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13642
( 14739 تشکر در 4686 ارسال )
ارسال: #6
RE: درخواست کمک در محاسبه طول پالس ورودی میکرو
این روش فقط برای یک ورودی جواب میده
فکر نکنم بشه برای چندتا ورودی تعمیمش داد یا یه راهی هست که من نمی دونم مشکل اصلی اینه که میکرو یک کار و انجام میده ولی شما می خواهین چندتا کار رو با هم انجام بده که نمیشهConfusedConfused

۲۸-مهر-۱۳۹۱, ۲۱:۵۱:۰۷
ارسال‌ها
پاسخ
soonaeid آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 2
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #7
RE: درخواست کمک در محاسبه طول پالس ورودی میکرو
دوستان عزیز ... کسی راهی برای کمک سراغ نداره ؟
۲۹-مهر-۱۳۹۱, ۲۰:۱۲:۱۲
ارسال‌ها
پاسخ
vigraz آفلاین
عضو افتخاری
****

ارسال‌ها: 164
موضوع‌ها: 0
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 341
( 336 تشکر در 151 ارسال )
ارسال: #8
RE: تشکر و درخواست راهنمایی
(۲۸-مهر-۱۳۹۱, ۱۹:۴۹:۵۸)soonaeid نوشته است: ضمن تشکر از شما ...
با این فرض که من هیچ سوادی در بیسیک ندارم کمک کنید.
خوب ... بنده قبلا به برنامه زیر رسیدم که البته به علت وجود حلقه نمیشه بیشتر از یک ورودی بهش اعمال کرد. این ساده ترین و ابتکاری ترین راه بوده. حالا میشه برنامه ای که بهم دادید رو هم به چند ورودی مستقل تعمیم داد تا خروجی هایی مستقل داشته باشند ؟
ضمن اینکه کدی که مجزا قرار دادید رو کجا باید اضافه کرد ؟
از همکاریتون بی نهایت سپاسگذارم
کد:
$regfile = "m16def.dat"
$crystal = 8000000
Config Pinb.1 = Input
Config Portb.2 = Output
Do
If Pinb.1 = 1 Then
Portb.2 = 1
L1:
If Pinb.1 = 1 Then Goto L1
Waitms 5
Portb.2 = 0
End If
Loop
سلام
این کد در پیکر بندی کمی اشتباه است
مثلا در پیکر بندی 1.pin نوشته اید و این غلط است
و به چشم نیامده در بسکام در پیکربندی (config)
فقط port نوشته میشود چه بصورت ورودی باشد که در برنامه اصلی میشود
pin وچه بصورت خروجی که در برنامه میشود port

--اگر یک بیت را میخواهید بصورت ورودی یا خروجی پیکر بندی کنید از DDRX
هم میتوانید استفاده کنید بدون دستور CONFIG مثل 0=1.DDRb برای ورودی
ویا 1=1.DDRb برای خروجی (در کد ویجن هم این دستور استفاده میشود)--

پس درپیکر بندی 1.pinb را به 1.portb تغییر دهید

برای محاسبه زمان پالس ورودی یک تایمر میکرو را بصورت تایمر پیکر بندی کنید ویک
متغیر را در ابتدای هر حلقه با ان بارگزاری کنید ودر انتهای حلقه یک متغیر دیگر را
تفاضل این دو متغیر زمان پالس است البته با محاسبه پیکر بندی تایمر بر حسب پالس ساعت
که در اینجا 8 مگاهرتز است این روش همزمان روی دو واحد دیگر هم بکار میرود فقط اسم متغیرها را باید عوض کنید
مقادیر تفاضل شده متغیرها را همزمان بر روی LCD میتوانید نمایش دهید


برای اضافه کردن 5 میلی ثانیه بصورتی که بر روی واحدهای دیگر تاخیر ایجاد نکند هم
باید از تایمر استفاده کنید نه از waitms
به این ترتیب که بجای 5 waitms در برنامه اتان از یک حلقه تاخیر تایمری استفاده
کنید وچون تایمر را نباید stop-start کنید باز هم از دو متغیر استفاده کنید
ومقدار تفاضل این دو متغیر را شرط خروج از حلقه قرار دهید
به این صورت همه واحدها مستقل از یکدیگر تاخیر ایجاد میکنند

موفق باشید
(آخرین ویرایش در این ارسال: ۲۹-مهر-۱۳۹۱, ۲۲:۳۸:۲۲، توسط vigraz.)
۲۹-مهر-۱۳۹۱, ۲۱:۲۱:۵۸
ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, رسول
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13642
( 14739 تشکر در 4686 ارسال )
ارسال: #9
RE: درخواست کمک در محاسبه طول پالس ورودی میکرو
(۲۹-مهر-۱۳۹۱, ۲۱:۲۱:۵۸)vigraz نوشته است:
(۲۸-مهر-۱۳۹۱, ۱۹:۴۹:۵۸)soonaeid نوشته است: ضمن تشکر از شما ...
با این فرض که من هیچ سوادی در بیسیک ندارم کمک کنید.
خوب ... بنده قبلا به برنامه زیر رسیدم که البته به علت وجود حلقه نمیشه بیشتر از یک ورودی بهش اعمال کرد. این ساده ترین و ابتکاری ترین راه بوده. حالا میشه برنامه ای که بهم دادید رو هم به چند ورودی مستقل تعمیم داد تا خروجی هایی مستقل داشته باشند ؟
ضمن اینکه کدی که مجزا قرار دادید رو کجا باید اضافه کرد ؟
از همکاریتون بی نهایت سپاسگذارم
کد:
$regfile = "m16def.dat"
$crystal = 8000000
Config Pinb.1 = Input
Config Portb.2 = Output
Do
If Pinb.1 = 1 Then
Portb.2 = 1
L1:
If Pinb.1 = 1 Then Goto L1
Waitms 5
Portb.2 = 0
End If
Loop
سلام
این کد در پیکر بندی کمی اشتباه است
مثلا در پیکر بندی 1.pin نوشته اید و این غلط است
و به چشم نیامده در بسکام در پیکربندی (config)
فقط port نوشته میشود چه بصورت ورودی باشد که در برنامه اصلی میشود
pin وچه بصورت خروجی که در برنامه میشود port

--اگر یک بیت را میخواهید بصورت ورودی یا خروجی پیکر بندی کنید از DDRX
هم میتوانید استفاده کنید بدون دستور CONFIG مثل 0=1.DDRb برای ورودی
ویا 1=1.DDRb برای خروجی (در کد ویجن هم این دستور استفاده میشود)--

پس درپیکر بندی 1.pinb را به 1.portb تغییر دهید

برای محاسبه زمان پالس ورودی یک تایمر میکرو را بصورت تایمر پیکر بندی کنید ویک
متغیر را در ابتدای هر حلقه با ان بارگزاری کنید ودر انتهای حلقه یک متغیر دیگر را
تفاضل این دو متغیر زمان پالس است البته با محاسبه پیکر بندی تایمر بر حسب پالس ساعت
که در اینجا 8 مگاهرتز است این روش همزمان روی دو واحد دیگر هم بکار میرود فقط اسم متغیرها را باید عوض کنید
مقادیر تفاضل شده متغیرها را همزمان بر روی LCD میتوانید نمایش دهید


برای اضافه کردن 5 میلی ثانیه بصورتی که بر روی واحدهای دیگر تاخیر ایجاد نکند هم
باید از تایمر استفاده کنید نه از waitms
به این ترتیب که بجای 5 waitms در برنامه اتان از یک حلقه تاخیر تایمری استفاده
کنید وچون تایمر را نباید stop-start کنید باز هم از دو متغیر استفاده کنید
ومقدار تفاضل این دو متغیر را شرط خروج از حلقه قرار دهید
به این صورت همه واحدها مستقل از یکدیگر تاخیر ایجاد میکنند

موفق باشید
سلام آقای vigraz مشکل اصلی اینه که همزمان نمیشه سه تا ورودی این کارو ببکنن شما راهی سراغ ندارینShy

۲۹-مهر-۱۳۹۱, ۲۳:۱۶:۴۸
ارسال‌ها
پاسخ
vigraz آفلاین
عضو افتخاری
****

ارسال‌ها: 164
موضوع‌ها: 0
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 341
( 336 تشکر در 151 ارسال )
ارسال: #10
RE: درخواست کمک در محاسبه طول پالس ورودی میکرو
(۲۹-مهر-۱۳۹۱, ۲۳:۱۶:۴۸)hadikh73 نوشته است:
(۲۹-مهر-۱۳۹۱, ۲۱:۲۱:۵۸)vigraz نوشته است:
(۲۸-مهر-۱۳۹۱, ۱۹:۴۹:۵۸)soonaeid نوشته است: ضمن تشکر از شما ...
با این فرض که من هیچ سوادی در بیسیک ندارم کمک کنید.
خوب ... بنده قبلا به برنامه زیر رسیدم که البته به علت وجود حلقه نمیشه بیشتر از یک ورودی بهش اعمال کرد. این ساده ترین و ابتکاری ترین راه بوده. حالا میشه برنامه ای که بهم دادید رو هم به چند ورودی مستقل تعمیم داد تا خروجی هایی مستقل داشته باشند ؟
ضمن اینکه کدی که مجزا قرار دادید رو کجا باید اضافه کرد ؟
از همکاریتون بی نهایت سپاسگذارم
کد:
$regfile = "m16def.dat"
$crystal = 8000000
Config Pinb.1 = Input
Config Portb.2 = Output
Do
If Pinb.1 = 1 Then
Portb.2 = 1
L1:
If Pinb.1 = 1 Then Goto L1
Waitms 5
Portb.2 = 0
End If
Loop
سلام
این کد در پیکر بندی کمی اشتباه است
مثلا در پیکر بندی 1.pin نوشته اید و این غلط است
و به چشم نیامده در بسکام در پیکربندی (config)
فقط port نوشته میشود چه بصورت ورودی باشد که در برنامه اصلی میشود
pin وچه بصورت خروجی که در برنامه میشود port

--اگر یک بیت را میخواهید بصورت ورودی یا خروجی پیکر بندی کنید از DDRX
هم میتوانید استفاده کنید بدون دستور CONFIG مثل 0=1.DDRb برای ورودی
ویا 1=1.DDRb برای خروجی (در کد ویجن هم این دستور استفاده میشود)--

پس درپیکر بندی 1.pinb را به 1.portb تغییر دهید

برای محاسبه زمان پالس ورودی یک تایمر میکرو را بصورت تایمر پیکر بندی کنید ویک
متغیر را در ابتدای هر حلقه با ان بارگزاری کنید ودر انتهای حلقه یک متغیر دیگر را
تفاضل این دو متغیر زمان پالس است البته با محاسبه پیکر بندی تایمر بر حسب پالس ساعت
که در اینجا 8 مگاهرتز است این روش همزمان روی دو واحد دیگر هم بکار میرود فقط اسم متغیرها را باید عوض کنید
مقادیر تفاضل شده متغیرها را همزمان بر روی LCD میتوانید نمایش دهید


برای اضافه کردن 5 میلی ثانیه بصورتی که بر روی واحدهای دیگر تاخیر ایجاد نکند هم
باید از تایمر استفاده کنید نه از waitms
به این ترتیب که بجای 5 waitms در برنامه اتان از یک حلقه تاخیر تایمری استفاده
کنید وچون تایمر را نباید stop-start کنید باز هم از دو متغیر استفاده کنید
ومقدار تفاضل این دو متغیر را شرط خروج از حلقه قرار دهید
به این صورت همه واحدها مستقل از یکدیگر تاخیر ایجاد میکنند

موفق باشید
سلام آقای vigraz مشکل اصلی اینه که همزمان نمیشه سه تا ورودی این کارو ببکنن شما راهی سراغ ندارینShy
سلام
در همانجا توضیح داده ام
منظور از واحدها همان پایه ها یا ورودیها است

دلیلی ندارد که این حلقه برای محاسبه یک ورودی برای ورودیهای دیگر
بکار نرود چون مشکل اصلی تاخیر بصورت waitms 5 بود که توسط حلقه
تاخیر با تفاضل دو متغیر جایگزین میشود وبه ترتیب شمارش مقدار تایمر
تاخیر ایجاد میکند وهر واحد یا همان ورودی مستقل است وهمزمان میتواند
پابه های خروجی را صفر یا یک کند تایمر توسط هیچ کدام از ورودیها خاموش یا روشن نمی شود ودائم کار میکند

یک مقدار دقت کنید خواندن تایمر در یک حلقه میتواند در چند حلقه همزمان اجرا شود وخروجیها تغییر کنند تنها تاخیر در اینجا تاخیر ترتیب اجرای خطوط برنامه است که در این برنامه قابل اغماض است ولی همین تاخیر را هم میشود در برنامه منظور کرد -در حد 3تا5 میکرو ثانیه برای هر حلقه که برای دوحلقه میشود حداکثر 10
میکرو ثانیه تا حلقه سوم اجرا شود که این خیلی از ضریب خطای درخواست برنامه هم پایینتر است -هر سه IF برای ورودیها در یک LOOP قرار میگیرند وبرنامه در یک LOOp هر سه
ورودی را بررسی میکند خودتان تحلیل کنید نتیجه میگیرید

من فکر میکنم این برنامه واضح است اما اگر باز واضح نبود
کدش را بنویسم( البته این زیاد کار در ستی نیست که من این کد را بنویسم)

موفق باشید
(آخرین ویرایش در این ارسال: ۳۰-مهر-۱۳۹۱, ۰۳:۴۲:۳۷، توسط vigraz.)
۲۹-مهر-۱۳۹۱, ۲۳:۴۶:۲۷
ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73
hossein22 آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: تير ۱۳۹۳

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #11
RE: درخواست کمک در محاسبه طول پالس ورودی میکرو
آقایی که سوال داشتی و بیسکام بلد نبودید. به جواب رسیدید آیا؟
به منم کمک کنید چون منم این مشکلو دارم. یه پالس دارم و میخام مدت زمان پالس اول
تا پالس بعدی رو نمایش بدم با کد ویژن. هر چقدرم راجب تایمر کانتر سرچ میکنم هیچی متوجه نمیشم.
اااااااااااااایییییییییییییی کمککککک.
(آخرین ویرایش در این ارسال: ۰۹-تير-۱۳۹۳, ۱۸:۵۲:۴۰، توسط babyy.)
۰۹-تير-۱۳۹۳, ۱۸:۲۵:۰۴
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  شمارش تعداد پالس های یک دستور؟ Ambassador 2 2,996 ۲۷-اردیبهشت-۱۳۹۶, ۱۶:۲۰:۵۶
آخرین ارسال: Ambassador
  ورودی های تابع hosseinip 1 2,330 ۱۴-فروردین-۱۳۹۶, ۰۳:۵۸:۳۳
آخرین ارسال: babyy
  تست میکرو saber.k 10 14,048 ۰۹-شهریور-۱۳۹۵, ۰۲:۰۹:۲۷
آخرین ارسال: yadulla fazel
  درخواست مدار محاسبه سرعت با سنسور مادون قرمز maxell2500 8 6,690 ۲۸-اردیبهشت-۱۳۹۵, ۰۰:۱۰:۴۱
آخرین ارسال: maxell2500
  راهنمایی برای تولید پالس vistac2000 15 17,041 ۰۸-اردیبهشت-۱۳۹۵, ۰۰:۳۹:۴۶
آخرین ارسال: omid_phoenix
  سوال درباره نحوه تولید پالس مربعی sinohe 37 41,329 ۱۷-اسفند-۱۳۹۴, ۱۸:۳۶:۲۴
آخرین ارسال: sharin
  [سوال] اندازه گیری فرکانس پالس مربعی mohza 6 6,886 ۳۰-اردیبهشت-۱۳۹۴, ۲۱:۴۴:۵۶
آخرین ارسال: sharin
  [سوال] راهنمایی برای ساخت قطار پالس توسط atmega32 hamze_b 8 6,163 ۱۳-اردیبهشت-۱۳۹۴, ۱۶:۰۴:۲۴
آخرین ارسال: student-p
  [سوال] عرض پالس(duty cycle) hasssan85 4 2,942 ۱۶-دى-۱۳۹۳, ۰۳:۲۶:۰۵
آخرین ارسال: omid_phoenix
  [سوال] کمک برای تغییر عرض پالس(duty cycle) hasssan85 1 2,287 ۱۶-دى-۱۳۹۳, ۰۳:۱۳:۵۳
آخرین ارسال: omid_phoenix

پرش به انجمن:


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

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