آیا می توان از ارتباط سریال یک سری عدد گرفت و آنرا به عنوان d.c (مقدار یک بودن نسبت به صفر )در نظر گرفته و هر کدام را برای یک پایه در نظر گرفته ودر خروجی نمایش دهد
مثلا 8عدد بگیرد وپورت a برای هر پایه نمایش دهد و فر کانس همه پایه ها 500
هرتز باشد
منظورتو نفهمیدم بیشتر توضیح بدی خوبه !
تو ارتباط سریال می توان رشته و یا عدد ارسال و دریافت کرد و ساده هستش و کاری هم نداره !!!
ولی واسه خروجی همه پایه ها شاید یکم قضیه سخت بشه که با تایمر ها میشه قضیه رو راحت انجام داد !!!
در کل مفهومتو بیشتر بیان کنی !
من چیزی نفهمیدم !!!
دوست عزیز من می خواهم از هر پایه میکرو فرکانس 500 هرتز را بگیرم با دیوتی سایکل های مختلف به صورتی که این دیوتی سایکل ها متغییر باشد و به نحوی از کاربر گرفته شود مثلا ارتباط سریال
اسم تایپیک به دلیل نافمهوم بودن عوض شد !
این تایپیکو ببین :
http://www.iranled.com/forum/showthread.php?tid=17774
واسه 500 هرتز فقط مقدار دهی تایمرت عوض می شه !!!
و شما می خوای دیوتی سایکلش رو هم تغییر بدی !
چند تا پله کافیه واست !
فرضا اگه 255 پله می خوای اونوقته که باید فرکانس وقفه تایمرت 127500 هرتز باشه !!!
مسئله اینجاست که من می تونم مثلا فر کانس های مختلفی روی پایه ها ایجاد و از اعداد ورودی تغییر بدم
مهندس یه برنامه نمونه می ذارم :
کد php:
$regfile = "m32def.dat" : $crystal = 8000000
Config Timer0 = Timer , Prescale = 1
On Timer0 Ant : Enable Interrupts : Enable Timer0 : Start Timer0
Ddrb = 255
Dim B As Byte , P As Byte
P = 127
Do
Loop
Ant:
Timer2 = 194
If P = 0 Then : Reset Portb.0
Elseif P = 255 Then : Set Portb.0
Elseif B = 0 Then : Set Portb.0
Elseif B = P Then : Reset Portb.0
End If
Incr B
Return
الان رو پایه portb.0 فرکانس 500 هرتز ایجاد شده ( البته دقیقا 504 هرتز ) و مقدار پهنای پالس هم با متغیر P تو اول برنامه مقدار دهی شده میشه تغییر داد !
بین 0 تا 255 !
یعنی فرضا اگه برابر با 127 باشه ضریب پهنای پالس 50 درصد خواهد بود !!!!!
الان تو برنامه همین مقدار هستش :
این برنامه واسه یه پایه بودش !
و اضافه کردن پایه ها با خودت ( کاری نداره ) !!
شرطهات و متغیرات به همون نسبت زیاد میشه !!
و تو حلقه اصلی برنامه هم می تونی مقادیر رو بخونی و مقدار دهی کنی ! ( مثلا از پورت سریال دریافت کنی و ... ) !!
موفق باشی !
ممنون ولی من زبان بیسیک بلد نیستم اگه میشه به سی یا اسمبلی بنویسید
وفکر میکنم برنامه شما برای یک پایه است
مهندس جان خود شما هم یه همتی بکنین خوبه !!!
بسکام هم اونقدر راحته که همه چیزشو میشه بدون مشکل و یادگیری قبلی فهمید !!!!!!
و اضافه کردن پایه هم کاری داره !
یه نگاهی به برنامه بندازین !!
مثلا برنامه زیر واسه کل پورت ب ( 8 تا خروجی ) این کارو می کنه !
آرایه P پهنای پالس رو تعین می کنه ( مثل برنامه قبلی ) فقط اینجا بین 1 تا 8 که میشه خروجی های پورت ب صفر تا ب هفت !
کد php:
$regfile = "m32def.dat" : $crystal = 8000000
Config Timer0 = Timer , Prescale = 1
On Timer0 Ant : Enable Interrupts : Enable Timer0 : Start Timer0
Ddrb = 255
Dim B As Byte , P(8) As Byte , C As Byte
P(1) = 1
P(2) = 80
P(3) = 190
P(4) = 20
P(5) = 55
P(6) = 100
P(7) = 255
P(8) = 127
Do
Loop
Ant:
Timer2 = 194
For C = 0 To 7
If P(c + 1) = 0 Then : Reset Portb.c
Elseif P(c + 1) = 255 Then : Set Portb.c
Elseif B = 0 Then : Set Portb.c
Elseif B = P(c + 1) Then : Reset Portb.c
End If
Next
Incr B
Return