ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 11
  1. #1
    2011/03/03
    گلپايگان
    98
    0

    راه اندازي ADCآي سي AVR مثلا mega32

    سلام
    از دوستان کسي مي تونه بگه با کدويژن چگونه ADC ميکرو را راه اندازي ميکنند؟ :-/ :-/
    البته يه چيزايي بلدم ولي درست نمي دونم به پايه هاي AVCC بايد چي وصل کرد و براچي بايد وصل کرد يا اصلا لازمه ؟ :-/ :-/
    در خود برنامه اي که نوشتم هم اخطار ميده که فرمان :
    read_adc(i)
    را نمي شناسد.
    کل برنامه :

    #include <mega32a.h>

    #include <delay.h>

    #define ADC_VREF_TYPE 0xC0

    // ADC interrupt service routine
    interrupt [ADC_INT] void adc_isr(void)
    {
    unsigned int adc_data;
    // Read the AD conversion result
    adc_data=ADCW;
    // Place your code here

    }

    // Declare your global variables here

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTA=0x00;
    DDRA=0x00;

    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0x08;

    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0x00;

    // Port D initialization
    // Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=0 State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTD=0x00;
    DDRD=0x80;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 1000.000 kHz
    // Mode: Fast PWM top=0xFF
    // OC0 output: Non-Inverted PWM
    TCCR0=0x6A;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 125.000 kHz
    // Mode: Fast PWM top=0x00FF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x01;
    TCCR1B=0x0B;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: 1000.000 kHz
    // Mode: Fast PWM top=0xFF
    // OC2 output: Non-Inverted PWM
    ASSR=0x00;
    TCCR2=0x6A;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // USART initialization
    // USART disabled
    UCSRB=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // ADC initialization
    // ADC Clock frequency: 1000.000 kHz
    // ADC Voltage Reference: Int., cap. on AREF
    ADMUX=ADC_VREF_TYPE;
    ADCSRA=0x86;
    SFIOR&=0xEF;

    // SPI initialization
    // SPI disabled
    SPCR=0x00;

    // TWI initialization
    // TWI disabled
    TWCR=0x00;

    // Global enable interrupts
    #asm("sei&quot

    while (1)
    {
    // Place your code here
    int i , s[5], x[5] , y[5] , m[5] ;
    s[i]=read_adc(i);

    }
    }
    هدف من خوندن خروجي سنسور روبات تعقيب خط با ميکرو است. از پمپ راضي نيستم.مي خوام ازADC استفاده کنم؟
    ممنون پيشا پيش عيدتونم مبارک :biggrin:
    اگر تنهاترین تنها شوم باز هم خدا هست.(شهید چمران)
  2. #2
    2011/08/08
    صد دروازه
    87
    1

    پاسخ : راه اندازي ADCآي سي AVR مثلا mega32

    سلام دوست من

    داخل کدويژه از سربرگ adc اونو فعال ميکني

    حالا تو همون جا بايد ولتاژ مبنا(Volt.Ref) رو انتخاب کني

    AREF : اگه اين مورد انتخاب کني ولتاژ مبنا از اين پايه ايسي تامين ميشه(پايه 32 در اتمگا16 و 32)
    AVCC : اگه اين يکي رو انتخاب کني ولتاژ مبنا از اينجا تامين ميشه (پايه 30)
    اگر که گزينه Int,cap رو انتخاب کني ولتاژ مبنا ميشه 2.56 ولت
    0.0025*عدد خوانده شده از ADC=ولتاژ ADC <------تو این حالت
    براي محاسبه ولتازژ هم داريم:
    ماکزيمم عدد ADC/عدد خوانده شده از ADC * ولتاژ مبنا=VADC
    در ضمن اگه ای دی سی فعال کنی دیگه نمیتونی از اون پورت برای کاری غیر از ای دی سی استفاده کنی
    مثلا تو اتمگا 32 وقتی ای دی سی فعال بشه در واقع کل پورت a رو دیگه نمیتونی به عنوان خروجی یا ورودی استفاده بکنی و فقط میشه از اونا به عنوان ای دی سی استفاده کرد
    زندگي يه محيط برنامه نويسيه که خودمون برنامشو مينويسيم
    و هر لحظه امکان فشار روي کليک run هست
    پس ريسک نکنين خط به خط برنامتون رو چک بکنيد چون شايد ديگه فرصت دباگ کردن برنامه رو نداشته باشيد.
    الهم اغفر لنا ذنوبنا
  3. #3
    2011/03/03
    گلپايگان
    98
    0

    پاسخ : راه اندازي ADCآي سي AVR مثلا mega32

    سلام
    من اين کار را کردم ولي وقتي فرمان ميدم ADCرا بخواند و در آرايه مثلا s بريزد اخطار ميدهد که اين فرمان را نمي شناسد


    read_adc
    نميشناسد
    :sad:
    اگر تنهاترین تنها شوم باز هم خدا هست.(شهید چمران)
  4. #4
    2011/08/08
    صد دروازه
    87
    1

    پاسخ : راه اندازي ADCآي سي AVR مثلا mega32

    سلام :bye
    به احتمال زیاد تو جزییات ایراد داره
    حالا برنامتو بزار تا ببینیم چی کار کردی :agree:
    این یه نمونه
    a=read_adc(0) 1
    itoa(a,s1) 2
    موفق باشی :nice:
    زندگي يه محيط برنامه نويسيه که خودمون برنامشو مينويسيم
    و هر لحظه امکان فشار روي کليک run هست
    پس ريسک نکنين خط به خط برنامتون رو چک بکنيد چون شايد ديگه فرصت دباگ کردن برنامه رو نداشته باشيد.
    الهم اغفر لنا ذنوبنا
  5. #5
    2010/08/19
    کردستان
    1,925
    900

    پاسخ : راه اندازي ADCآي سي AVR مثلا mega32

    با سلام.
    دوست عزیز شما تو برنامه تون ولتاژ مرجع رو در حالت داخلی قرار دادین و وقفه ADC رو هم فعال کردین. در حالتی که شما وقفه رو فعال می کنید در پایین همون قسمت یه گذینه Enable ظاهر میشه که با تیکدار کردن آن و تعیین ADC های مورد نظر برای چک شدن، خود میکرو مقادیر ADC رو گرفته و داخل یه ارایه قرار میده.
    استفاده از این روش برای مدارات رباتیک که در اونها سرعت اسکن خیلی مهمه فکر کنم بهتر باشه.
    اما اگر می خواین خودتون هر کانال رو که خواستین چک کنید دیگه نیازی به فعال کردن وقفه نیست.
    من در فایل زیر یه برنامه براتون می زارم که ADC0 رو با استفاده از دستوری که گفتین چک می کنه و مقدار اون رو روی LCD نمایش میده.و همچنین یه برنامه هم با روشی که گفتم براتون می زارم تا با طرز کار اون هم آشنا بشین.
    راستی تو زبان C متغیرها رو داخل حلقه while تعریف نمی کنن.
    در مورد پایه AVCC باید بگم که این پایه در حالت استفاده از ADC باید وصل بشه و حتی تو دیتاشیت گفته که در موقع استفاده از پورت A بدون استفاده از ADC هم لازمه.این پایه در حقیقت بخش تغذیه ADC هستش و اتصال اون الزامیه.
    موفق باشید


    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: rar test.rar (125.7 کیلو بایت, 30 نمايش)
    • نوع فایل: rar test.rar (125.7 کیلو بایت, 30 نمايش)
    • نوع فایل: rar test.rar (125.7 کیلو بایت, 29 نمايش)
    • نوع فایل: rar test.rar (125.7 کیلو بایت, 30 نمايش)
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
  6. #6
    2011/03/03
    گلپايگان
    98
    0

    پاسخ : راه اندازي ADCآي سي AVR مثلا mega32

    سلام
    با دقت در برنامه اي که برام فرستاديد فهميدم که مشکل کار من کجا بوده من گزينه interrupt را ميزدم که باعث شد دستور read_adc را نمي شناخت. چرا اين طوري ميشه؟مي تونم ازتون خواهش کنم يه آموزش کامل از اي دي سي به صورتي که در برنامه کد ويژن است را بگزاريد؟
    ممنون
    اگر تنهاترین تنها شوم باز هم خدا هست.(شهید چمران)
  7. #7
    2011/05/13
    قم
    50
    1

    پاسخ : راه اندازي ADCآي سي AVR مثلا mega32

    سلام به همه ی دوستان خوبم...
    ADC مخفف "Analog-Digital Converter" و به معناي مبدل آنالوگ به ديجيتال است.
    اگر بخواهيم اين قابليت را به صورت ساده توصيف كنيم، يك ولت متر ديجيتال است كه بر روي پايهآ*هاي ميكروكنترلر نصب شده است و به وسيلهآ*ي آن ميآ*توان ولتاژ پايهآ*هاي ورودي را با دقت مناسبي اندازهآ*گيري كرد. همانطور كه ميآ*دانيد ما تا به حال در هيچآ* آي سي نميآ*توانستيم شدت ولتاژ ورودي را به دقت اندازه گيري كنيم و فقط ميآ*توانستيم بدانيم آيا ولتاژ ورودي بالاي 2.5 ولت است يا زير 2.5 ولت، و وروديآ*هايمان را به صورت 0 و 1 برسي ميآ*كرديم.(آي سي ها وروديآ*هاي خود را منطقي ميآ*كنند)
    اما به كمك اين قابليتِ ميكروكنترلرآ*هايِ خانوادهآ*ي AVR، ما ميآ*توانيم با دقت مناسبي ولتاژ ورودي خود را بررسي كنيم.
    يكي از كاربردآ*هاي مهم ADC ميآ*تواند در رباتآ*هاي امدادگر دانشآ*اموزي براي تشخيص رنگ باشد. همانطور كه ميآ*دانيد هر رنگ، ميزان مشخصي از نور را بازتاب ميآ*دهد و بقيهآ* را جذب ميآ*كند، ما با اندازهآ*گيري مقدار نور بازتاب شده، ميتوانيم رنگ را تشخيص دهيم. در اينجا ما براي اندازهآ*گيري ميزان شدت نور بازتاب شده، بايد از ADC ميكروكنترلر استفاده آ*كنيم تا بتوانيم ولتاژ خروجي سنسور نوري خود را به دقت اندازهآ*گيري كنيم.
    زیر پرچم سه رنگ/واسه پرچم سفید/مادرم دعا می کرد/پدرم می جنگید...
  8. #8
    2011/05/13
    قم
    50
    1

    پاسخ : راه اندازي ADCآي سي AVR مثلا mega32

    در زیر روش راه اندازی ADC از پایه توضیح داده شده است:
    ابتدا CodeWizard را باز كرده و در آن، لبهآ*ي ADC را انتخاب ميآ*كنيم، و در لبهآ*ي ADC، گزينهآ*ي "ADC Enabled" را تيك ميآ*زنيم و سپس مانند شكل زير تنظيمات را انجام ميآ*دهيد :

    همانطور كه ميآ*بينيد، دومين قسمتي كه تيك زده شده "Use 8 bits" است.در ادامه در مورد دليل اين كار توضيح داده شده است.
    همانطور كه گفته شد، وظيفهآ*ي ADC، اندازه گيري ولتاژي است كه بر روي پايهآ*ي ورودي قرار گرفته است. اما ADC عددي را كه مولتي متر به ما نشان ميآ*دهد گزارش نميآ*كند، بلكه متناسب با ولتاژ پايهآ*ي ورودي، عددي را در بازهآ*ي 0 تا 255 به ما گزارش ميآ*كند. يعني عدد 0 را به ولتاژ 0ولت اختصاص ميآ*دهد، و 255 را به 5 ولت؛ و هر ولتاژي بين 0 تا 5 ولت را، متناسباً، با عددي بين 0 تا 255 گزارش ميآ*كند. در حقيقت براي سهولت در محاسبه، مي توانيد فرض كنيد اندازهآ*ي ولتاژ ورودي بر حسب ولت، ضربدر 51، برابرست با عددي كه ADC براي آن ولتاژ مشخص، به ما گزارش ميآ*كند.
    به عنوان مثالي ديگر، اگر خروجي مدار يك سنسور نوري را به پايهآ*ي ورودي ADC متصل كرده باشيد، و خروجي مدار سنسور 2 ولت باشد،آ*ADC عدد 102 را به ما گزارش ميآ*كند.
    اگر تيكِ گزينهآ*ي "Use 8 bits" را برداريم، بازهآ*ي ما به 0 تا 1024، گشترش پيدا خواهد كرد و در حقيقت دقت اندازهآ*گيري ما 4 برابر خواهد شد. يعني 5 ولت ما، به جاي 255، با عدد 1024 گزارش خواهد شد، و ولتاژهاي بين 0 و 5 ولت نيز متناسباً با عددي بين 0 تا 1024 گزارش خواهند شد. اما در كارآ*هاي ما نيازي به اين دقت بالا نيست و معمولاً "Use 8 bits" را تيك ميآ*زنيم تا بازهآ*ي ما بين 0 تا 255 باشد.
    زیر پرچم سه رنگ/واسه پرچم سفید/مادرم دعا می کرد/پدرم می جنگید...
  9. #9
    2011/05/13
    قم
    50
    1

    پاسخ : راه اندازي ADCآي سي AVR مثلا mega32

    در میکرو کنترلر ATMEGA16 ، هشت پایه ی به ADC اختصاص داده شده، یعنی شما می توانید به صورت همزمان، خروجیِ 8 سنسور یا مدار جانبی را به میکروکنترلر خود وصل کنید و اطلاعات آن ها را به وسیله ی ADC دریافت کنید.
    اما این 8 پایه کدام پایه ها هستند؟
    این 8 پایه، پایه های مربوط به پورت A هستند که با فعال کردن ADC در CodeWizard، این پایه ها در اختیار ADC قرار می گیرند. دقت کنید که برای استفده از ADC حتماً باید قبلاً تنظیمات را در CodeWizard انجام داده باشید.
    این 8 پایه طبق شکل زیر از ADC0 تا ADC7 نام گذاری شده اند.

    چگونه از ADC در برنامه استفاده کنیم؟
    هنگامیکه شما تنظیمات اولیه را برای فعال سازی ADC در CodeWizard انجام می دهید، به شما این امکان داده می شود که در هر قسمت از برنامه، مقدار هر یک از 8 ADC را بخوانید و از آن استفاده کنید. عبارت" (شماره يADC )" read_adcدر هر قسمت از برنامه، حاوي مقدار ADC مورد نظر شماست. مثلاً اگر بخواهيم مقدار ADC0 را بررسي كنيم كه آيا از 100 بزرگتر است يا خير، به شكل زير عمل ميآ*كنيم:
    if(read_adc(0) > 100)
    يا مثلاً اگر بخواهيم مقدار ADC1 را در داخل يك متغير نگه داري كنيم، به شكل زير عمل مي كنيم:
    int a;
    a= read_adc(1);
    مبدل آنالوگ به ديجيتال، يكي از مهمترين قابليتآ*هايست كه اكثر ميكروكنترلرآ*هاي خانوادهآ*ي AVR آن را دارند. در ميكروكنترلرآ*هاي قديميآ*تر، براي اين كار، بايد يك آي سي به صورت جداگانه بر روي مدار تعبيه ميآ*شد.
    زیر پرچم سه رنگ/واسه پرچم سفید/مادرم دعا می کرد/پدرم می جنگید...
  10. #10
    2006/12/04
    تهران منطقه 22
    387
    9

    پاسخ : راه اندازي ADCآي سي AVR مثلا mega32

    تو بیسکام هم میشه راهنمایی کنید؟
    ممنون
    من آن گلبرگ مغرورم که می میرم ز بی آبی ولی با خفت و خواری پی شبنم نمی گردم.
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 11

موضوعات مشابه

  1. تولید فرکانس مرد نظر(مثلا سینوسی) با مد FAST PWM ???
    توسط md3848 در انجمن میکروکنترلرهای AVR
    پاسخ: 22
    آخرين نوشته: 2017/07/06, 10:10
  2. تبدیل برنامه ها مثلا سی به بیسیک یا برعکس
    توسط iranesabz در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2012/06/11, 21:50
  3. کار با تایمر وقفه ها در AVR مثلا mega32
    توسط RunY در انجمن رباتيك و مكاترونيك
    پاسخ: 3
    آخرين نوشته: 2012/04/11, 22:53
  4. کشیدن pcb یک عکس مثلا عکس یک درخت در porotel
    توسط adc در انجمن نرم افزار Protel
    پاسخ: 1
    آخرين نوشته: 2010/09/13, 18:12
  5. پاسخ: 4
    آخرين نوشته: 2010/05/25, 22:38

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •