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





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









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









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






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

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

نمایش نتایج: از 1 به 8 از 8
  1. #1
    2015/06/26
    75
    5

    مشکل بخش ADC میکرو...!

    سلام به همه دوستان گـــــــل oo:
    امیدوارم حال همه خوب باشه...!
    یه سوال داشتم ممنون میشم کسی جواب بده...!
    راستش من با کدویژن یه برنامه ای رو برای میکرو نوشتم که پایه A.3 میکرو رو بخونه و به 0 تا 1023 تبدیل کنه....!
    این برنامه توی پرتئوس بخوبی کار میکنه ولی توی واقعیت همش صفر رو نشون میده....!
    مشکلش چیه؟؟؟

    کد:
    #include <mega16.h>
    #include <delay.h>
    #include <alcd.h>
    #include <stdio.h>
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    
    }
    
    
    unsigned int read_adc(void)
    {
    ADMUX=(1<<REFS0)|(0<<REFS1);
    ADCSRA=0B111;// فرکانس
    ADCSRA|=(1<<ADEN);
    ADMUX|= 0b011;
    ADCSRA|=(1<<ADSC);
    while(ADCSRA & (1<<ADIF));
    ADCSRA=(0<<ADIF);
    return ADCW;
    
    }
    
    
    void main(void)
    {
    
    char b[16];
    DDRD.5=0;
    PORTD.5=1;
    
    // وقفه
    GICR|=0x40;
    MCUCR=0x02;
    MCUCSR=0x00;
    GIFR=0x40;
    #asm("sei")
    
    lcd_init(16);
    lcd_putsf("THE NAME OF GOD");
    delay_ms(1000);
    lcd_clear();
    
    
    lcd_putsf("start");
    delay_ms(1000);
    
    alio:
        lcd_clear(); 
    
        read_adc();
        delay_ms(1000);
        sprintf(b,"ADC= %d  ",ADCW);
        lcd_puts(b);
        lcd_gotoxy(0,0);
        delay_ms(1000);
    
    while (1)
       {
     if (PIND.5==0) goto alio;   
       
     }
    }
    وقفه هم الکی گذاشتم که بعدا ازش استفاده کنم....!
    فعلا کاری بهش نداریم....!
    توی وایل هم خواستم بیکار نباشه گفتم اگه فلان کلید رو زدم کد رو دوباره اجرا کن...!
    حالا بزرگان بگید مشکلش چیه؟؟؟!
    ممنون

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  2. #2
    2007/12/23
    تهران
    345
    15

    پاسخ : مشکل بخش ADC میکرو...!

    سلام
    شما توی خوندن ADC شماره مببدل رو مشخص نمیکنی.
    به این صورت بنویس
    sprintf (b,"ADC= %d ",read_adc(3));
    و فکر کنم به جای "d%" باید از "i%" استفاده کنی.
    ولی بهتره اینطوری بنویسی

    #include <mega16.h>
    #include <delay.h>
    #include <alcd.h>
    #include <stdio.h>


    unsigned int read_adc(void)
    {
    ADMUX = (1<<REFS0) | (0<<REFS1);
    ADCSRA = 0B111;
    ADCSRA |= (1<<ADEN);
    ADMUX |= 0b011;
    ADCSRA |= (1<<ADSC);
    while (ADCSRA & (1<<ADIF));
    ADCSRA = (0<<ADIF);


    return ADCW;
    }


    void main(void)
    {
    char b[16];


    DDRD.5 = 0;
    PORTD.5 = 1;


    GICR |= 0x40;
    MCUCR = 0x02;
    MCUCSR = 0x00;
    GIFR = 0x40;


    lcd_init (16);


    lcd_putsf ("THE NAME OF GOD"
    delay_ms (1000);
    lcd_clear();


    lcd_putsf ("start"
    delay_ms (1000);


    while (1)
    if (!PIND.5)
    {
    lcd_clear();
    read_adc();
    delay_ms (1000);
    sprintf (b, "ADC= %d ", read_adc(3));
    lcd_puts (b);
    lcd_gotoxy (0, 0);
    delay_ms (1000);
    }
    }موفق باشی
    شبنم از سعی به سرچشمه خورشید رسید صائب تبریزی
  3. #3
    2015/06/26
    75
    5

    پاسخ : مشکل بخش ADC میکرو...!

    ممنون از راهنماییت ولی من اینو void قرار داده بودم...!
    یعنی از قبل پایه اش رو انتخاب کرده بودم...!
    اما بازم اینی که گفتی رو انجام دادم ولی تو واقعیت جواب نمیگیرم.... همش صفر رو نشون میده
    یه کد دیگه هست که توی این سایته آموزش داده

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    من وقتی کدی که این سایت داده رو میریزم....
    توی پرتئوس خوب نشون میده اما تو واقعیت مثلا میزنه 500 بعدش میزنه 980 بعدش 20 کلا الکی انگار میزنه اختلافش خیلی زیاده... مثلا من وصل میکنم به 0 ولت میزنه 75 وصل میکنم به 5 ولت میزنه 900 این مشکلش چیه؟؟؟
    تورو خدا کمکم کنید!!
    مشکل از میکرو هست؟؟؟! کدویزاد مشکل داره؟؟؟
    قبلا کار میکرد ها....! :cry: :cry2:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  4. #4
    2007/12/23
    تهران
    345
    15

    پاسخ : مشکل بخش ADC میکرو...!

    خواهش میکنم. لطفا اول کد پیشفرض کدویژن رو امتحان کنید و در صورت صحیح بودن تغییر کد بدید.
    مقادیر رجسترهای ADC رو هم به صورت پیشفرض بنویسید البته با توجه ولتاژ مرجعتون. که من در اینجا ننوشتم.
    تابع ADC در کدویژن به صورت زیره:

    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    // Delay needed for the stabilization of the ADC input voltage
    delay_us(10);
    // Start the AD conversion
    ADCSRA|=0x40;
    // Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }
    شبنم از سعی به سرچشمه خورشید رسید صائب تبریزی
  5. #5
    2015/06/26
    75
    5

    پاسخ : مشکل بخش ADC میکرو...!

    ممنون....!
    به صورت پیشفرض گذاشتم کـار کرد :applause:
    خیلی ممنون خوشحال شدم.... خیلی وقت بود داشتم بهش ور میرفتم..... :biggrin:
    تشکر....!

    یه مشکل دیگه

    آقا این مادون قرمز رو چطوری وصل کنم...؟

    از من اینجوریه دقیقا!!! دوتا پایه داره کلا هرکدومش!!

    کسی میدونه پایه ها چطوری وصل میشن به میکرو؟؟؟!

    کلا چطوری با زبون C یه برنامه بنویسم که گیرنده مادون قرمز رو فعال کنم؟؟!
    کسی کمک کنه ممنون میشم :redface: :rolleyes:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  6. #6
    2007/12/23
    تهران
    345
    15

    پاسخ : مشکل بخش ADC میکرو...!

    سلام. خواهش میکنم. خوشحالم که حل شد. حالا تکه تکه برنامه رو تغییر بده تا به خط مشکل دار برسی.
    مادون قرمز فرستنده رو اول به صورت دائم وصل کن البته با یه مقاومت 1 کیلو. گیرنده رو هم همینطور البته با مقاومت 10 کیلو و فقط سراتصال مقاومت و دیود رو با یه مقاومت 100 اهم بده به بیس ترانزیستور NPN و امیتر به زمین و کلکتور
    مستقیم به پینی از میکرو که به صورت Pull-Up داخلی تنظیم شده و فرستنده رو بطور دستی خاموش و روشن کن و نتیجه رو با میکرو بخون و یه LED مستقیم به میکرو وصل کن تا هر موقع که میکرو فهمید روشنش کنه.
    مرحله بعد اینکه فرستنده رو با یه میکرو دیگه روشن خاموش کن و با میکرو گیرنده داده دریافت کن.
    اصول کار ریموت کنترل که خیلی سادست و میتونی کنترل تلویزیون رو هم باهاش آشکار کنی.
    موفق باشی.
    شبنم از سعی به سرچشمه خورشید رسید صائب تبریزی
  7. #7
    2015/06/26
    75
    5

    پاسخ : مشکل بخش ADC میکرو...!

    خیلی ممنون از جوابت...! oo:
    خوب پس من اول مادون قرمز فرستنده رو به صورت معمولی (مثل یه LED ساده) وصل مکینم به میکرو؟ درسته؟؟؟!
    خوب بعدش گیرنده،! کدوم پایه رو وصل کنم به میکرو (پایه منفی و یا مثبت)؟ آخه پایه اش باید خروجی باشه و پایه میکرو ورودی دیگه؟ نه؟؟؟؟
    فوقش من پایه منفی رو وصل میکنم به میکرو و پایه مثبت رو با یه مقاومت 10 کیلو اهم به 5 ولت میزنم!.... اونوقت من ترانزیستور رو خوب متوجه نشدم...! اصلا ترانزیستور نه دارم نه میدونم چیه؟ کلا دوسش ندارم :nerd: بدون ترانزیستور هم میشه؟!؟
    اصلا به چه کاریی میاد؟؟ اگه میشه توی سایت www.roboeq.ir همون ترانزیستور مورد نیاز رو آدرس بدید تا اگه لازمه بخرمش...!
    لطفا اگه زحمتی نیست یه نمونه کد با زبان C برای گیرنده و فرستنده مادون قرمز برام بنویس تا ببینم چطوریه!؟
    مــــــــمنــــون.....!
    پس من منتظرم...!

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  8. #8
    2007/12/23
    تهران
    345
    15

    پاسخ : مشکل بخش ADC میکرو...!

    خواهش میکنم.
    در مورد ترانزیستور توضیح کامل بدم: ترانزیستور قطعه خوبیه و خلاصه "تمام روشهای انسانی نظیر زرشک یخی ساخته تصور راوی" هست یا به انگلیسی ترانس رزیستور.
    برای تقویت جریان و سوییچ و ... استفاده میشه و به شدت کاربردی هست. مثلا وقتی یه رله رو میخواید با میکرو روشن کنید به صورت مستقیم میکرو نمیتونه اینکارو انجام بده چون
    جریاندهی پایینی داره. میکرو ترانزیستور رو راه اندازی میکنه و ترانزیستور رله رو.
    void main(void)
    {
    // input
    PORTD.6 = 1;
    DDRD.6 = 0;

    // output
    PORTD.0 = 0;
    DDRD.0 = 1;

    while (1)
    {
    if (!PIND.6)
    PORTD.0 = 0;
    else
    PORTD.0 = 1;
    }
    }

    شبنم از سعی به سرچشمه خورشید رسید صائب تبریزی
نمایش نتایج: از 1 به 8 از 8

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

  1. مشکل در میکرو AVR
    توسط Soheilas در انجمن میکروکنترلرهای AVR
    پاسخ: 26
    آخرين نوشته: 2018/05/02, 17:09
  2. مشکل در اتصال رله و میکرو و سوختن میکرو
    توسط korosh00 در انجمن میکروکنترلرهای AVR
    پاسخ: 10
    آخرين نوشته: 2015/08/27, 16:03
  3. مشکل مداری یا مشکل پروتئوس با میکرو
    توسط Detector68 در انجمن نرم افزار Proteus
    پاسخ: 5
    آخرين نوشته: 2013/01/25, 18:24
  4. مشکل در a/d میکرو
    توسط sinakian در انجمن میکروکنترلرهای PIC
    پاسخ: 7
    آخرين نوشته: 2012/05/16, 08:36
  5. ** یه مشکل عجیب تو میکرو(مشکل در Delay!)
    توسط masoud9 در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2011/06/30, 12:51

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

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

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

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

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