ايران ويج

نسخه‌ی کامل: کمک در تولید فرکانسهای مختلف روی هر پایه
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
آیا می توان از ارتباط سریال یک سری عدد گرفت و آنرا به عنوان 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 As Byte

127

Do
Loop

Ant
:

   
Timer2 194

   
If 0 Then Reset Portb.0
   
Elseif 255 Then Set Portb.0
   
Elseif 0 Then Set Portb.0
   
Elseif P Then Reset Portb.0
   End 
If

   
Incr B

Return 

الان رو پایه portb.0 فرکانس 500 هرتز ایجاد شده ( البته دقیقا 504 هرتز ) و مقدار پهنای پالس هم با متغیر P تو اول برنامه مقدار دهی شده میشه تغییر داد !
بین 0 تا 255 !
یعنی فرضا اگه برابر با 127 باشه ضریب پهنای پالس 50 درصد خواهد بود !!!!!

الان تو برنامه همین مقدار هستش :

کد php:
127 

این برنامه واسه یه پایه بودش !
و اضافه کردن پایه ها با خودت ( کاری نداره ) !!
شرطهات و متغیرات به همون نسبت زیاد میشه !!

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

موفق باشی !
ممنون ولی من زبان بیسیک بلد نیستم اگه میشه به سی یا اسمبلی بنویسید
وفکر میکنم برنامه شما برای یک پایه است
مهندس جان خود شما هم یه همتی بکنین خوبه !!!

بسکام هم اونقدر راحته که همه چیزشو میشه بدون مشکل و یادگیری قبلی فهمید !!!!!!

و اضافه کردن پایه هم کاری داره !
یه نگاهی به برنامه بندازین !!

مثلا برنامه زیر واسه کل پورت ب ( 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 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 0 To 7
      
If P(1) = 0 Then Reset Portb.c
      
Elseif P(1) = 255 Then Set Portb.c
      
Elseif 0 Then Set Portb.c
      
Elseif P(1Then Reset Portb.c
      End 
If
   
Next

   Incr B

Return