گفتن مثال برای قسمتهای راه اندازی شده
ادامه بحث و راه اندازی قسمتهای راه اندازی نشده
چرا ؟
خیلی ممنون (پخ کردید واسم)
طبق توضیحات خودتون باید UART1 به صورت زیر استفاده بشه :
UART_Init((LPC_UART_TypeDef *)LPC_UART1, &UARTConfigStruct);
سلام آقا اسماعیل
خیلی ممنون و دمت گرم
من میخوام با lpc1768 کار کنم. شماتیک رو تموم کردم فقط قسمت مربوط به تایمر کانتر مونده
منظور از capture دقیقا چیه؟
اگر بخوام فرکانس رو اندازه بگیرم باید چیکار کنم؟
میدونم ک باید یک تایمر 1 ثانیه درست کنمو در اون 1ثانیه تعداد لبه ها رو توسط کانتر بشمرم
ولی نمیدونم فرق cap0 با cap1 چیه؟ اصلا سیگنالو باید به این پایه ها بدم؟ اون capture چیه؟
ممنون میشم یکم کمکم کنی
سلام دوست عزیز وممنون از ابراز محبتتون.
ببینین اگه شما بخوایین تعداد پالس ساعت بین 2 زمان رو به دست بیارین از کپچر استفاده میکنین.
کپحر دقیقا مثل وقفه میمونه .فرقش اینه که یه کار خاص رو انجام میده یعنی به محض اینکه سیگنال کپچر بیاد عدد فعلی تایمر کانتر توی یهرجیستر خاص کپچر ذخیره میشه.cap0 , cap1 دو تا پایه خارجی هستن که میتونن به عنوان ورودی سیگنال کپچر عمل کنن.متن رو کامل بخونین متوجه میشین .من در خدمتم داداشم
سلام
یک مشکل جدید :
میخام همزمان از کانال 0 و 1 مبدل آنالوگ به دیجیتال ADC استفاده کنم
ولی مقدار کانال 1 رو 0 نشون میده !!!
کد:ADC_Init(LPC_ADC, 200000); ADC_ChannelCmd (LPC_ADC , ADC_CHANNEL_0, ENABLE); ADC_ChannelCmd (LPC_ADC , ADC_CHANNEL_1, ENABLE); PinCfg_ADC.Funcnum = 1; PinCfg_ADC.OpenDrain = 0; PinCfg_ADC.Pinmode = 0; PinCfg_ADC.Pinnum = 23; PinCfg_ADC.Portnum = 0; PINSEL_ConfigPin(&PinCfg_ADC); PinCfg_ADC.Pinnum = 24; PINSEL_ConfigPin(&PinCfg_ADC); while (1) { ADC_StartCmd(LPC_ADC,ADC_START_NOW); adc_value1 = ADC_ChannelGetData(LPC_ADC , 0); adc_value2 = ADC_ChannelGetData(LPC_ADC , 2);
در هر لحطه تنا یکی از کانالهای میکرو میتونه روشن باشه و عمل خوندن رو انجام بده.اگه میخوایین از 2 کاتنال استفاده کنین باید در حالت burest mode از adc استفاده باشه.
اما در حالت عادی میتونین ابتدا کانال یک و فعال و ازش داده رو دریافت کنین بعد این کانال رو ببندین و کانال بعد رو روشن کنین و ازشاستفاده کنین
سلام
اگر میشه روش burest mode رو یه توضیحی بدید
الان این کار رو کردم ولی باز هم نمیشه !!!
کد:ADC_Init(LPC_ADC, 200000); ADC_ChannelCmd (LPC_ADC , ADC_CHANNEL_0, DISABLE); ADC_ChannelCmd (LPC_ADC , ADC_CHANNEL_1, DISABLE); ADC_ChannelCmd (LPC_ADC , ADC_CHANNEL_0, ENABLE); ADC_ChannelCmd (LPC_ADC , ADC_CHANNEL_1, DISABLE); ADC_StartCmd(LPC_ADC,ADC_START_NOW); adc_value1 = ADC_ChannelGetData(LPC_ADC , 0); ADC_ChannelCmd (LPC_ADC , ADC_CHANNEL_1, ENABLE); ADC_ChannelCmd (LPC_ADC , ADC_CHANNEL_0, DISABLE); ADC_StartCmd(LPC_ADC,ADC_START_NOW); adc_value2 = ADC_ChannelGetData(LPC_ADC , 1);
سلام به همه ...
من فکر میکنم BURST Mode یه نوع خاصی از خوندن ADC هستش که واحد ADC بصورت خودکار عمل تبدیل رو انجام میده و فقط میتونی به راحتی مقدار تبدیل شده رو بخونی ... خوبی این روش اینه که دیگه میکرو توی دستور while گیر نمیکنه تا عملیات تبدیل تموم بشه ... اگه تابع مورد نظر رو دنبال کنی میبینی هیچ دستور حلقه وجود نداره ...
دوستان محترم اگه اشتباه گفتم اصلاح کنید ...
برای استفاده از usb باید چی کار کرد ؟؟
آقای طاهری.
سلام و خسته نباشید.
من چندماه پیش با آموزشهای این تایپک که شما زحمتش رو کشیدید آرم رو شروع کردم.
10000 تشکر بخاطر زحمتی که میکشید. انشالله موفق و در پناه خدا باشید
بااحترام
مثل اینکه بعضی از دوستان با adc یه مشکلات کوچیکی دارن.توی پست بعد آموش کامل این قسمت رو میزارم تا انشالله مشکلات همه دوستان حل بشه
دوستان فایل زیر رو دانلود کنین .بیشتر قسمتهای واحد adc اون توضیح دادم.انشالله به دردتون بخوره.
یه صلوات و یه فاتحه هم یادتون نره.ممنون
ویرایش توسط esi_52000 : 21-04-2013 در ساعت 20:41
اقای esi_52000 و استاتید دیگه ممنون از زحماتتون
شما با USB هم کار کردید ؟؟
ویرایش توسط lpln852 : 21-04-2013 در ساعت 22:21
سلام آقای طاهری
توضیحاتتون عالی بود
فقط اگر ممکنه یه مثال برای حالت burest mode بزنید که 2 کانال adc همزمان در حال کار باشن و نمونه برداری از 2 کانال انجام بشه
ممنون
سلام آقا مهدی.شما لطف دارین عزیز .با وجود دوستان فعالی مثل شما خدارو شکر این پست همیشه جواب گوی سوالات دوستان بوده.انشالله ااز این به بعد بیشتر بتونم در خدمت باشم.
انشالله دنبالشم بقیه قسمتای مونده از 1768 رو هم کامل کنیم تا انشالله این آی سی رو هم بومی سازی کرده باشیم(البته برنامه نویسیشو)