به به دوباره پست زیر خاکی
----
این بنده خدا(Condif servo) میاد و تایمر 0 رو به کار می گیره
با استفاده از این خودش پالس متاسب برای سرو ایجاد می کنه
وقتی شما reload رو برابر 10 میزاری میاد تایمر 0 رو طوری تنظیم می کنه که هر 10 میکرو ثانیه یک بار ریست بشه(تقریبا)
حالا وقتی اول پالس برای سرو بشه پین سرو یک میشه وتازمانی که به عدد سرو برسه یک می مونه مثلا وقتی servo1=100 هست و reload =10 طول یک بودن میشه 100*10=1000 میکرو ثانیه پس پهنای باند شما یک میلی ثانیه هست
هرچی شما ریلود رو کم کنی دقت میره بالا ولی فشار روی میکرو بالا میره
وبلعکس
حالا مثلا معمولا سرو ها با پالس 1.5 میلی ثانیه ای وسط وایمیسند(درست میگم؟)
پس باید مقدار servo1=150باشه تا 1.5 میلی ثانیه پهنای باند داشته باشیم
چیزی که مهم هست اینه که فراموش نکنیم وقفه سراسری رو فعال کنیم
وقتی از کد زیر استفاده می کنیم
کد:
Config Servos = 1 , Servo1 = Portd.0 , Reload = 10
همون طوری که گفتم عمل می کنه اما حالات دیگه ای هم هست
مثلا وقتی اینو می نویسید
کد:
Config Servos = 2 , Servo1 = Portd.7 , Servo2 = Portb.1 , Reload = 100 , Interval = 100
این اینتروال میاد و طول پالس رو تغییر میده همونی که قبلا خودش نزدیک 20 میلی نگه میداشت و دوره پاس شما میشه reload*interval در میکرو ثانیه
توجه کنید که همه ی اعداد بین 0 تا 255 باشن
البته این روش رو توصیه نمی کنم چون تو بعضی عدد ها قاط می زنه این مال وقتی هست که می خواید PWM درست کنید به درد می خوده
---
چیزی که مهم هست اینه که این ها همه تقریبی هستن پس باید تجربی هی مقدار سرو رو کم و زیاد کنید تا بالاخره راه بیوفته
و البته به نظر من مشکل شما این بوده که با توجه به سرعت بالای میکرو باید مقداری زمان ریلود رو زیاد می کردید