نقل قول: ممنون دوست من.اما چند تا مشکل:اول اینکه من با polarity high میخواستم. نه low.حالا با high هم انجام دادم مشکلی نداشت.میخواستم بدونم با high مشکلی پیش میاد؟
درود
گفتم که بخاطر بقیه ی برنامه، polarity باید low باشه
منظورم از بقیه برنامه، phase هست...
اگه polarity با high مقدار دهی بشه، اون وقت باید phase هم 1 انتخاب بشه...( طبق دیتاشیت adc )
طرف میکرو این مشخصات با CPHA و CPOL شناخته میشن...
اینترنت کلی مطلب هست در موردش...
نقل قول: دوم اینکه شما در این قسمت برنامه
کد php:
Reset Portb.4
aitms 50
Spiin Adc_value2 , 1
Spiin Adc_value1 , 1
Set Portb.4
زمان رو 50 میلی در نظر گرفتید میشه بگید چرا؟اخه فرکانس تولیدی من رو خیلی کم میکنه.و در آخر اینکه polarity چه high باشه و چه low با تغییر ولتاژ فرکانس(پالس تولیدی) کم و زیاد میشه.میشه کاری کرد که این قسمت برنامه ثابت باشه.ممنون میشم راهنماییم کنید
من فکر کردم اون پایه ای رو که مدام NOT میکنید، بخاطر سنجش سرعت هست،
خب اگه شما پالس لازم دارین، میتونید از تایمر یا تایمر تو مد pwm استفاده کنید خب....
ببخشید اون waitms لزومی نداره، باشه...
تاخیر t_sample زمانی اهمیت پیدا میکنه که شما مثل figure 5-1 توی دیتاشیت، باهاش (باadc ) رفتار کنید/
ولی ما 2 بایت بهش میفرستیم که چندتا بیت اش اضافه هست... و اون تاخیر t_sample اونجا برآورده میشه
اینم برنامه با polarity ی high و phase هه 1 و بدون تاخیر waitms
کد:
$regfile = "m32def.dat"
$crystal = 16000000 : Cursor Off
Config Lcdpin = Pin , Db4 = Pinc.3 , Db5 = Pinc.2 , Db6 = Pinc.1_
, Db7 = Pinc.0 , Rs = Pinc.5 , E = Pinc.4
Dim Adc_value1 As Byte , Adc_value2 As Byte , Result As Word , Tmp As Byte , Tmp1 As Word
Dim A As Word , B As Word
Dim C As Word , D As Word
Config Portd.7 = Output
Config Portb.4 = Output
Cursor Off Noblink
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes _
, Polarity = high , Phase = 1 , Clockrate = 16 , Noss = 1
Config Single = Scientific , Digits = 3
Cls
Spiinit
Reset Portd.7
Do
B = 20
Set Portd.7
Do
Incr A
Loop Until A = B
Reset Portd.7
A = 0
Reset Portb.4
Spiin Adc_value2 , 1
Spiin Adc_value1 , 1
Set Portb.4
'Adc_value2 = 214
'Adc_value1 = 163
Tmp1 = Adc_value2 And 31
Shift Tmp1 , Left , 5
Shift Adc_value1 , Right , 3
Result = Tmp1 Or Adc_value1
Locate 1 , 1
Lcd Result ; "* "
Loop