سلام ممنون از پاسختون
capture timer 1
در تایمر میکروکنترلرها مثل ATMEGA و میکروکنترلرهای PIC چند نوع گزینه یا عملکرد دارند ,1 : در مد تایمر که حالت نرمال است , 2: مد pwm و انواعش ,3: مد کانتر تایمر ,4: مد کمپار مقایسه ای ,5: مد کپچر تایمر
هر کدام از این مد ها عملیات مخصوص به خودشو انجام میدن , اما مد capture timer 1 (کپچر تایمر1) و مد counter timer (کانتر تایمر ) از بعضی امکانات شبیه به هم عمل میکنند یا نقاط مشترکی دارند .(در ضمن معمولا در avr در سری 8 بیتی atmega فقط تایمر شماره 1 دارای خصوصیت capture timer است , به جز مدلهای مثل atmega64 یا atmega128 وبه بالا که دارای تایمر شماره 3 هستند که دقیقا مثل تایمر شماره 1 هست ,و 16 بیتی هستند , تایمر شماره 3 هم مثل تایمر 1 دارای مد capture میباشد ولی تایمر 2 و تایمر 0 از این خاصیت بی نصیب هستند)
اما در مد capture timer میاد یه پالس رو که به ورودی CAPTURE TIMER وصل هست رو نسبت به لبه بالا رونده یا (RISSING) پالس یا نسبت به لبه پایین رونده یا (FALLING) پالس ورودی تحریک میکنه ودر همین زمان که تحریک شد پالس رو کپچر یا به معنی فارسیش میشه ( تسخیر ) یا به قول خودمون رکورد میکنه به محض این که این کار رو کرد محتواش رو در رجیستر داده capture timer میریزه ودر این هنگام پرچم وقفه یا interupt کپچر تایمر فعال میشه وبا اجرا و یا اجازه وقفه سراسری یا انتراپت سراسری زیر برنامه وقفه کپچر تایمر اجرا یا دستوراتی که در زیر برنامه کپچر تایمر نوشتیم خوانده و اجرا میشه
اما حالت یا لبه بالا رونده یا rissing یعنی موقعی که پالس صفر یا low هست بلا فاصله پالس 1 یا high میشه یعنی همون لحظه رو به بالا یا 1 شدن پالس که بهش میگن لبه بالا رونده و لبه پایین رونده یا falling هم دقیقا برعکس لبه بالا رونده هست یعنی پالس 1 یا high هست بلا فاصله پالس صفر یا low میشه رو میگن لبه پایین رونده (زمان پایین اومدن پالس)
دقیقا شبیه به همون مدار های ماینر و مایندایور مثلا در مایندایور بعد از کویل که به سمت اپ امپ میاد, پالس کوچیکی با یه مقاومت 2/2کیلو به پایه بیس ترانزیستور q3 یا همون BC547 وبعد از پایه کلکتور ترانزیستور به پین PB0 اتمگا وصل شده , خب شما میدونید که پین PB0 اتمگا8 همون پایه ICP1 یا پین ورودی CAPTURE TIMER 1 هستش حالا فهمیدید منظورم چیه , در اصل در یک روتین, پالس راه انداز وفرکانسی که باهاش هست رو تولید کرده واز یکی از پایه های میکرو به بیرون میدن بعد همین پالس با تغییرات وگذشت زمان بسیار کم( در بعضی فلزیابها در حد نانو هست البته اگه سرعت بالایی داشته باشد ولی معمولا چون برنامه نویسیه فلزیابهای مثل ماینر ومایندایور که سنگین و منوهای زیادی داره به حدود 1 تا 20 میکرو ثانیه هم میرسه ) دوباره بوسیله کپچر تایمر ویا وقفه های خارجی یا EXTERNAL ویا کانتر تایمر ها نسبت به لبه های بالا رونده یا پایین رونده پالس ( که به نوع پالس راه انداز که اونهم باز به نوع ماسفت که P باشه یا N ,وهمینطور درایور ماسفت وانتخاب طراح در نوع طراحی مدار ) بستگی داره , خوب بعد از تحریک شدن وقفه CAPTURE TIMER اجرا شده و در زیر برنامه یا روتین وقفه کپچر تایمر بقیه ماجرا یعنی DELAY بعدش سمپل 1 وهمینطور بقیه موارد اجرا میشود
اما به خاطر اینکه در بعضی از فلزیاب ها که همون نکته بالا رو گفتم که زمانی طول میکشه تا پالس با کپچر تایمر کپچر بشه یا تحریک بشه تا روتین وقفه کپچر تایمر اجرا بشه حدود 1 تا 20 میکرو ثانیه یا حالا کمتر یا زیاد تر زمان میبره , خب در فلزیابی مثل PD3200 اگه مثلا 25 میکرو ثانیه این زمان طول بکشه یعنی یک دیلی (DELAY ) با زمان 25 میکروثانیه همیشه ثابت یا حداقل زمان DELAY رو داریم خب شما میدونید که انتخاب زمان DELAY باید حداقلش 1 میکرو ثانیه بعد از پالس راه انداز باشه تا نسبت به طراحی مدار و نوع کویل و اپ امپ ومقاومت دامپینگ وغیره .... بشه از 1 میکرو ثانیه تا حالا انتهای موج میرایی که مثلا میگیم 300 میکرو ثانیه یا حالا بالاتر (بر فرض مثال این زمان رو میگم ) بشه این زمان تاخیر یا DELAY رو تغییر داد اما مشکل ما اینه که مثلا در PD3200 حداقل زمان DELAY برابر با 25 میکروثانیه هست چه کنیم, فرض کنید در PD3200 یه پالس برای ماسفت P که نوع پالس در شکل A مشخص هست میفرستیم , حالا مثلا پالس در PD3200 که وارد ای سی 74123 میشه و از پایه دیگه 74123 خارج میشه (فعلا کار به مع*** شدن پالس که از یکی از پایه های 74123 میاد بیرون نداریم همین با پالس نرمالمون یا همین پالس راه اندازمون کار داریم) و در مدار مایندایور از کویل به مقاومت وبعدش به ترانزیستور BC547 و بعدش به ورودی CAPTURE TIMER1 یا پین PB0 میره در کل بازم میگم اگه این ترانزیستور پالس رو مع*** کنه کاری نداریم فرض میکنیم پالسی که به راه انداز فرستادیم مع*** نشده وفقط سطح دامنه ولتاژش کوچیکتر شده, تا اینجا همه چی رو فهمیدید دیگه , انشاءالله .......
حالا پالس راه انداز (شکل A) که اول پین مورد نظر یا این پین یا پایه (مثلا PINB.1 ) میکرو که قرار است باهاش پالس راه انداز تولید بشه رو HIGH یا 1 میکنیم بعد یه مدت زمان رو که میگن زمان ON بودن پالس و در اصل منوی تنظیم POWER میشه همین زمان ON بودن پالس راه انداز (یا ساده تر بگم میشه قدرت فلزیاب رو با این زمان کم وزیاد کرد) بهش یه زمانی میدیم وبعد میاییم پین یا پایه مورد نظر برای تولید پالس رو که میشه PINB.1 رو LOW یا صفر میکنیم , در این لحظه کپچر تحریک شده با لبه پایین رونده یا FALLING , به این دلیل که بلا فاصله که پین PINB.1 صفر یا LOW شد , در اصل پین PINB.1 از حالت 1 به صفر یا از حالت HIGH به LOW میشه داره عمل پایین رونده گی پالس اتفاق می افته وچون CAPTURE TIMER با حساسیت به لبه پایین رونده تنظیم شده بود پس در زمان 1 به صفر شدن پین PINB.1 کپچر تایمر تحریک شده و بعدش به سرعت وقفه و زیر برنامه یا رو تین وقفه کپچر اجرامیشه , عملیات بعدی که در زیر برنامه یا همون LABEL یا روتین وقفه کپچر باید اجرا بشه DELAY هست ,پس نکته مهم این جاست که ما 25 میکروثانیه تاخیر ثابت که نمیشه کمش کرد رو داریم بخاطر سرعت تحریک تا خواندن یا کپچر کردن وموارد وقفه و غیره ... که گفتیم به سبک وسنگین بودن برنامه و سرعت و فرکانس میکرو و به تقسیم فرکانس در تایمرهم بستگی داره , پس باید با ایجاد زمان برای تاخیر بیشتر از این دستوراتی تاخیری بنویسیم , فرض کنید منویی تعریف یا نوشتیم که عدد 1 تا مثلا 100 رو درمنوی تنظیم DELAY تغییر یا کم وزیاد کنیم ( در اصل میشه همون تنظیم DELAY) و هر عدد هم 1 میکرو ثانیه تاخییر ایجاد میکنه یعنی از 1 تا 100 میکرو ثانیه تاخییر یا دیلی میشه داد , با حساب بالا اگر دیلی روی عدد 1 تنظیم باشه تاخیر میشه در اصل 26 میکروثانیه ,چون گفتیم که 25 میکروثانیه تاخییر به خاطر کپچر و مواردسرعت گیر بالا از دست دادیم
پس با این حساب اگه فلزی مثلا در 15 میکروثانیه بعد از پالس راه انداز تاثیر بذاره ما نمیتونیم اون زمان رو سمپل یا نمونه گیری کنیم فقط از 26 میکروثانیه به بعد میتونیم تا 126 میکروثانیه ,یجوری 25 میکرو اول که شاید بعضی از فلزها در این زمان تاثیر بذارن رو از دست میدیم,پس چه کار میتونیم بکنیم با یک تنظیم ساده میشه حلش کرد چه در PD3200 و چه در MINDIVER
در (شکل B) اتفاق دیگه ای میفته ما همین مواردی که بالا در مورد PD3200 وتوضیح پالس راه انداز تا دیلی رو که گفتیم دوباره اجرا میکنیم اما یه تغییر کوچولو در تنظیم CAPTURE TIMER میکنیم همه چی سر جاشه از نوع پالس تا عدد تنظیم دیلی که گفتیم اما این دفه میاییم لبه تحریک کننده CAPTURE TIMER رو که در لبه پایین رونده یا FALLING تنظیم بود رو به لبه بالا رونده یا RISSING تغییر میدیم , اتفاقی که میوفته اینه که بجای اینکه عمل تحریک واجرای زیر برنامه یا روتین کپچر بعد از صفر یا LOW شدن پالس اتفاق بیوفته , جاش عوض میشه , و میاد اول پالس راه انداز موقعیکه تازه پین PINB.1 رو داریم 1 یا HIGH میکنیم یا این تحریک یا اجرای زیر برنامه کپچر در ابتدای ON بودن پالس راه انداز اجرا میشه , پس با این حساب در زیر برنامه وقفه کپچر میخواهد عمل DELAY انجام بشه به علاوه همون رمان 25 میکرو ثانیه , و در این موقع فرض کنید زمان ON بودن یا زمانی که به اصطلاح با منوی POWER کم وزیاد میشه رو قرار دادیم 70 میکروثانیه , یعنی زمان ON پالس 70 میکروثانیست , خب حالا میبینیم که از شروع زمان ON پالس راه انداز که کپچر و وقفه زیر برنامه اش اجرا میشه 25 میکرو ثانیه که گفتیم که باید طول بکشه تا زیر برنامه کپچر اجرا بشه ,پس از زمان ON بودن پالس راه انداز میمونه 45 میکرو ثانیه تا LOW بشه
اگه عدد DELAY رو حتی ما رو 15 یا 20 تنظیم کرده باشیم باز زمان نمونه گیری یا سمپل 1 میشه در حین زمان شارژ کویل که شما گفتید چرا پالس نمونه در زمان شارژ کویل است , پس با این حساب اگه ما عدد DELAY رو 46 بذاریم تازه میشه سمپل گیری از 1 میکرو ثانیه بعد از پالس راه انداز اگه فرضا فلزات در 15 میکروثانیه بعد از پالس راه انداز تاثیر یا سنس شوند با این حساب ما باید عدد DELAY رو عدد 60 بگذاریم تا DELAY در اصل بشود همون 15 میکروثانیه و بعد همنوبت نمونه گیری یا سمپل گیری میشه
و اعداد بالا همه فرضی ومثالی بود وهیچ کدام واقعی نبود چون این اعداد وتنظیمات به طراح ونوع مدارش وبرنامه نویسیش بستگی داره ...... والسلام
یا علی