آقا از دوستانی که با adc ایکسمگا کار کردن چن تا سئوال دارم.
من adc رو با بسکام راه انداختم و رو lcd مقدارشو دارم نمایش میدم.مقدار به اندازه 200 واحد پرش داره که به نظر من با وجود یک ولتاژ ثابت اصلا منطقی به نظر نمیرسه!
برای اینکه از وجود ولتاژ ثابت روی پین میکرو اطمینان حاصل کنم یک خازن 100 نانو روی اون پین اضافه کردم ولی نتیجه تغییر نکرد.
برای اینکه شرایط بهتر بشه از یک رگولاتور ولتاژ استفاده کردم ولی بازم فایده نداشت!
در نهایت گفتم شاید اشکال از تغذیه خود میکرو باشه اومدم رفرنس adc رو گذاشتم روی 1 ولت داخلی تا اگه نویزی روی منبع تفذیه adc هست رو اندازه گیری تاثیر نداشته باشه.ولی بازم همین نوسان وجود داره!
علت چی میتونه باشه به نظر شما؟
برنامه رو قرار دادم.
در ضمن یک اشکال دیگه هم هست.اونم اینکه موقعی که دستور کانفیگ lcd رو تو کد ها اضافه میکنم بهد از ریست شدن مدار 2 ثانیه طول میکشه تا میکرو شروع به کار کنه و lcd راه بیفته که واقعا به نظرم عجیبه !آخه راه اندازی lcd با کلاک 32 مگ که نباید انقد طول بکشه.اگه علتی به نظرتون میرسه و میتونید برنامه رو چک کنید واقعا ممنون میشم.
پیشاپیش ممنون از راهنمایی اسلتید.
من adc رو با بسکام راه انداختم و رو lcd مقدارشو دارم نمایش میدم.مقدار به اندازه 200 واحد پرش داره که به نظر من با وجود یک ولتاژ ثابت اصلا منطقی به نظر نمیرسه!
برای اینکه از وجود ولتاژ ثابت روی پین میکرو اطمینان حاصل کنم یک خازن 100 نانو روی اون پین اضافه کردم ولی نتیجه تغییر نکرد.
برای اینکه شرایط بهتر بشه از یک رگولاتور ولتاژ استفاده کردم ولی بازم فایده نداشت!
در نهایت گفتم شاید اشکال از تغذیه خود میکرو باشه اومدم رفرنس adc رو گذاشتم روی 1 ولت داخلی تا اگه نویزی روی منبع تفذیه adc هست رو اندازه گیری تاثیر نداشته باشه.ولی بازم همین نوسان وجود داره!
علت چی میتونه باشه به نظر شما؟
برنامه رو قرار دادم.
در ضمن یک اشکال دیگه هم هست.اونم اینکه موقعی که دستور کانفیگ lcd رو تو کد ها اضافه میکنم بهد از ریست شدن مدار 2 ثانیه طول میکشه تا میکرو شروع به کار کنه و lcd راه بیفته که واقعا به نظرم عجیبه !آخه راه اندازی lcd با کلاک 32 مگ که نباید انقد طول بکشه.اگه علتی به نظرتون میرسه و میتونید برنامه رو چک کنید واقعا ممنون میشم.
پیشاپیش ممنون از راهنمایی اسلتید.
کد:
$regfile = "xm64a3def.dat" $crystal = 32000000 '32MHz $hwstack = 64 $swstack = 64 $framesize = 64 $lib "xmega.lib" $external _xmegafix_clear $external _xmegafix_rol_r1014 Config Osc = Enabled , 32mhzosc = Enabled 'We use internal 32MHz Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1 'Internal 32MHz, no prescaler '------------------------------------------------------------------------------- Config Adca = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , Reference = Int1v , Event_mode = None , Prescaler = 32 , Ch0_gain = 1 , Ch0_inp = Single_ended , Mux0 = &B000_00 _ Ch1_gain = 1 , Ch1_inp = Single_ended , Mux1 = &B1_000 , Ch2_gain = 1 , Ch2_inp = Single_ended , Mux2 = &B10_000 , Ch3_gain = 1 , Ch3_inp = Single_ended , Mux3 = &B11_000 '------------------------------------------------------------------------------- Config Lcdpin = Pin , Db4 = Portf.5 , Db5 = Portf.4 , Db6 = Portf.3 , Db7 = Portf.2 , E = Portf.0 , Rs = Portf.1 Config Lcd = 20 * 4 , Chipset = Dogm162v3 Cursor Off Cursor Noblink Cls Lcd "In the name of GOD" '------------------------------------------------------------------------------- Config Porte.0 = Output 'Porte.0 as Output Porte.0 = 1 '------------------------------------------------------------------------------- Dim I As Word Dim J As Byte Dim W As Word Dim Mux As Byte '------------------------------------------------------------------------------- Do I = 1 Mux = I * 8 W = Getadc(adca , 0 , Mux) Locate 3 , 1 Lcd W ; " " Loop End 'end program '-------------------------------------------------------------------------------
دیدگاه