سلام
میخوام مقدار pwm و adc رو هم زمان توی بسکام کنترول کنم یعنی وقتی adc کم شد یا زیاد شد pwm هم کم یا زیاد بشه
خوب یه حلقه هست دیگه
کد:
Do
pwm1a=getadc(0)
loop
یا کلا کدش رو میخواید؟
خوب نه دیگه نمیشه
چون adc مقدارش بین 0 تا 1023 هست و pwm بین 0 تا 255 اصلا باهم مساوی در نمیاد
خب چرا از 10 بیتی استفاده نمیکنی؟
برای 8 بیتی این کارو کن:
کد:
a=getadc(0)
a=a*0.249266862170088
pwm=a
من این برنامه رو کامپایل نکردم.
تست کن ببین درسته؟
گرفتم
کد:
dim a as word
do
a=getadc(0)
a=a*255
a=a/1023
pwm0=a
حالا هر چند بیتی که باشه باشه شما جای اون 255 بزار
(استوکیومتری هست)
عباس جان چرا تقسیم بندی نمی کنی؟
مثلا بیای adc رو به مقدار 4.011 تقسیم کنی؛
کد:
Dim A As Word
A = Getadc(0)
A = A / 4.011
و بعد مقدار adc رو که برابر 255 میشه، تو pwm قرار بدی؛
هر سه با هم پست زدیم

برنامه ی کی رو میگید من؟
یه دستور وقفه هم بزارید تا بعد از خواندن ADC منتظر جواب بمونه
2- الان روشنه یعنی یه مقداری داره یا میدونین تنظیمه فقط؟
ADC رو استارت کردید؟
کد:
$regfile = "M32DEF.DAT"
$crystal = 8000000
Config Timer2 = Pwm , Pwm = On , Prescale = 256 , Compare_pwm = Clear_up
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Enable Timer2
Start Timer2
Dim A As Word
Do
A = Getadc(0)
A = A * 255
A = A / 1023
Pwm2 = A
Loop
End 'end program
اینو تست کردم کار کرد
برنامه رو بزاری زودتر به نتیجه می رسیم
چون متغیر ها از نوع اعداد صحیحن تقسیم بر 4 بکن ممیز نمی خواد
ولتاژ مرجع رو درست وصل کردی

مرسی شاید برناهمه ها همه درست باشه اما تو این برنلمه میخواستم که پروتئوس نشون بده که فک کنم چون خیلی مدار و برنامه زیاد بود نموتونه نشون بده