سلام دوستان
من یه سوال در مورد اتصال شفت انکودر به میکرو دارم!بازم مثل همیشه ما رو از الطافتون بی نصیب نزارید.
ممنون از همه شما !
یه شفت انکودر داریم که که در دوجهت می چرخه راست گرد و چپ گرد
با توجه به جهت چرخش دو نوع خروجی داره!AوB این دو تا خروجی دو تا پالس دارن که با هم 90 در جه اختلاف فاز دارن!اگه A جلوتر باشه راست کرده و میکرو باید اینو تشخیص بده و با استفاده از یه کانتر بشماره! و مثلا اگه 200 پالس شفتمون تولید کنه میکرو باید از 1 تا 200 بشماره و اگه B جلوتر باشه میکرو باید از 200 تا 1 به صورت پایین رونده بشماره؟
حالا برا up/down counter تو کتاب کاهه نوشته بود باید از کانتر در مد pwm استفاده کنید.و دو تا بیت رو برایup/down counter گفته بود باید ست و ریست کنید تا بالا رونده و پایین رونده بشماره! ولی بیسکام اینا رو نمی شناسه!
Com1x1و Com1x0 تو کتاب نوشته بود با توجه به این دو تا میکرو وقتی تو مد pwm باشه می فهمه که بالارونده یا پایین رونده بشماره
من یه برنامه ای نوشتم ببینید اشکالش چیه!
$regfile = "m32def.dat"
$crystal = 8000000
Config Pina.0 = Input
Config Pind.5 = Output
Config Int0 = Rising
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
Enable Interrupts
Enable Int0
On Int0 Lable1 Nosave
Do
Loop
End
Lable1:
If Pina.0 = 0 Then
Com1a1 = 1
Com1a0 = 0
Counter1 = 0
Do
Print Counter1
Loop Until Counter1 >= 200
Else
Com1a1 = 1
Com1a0 = 1
Counter1 = &HC8
Do
Print Counter1
Loop Until Counter1 = 0
End If
Return
من یه سوال در مورد اتصال شفت انکودر به میکرو دارم!بازم مثل همیشه ما رو از الطافتون بی نصیب نزارید.
ممنون از همه شما !
یه شفت انکودر داریم که که در دوجهت می چرخه راست گرد و چپ گرد
با توجه به جهت چرخش دو نوع خروجی داره!AوB این دو تا خروجی دو تا پالس دارن که با هم 90 در جه اختلاف فاز دارن!اگه A جلوتر باشه راست کرده و میکرو باید اینو تشخیص بده و با استفاده از یه کانتر بشماره! و مثلا اگه 200 پالس شفتمون تولید کنه میکرو باید از 1 تا 200 بشماره و اگه B جلوتر باشه میکرو باید از 200 تا 1 به صورت پایین رونده بشماره؟
حالا برا up/down counter تو کتاب کاهه نوشته بود باید از کانتر در مد pwm استفاده کنید.و دو تا بیت رو برایup/down counter گفته بود باید ست و ریست کنید تا بالا رونده و پایین رونده بشماره! ولی بیسکام اینا رو نمی شناسه!
Com1x1و Com1x0 تو کتاب نوشته بود با توجه به این دو تا میکرو وقتی تو مد pwm باشه می فهمه که بالارونده یا پایین رونده بشماره
من یه برنامه ای نوشتم ببینید اشکالش چیه!
$regfile = "m32def.dat"
$crystal = 8000000
Config Pina.0 = Input
Config Pind.5 = Output
Config Int0 = Rising
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
Enable Interrupts
Enable Int0
On Int0 Lable1 Nosave
Do
Loop
End
Lable1:
If Pina.0 = 0 Then
Com1a1 = 1
Com1a0 = 0
Counter1 = 0
Do
Print Counter1
Loop Until Counter1 >= 200
Else
Com1a1 = 1
Com1a0 = 1
Counter1 = &HC8
Do
Print Counter1
Loop Until Counter1 = 0
End If
Return
دیدگاه