PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشكل با adc سري stm



avr_1360
20-07-2014, 14:00
سلام.
كسي ميدونه مشكل اين برنامه چيه.
وقتي ديباگ ميكنم عدد توي ريجيستر ديتاي adcتغيير نميكنه با اينكه ولتاژ تغيير ميكنه.

#include <stm32f10x_lib.h>
#include "STM32_Init.h"

int main (void)
{
int j,a;
stm32_Init();
RCC->APB2ENR=(1<<4)|(1<<9)|(1<<2);// clk adc1&clk portc,a enable
ADC1->SQR3 = ( 1UL << 0);
ADC1->CR2=7;
while(1)
{

a=ADC1->DR;


}
}

Doloop
20-07-2014, 15:44
شما معلومه از پروژه های قدیمی استفاده میکنید...!!!
این پروژه ADC هست میتونید برای سخت افزار خودتون همتا سازی کنید:wink:
تست شده و جواب هم داده ...
فقط شبیه سازی نرم افزاری ممکنه جواب نده ولی دیباگ سخت افزاری موردی نداره ..:0013:

دانلود (You can see links before reply)

avr_1360
20-07-2014, 21:32
شما معلومه از پروژه های قدیمی استفاده میکنید...!!!
این پروژه ADC هست میتونید برای سخت افزار خودتون همتا سازی کنید:wink:
تست شده و جواب هم داده ...
فقط شبیه سازی نرم افزاری ممکنه جواب نده ولی دیباگ سخت افزاری موردی نداره ..:0013:

دانلود (You can see links before reply)

اقا تشكر.اين برنامه جواب ميده.فقط يه سوال.منظورتون از پروژه قديم كه گفتين چيه؟يعني بايد از دستورات cmsisاستفاده ميكردم؟
يه سوال ديگه.كجاي اين برنامه كلاك سيستم تعيين شده؟

Doloop
21-07-2014, 05:46
سلام


منظورتون از پروژه قديم كه گفتين چيه؟

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


يعني بايد از دستورات cmsisاستفاده ميكردم؟
خیر منظورم این نبود و مبحث CMSIS کلا جدای از این ماجراست ...:0013:


كجاي اين برنامه كلاك سيستم تعيين شده؟

کلاک سیستم به صورت پیشفرض روی 72 مگ تنظیم شده که این تنظیمات داخل کتابخونه system_stm32f0x.c و .h هست ...

avr_1360
22-07-2014, 21:08
سلام



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

خیر منظورم این نبود و مبحث CMSIS کلا جدای از این ماجراست ...:0013:


کلاک سیستم به صورت پیشفرض روی 72 مگ تنظیم شده که این تنظیمات داخل کتابخونه system_stm32f0x.c و .h هست ...

اقا تشكر.
يه سوال.وقتي اين برنامه اجرا ميشه فركانس adcرو بصورت پيش فرض 36 مگ قرار ميده.در حاليكه بايد زير 14 مگ باشه.چطور ميشه اينو توي تنظيمات همون فايل تغيير داد.

Doloop
23-07-2014, 02:51
سلام

کلاک قسمت ADC میتونه 9 و 12 و 18 و 36 باشه ...
برای جزئیات آدرس میدم باقیش با شما ...:0013:
رجیستر RCC_CFGR رو مطالعه کن
صفحه 99 پی دی اف Reference Manual قسمت ADC prescaler

اگه قصد دارید کلاک رو تغیر بدید خودتون باید چند خط به برنامه اضافه کنید... :0013:
بهتره حتما یه نگاهی به رجیسترهای ADC و RCC توی Reference Manual میکروتون هم بندازید :wink:

موفق باشید ...

avr_1360
23-07-2014, 19:17
توي Reference Manual دقيقا اين عبارت زير نوشته شده كه فك كنم بمعني اينه كه كلاك adc‌نبايد بيشتر از 14 مگ باشه.
The ADC input clock is generated from the PCLK2 clock divided by a prescaler and it must
not exceed 14 MHz
يه سوال ديگه.اين adc دقيق نيست.يعني وقتي عدد adc رو به واحد dac ميدم واحد dac‌همون ولتاژ وروديو توليد نميكنه.چرا؟

Doloop
24-07-2014, 05:09
درسته منم دیدم نوشته حداکثر 14 مگ هست ولی توی تنظیمات ADC کلاک ورودی 72 مگ هست و prescaler هم وقتی 2 و 4 و 6 و 8 باشه نتیجه میشه همونی که عرض کردم ولی این از محدودیت سخت افزار هست:wink:


يه سوال ديگه.اين adc دقيق نيست.يعني وقتي عدد adc رو به واحد dac ميدم واحد dac‌همون ولتاژ وروديو توليد نميكنه.چرا؟

اختلاف که باید وجود داشته باشه ولی شما میانگین هم باید بگیرید تا اختلاف رو به حداقل برسونید :wink: من یادمه اختلاف مقدار ADC تا 10 رقم پرش داشت ...