نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
مهدی دمیرچیلو

آموزش جامع میکروکنترلر AVR جلسه2

به نام خدا

آموزش جامع میکروکنترلر AVR جلسه2

آموزش جامع میکروکنترلر AVR جلسه2

آموزش جامع میکروکنترلر AVR جلسه2

مبدل آنالوگ به دیجیتال

اگر به PORTA.0  تا  PORTA.7  نگاه کرده باشید کنارشون یه کلماتی هست : ADC0 تا ADC7 که با استفاده از این پورت( PORTA ) میتونیم سیگنال آنالوگ رو دیجیتال کنیم.

مبدل آنالوگ به دیجیتال در میکروکنترلرهای AVR

یه سری توضیحات مقدماتی ولی لازم ^_^

 6 روش وجود داره که بشه سیگنال آنالوگ رو به دیجیتال تبدیل کرد :
1) روش موازی یا همزمان
2) روش دو شیب
3) روش پله ای
4) روش تبدیل ولتاژ به فرکانس
5) روش تبدیل ولتاژ به زمان
6) روش تقریب متوالی
حالا میکروکنترلر AVR از کدوم یک از این روش ها استفاده میکنه ؟ روش تقریب متوالی

کانال

معمولا در یک میکرو AVR چندین کانال ADC وجود داره ؛ مثلا در مدل ATMEGA16  تعداد 8 عدد کانال ADC وجود داره !
توجه داشته باشید که در میکروکنترلر AVR تنها یک مبدل آنالوگ به دیجیتال وجود دارد و برای هر کانال از یک مبدل جدا استفاده نشده است.
یعنی اگر میبینید 8 تا کانال ADC در میکرو ATmega32 داریم ،
معناش این نیست که 8 تا مبدل داریم بلکه این 8 کانال با یکدیگر مالتی پلکس شدند و در نهایت اون که مورد نیازه به مبدل وصل میشه.
مثال خودمونی : تو خونتون 8 تا تلوزیون هست(چه شود ^_^) !!! حالا بابات میره یه آنتن میخره برا همشون و همشون مجبورن از این آنتن استفاده کنن.    افتاد؟؟؟؟؟
حالا با همدیگه میخوایم ببینیم برای تبدیل ( آنالوگ به دیجیتال ) چه فرایندی طی میشه :
فرض کنید ؛ در حوزه آنالوگ یه ولتاژِ بین 0 تا 5 ولت به کانال ADC داده میشه. این ولتاژی که داده میشه پیوسته است و میتونه هرمقداری داشته باشه.مثلا : 1.13 یا 4.69 و ... اما این ولتاژ
چجوری برای میکرو قابل فهم میشه ؟؟؟
در روش تقریب متوالی یه فرمولی وجود داره بدین صورت :
Vadc=(Vin*1024)/Vref
پس سه تا مجهول داریم :
Vin : همون ولتاژی هست که کانال میگیره و قراره تبدیل به سیگنال دیجیتال بشه.(همون ولتاژی که رو یکی از پایه ها مثلا  PORTA.1   اعمال میشه)
Vref : ولتاژ مرجع
n : دقت یا درجه تفکیک ؛ در مورد n هم میتونم بگم که میکروکنترلرهای AVR دقت 10 بیتی دارند .
یعنی مقدار سیگنال تبدیل شده با دقت 10 بیت ذخیره میشود. (البته لازم بذکره که میشه با دقت 8 بیت نیز ازشون استفاده کرد)
ببینید دوستان ، بنده گفتم درجه دقت 10 بیتی این یعنی چه ؟
ما وقتی به یکی از کانال های ADC میکرو ولتاژی بین 0 تا 5 ولت میدیم و انتظار داریم که میکرو هم برامون نسبت بگیره و اونو تبدیل به سیگنال دیجیتال کنه ، روش کار بدین صورته که در دقت 10 بیت،میکرو بازه بین 0 تا 5 ولت رو به  210 = (1024) واحد تقسیم میکنه :
آموزش جامع میکروکنترلر AVR جلسه2
تصویر بالا کاملا گویاست !
در حالت گفته شده 0 ولت برابر عدد 0 دیجیتال و 5 ولت برابر عدد 1023 دیجیتال میباشد.
و هر ولتاژی بین 0 تا 5 ولت با همون نسبتی که گفتم خدمتتون به مقدار دیجیتالش تبدیل میشه.
برای مثال ولتاژ 2.5 ولت معادل دیجیتالش در این حالت برابر با عدد 512 میباشد.
کاملا مشخص است که هرچقدر این درجه دقت (n) بالاتر باشد،مقدار دیجیتال بدست آمده نیز به مقدار آنالوگ آن نزدیکتر است.
در مورد ولتاژ مرجع( Vref  )
واحد ADC برای اینکه عملیات تبدیل رو انجام بده نیاز به یه ولتاژ مرجع داره تا ولتاژ وارد شده رو با اون مقایسه کنه.
در واقع اگر ولتاژ مرجع رو مثلا 3 ولت انتخاب کردیم،بازه 0 تا 3 ولت به 1024 قسمت تبدیل میشه و همون ماجرای بالا ...

=============================================

ریجسترهای دوس داشتنی خودمون!!!

1) بررسی رجیستر کنترلی ADMUX

1) بررسی رجیستر کنترلی ADMUX

رجیستر کنترلی ADMUX


بیت های 
و 7 (REFS 1,0 ) :  طبق جدول زیر میتونیم ولتاژ مرجعمون رو انتخاب کنیم :
رجیستر کنترلی ADMUX

حالت اول : ولتاژ روی پایه AREF به عنوان مرجع انتخاب میشود. (یکی از پایه های میکرو کنترلر مون هستش اگه ATMEGA 16   رو یه نگاه بندایزی پیداش میکنی!!!!)
حالت دوم : ولتاژ روی پایه AVCC به عنوان مرجع انتخاب میشود. (اینم یکی از پایه های میکرو کنترلر مون هستش اگه ATMEGA 16   رو یه نگاه بندایزی  پیداش میکنی!!!!)
حالت سوم : ------ (رزرو شده)
حالت چهارم : ولتاژ مرجع داخلی 2.56 ولت تثبیت شده به عنوان مرجع انتخاب میشود.

اگه حالت اول انتخاب بشه،ما هر ولتاژی که به پین AREF وصل کنیم به عنوان مرجع در نظر گرفته میشه.
در حالت دوم هم هر ولتاژی که به پین AVCC بدیم به عنوان ولتاژ مرجع در نظر گرفته میشه.
در حالت چهارم میکرو میاد و خودش یه ولتاژ 2.56 ولتی تثبیت شده و درجه یک ! رو میسازه و اون رو به عنوان ولتاژ مرجع انتخاب میکنه.

بیت های 0 و 1 و 2 و 3 و 4  ( MUX 4,0 ) :  از این بیت ها برای پیکربندی کانال های ADC میکروکنترلر AVR استفاده میشه.

برای اینکه مشخص کنیم که میخوایم از کدوم کانال (PA0-PA7) استفاده کنیم ، طبق جدول زیر مقادیر رو انتخاب میکنیم :

آموزش جامع میکروکنترلر AVR جلسه2

2) بررسی رجیستر ADCSRA

2) بررسی رجیستر ADCSRA

رجیستر ADCSRA

بیت 7  :   ADEN همونطور که از اسمش پیداست ، وظیفه ی فعال/غیر فعال کردن واحد ADC رو داره.

بیت 6 :   ADSC قبل از اینکه هر عمل تبدیلی انجام بدید،اول مقدار این بیت رو 1 کنید.==> فرمان شروع تبدیل (آنالوگ به دیجیتال منظورمه.) بعد از اینکه عمل تبدیل به پایان رسید مقدار این بیت 0 میشه.

بیت 5 :   ADATE   با 1 شدن این فلگ،خاصیت تحریک اتوماتیک فعال میشه. در اینصورت با هرلبه بالارونده پالس اعمال شده به CPU ، واحد ADC تحریک میشه.

بیت 4   : ADIF   این فلگ هم معروف به فلگ وقفه ADC هست و هر وقت که عملیات تبدیل ADC تمام شد این بیت بصورت اتوماتیک 1 میشه و ما رو مطلع میکنه که آیا عملیات تبدیل انجام شده یا نه ؟!

بیت 3 :  ADIE      یک بودن این بیت به این معنیه که وقفه ADC فعاله و 0 بودنش هم حاکی از غیرفعال بودنشه !

بیت های 0 و 1 و 2 :     این بیت ها هم برای انتخاب ضریب تقسیم فرکانس واحد ADC هستند.
این بیتها سرعت تدیل رو  تعیین میکنن.فرکانس ADC از کلاک سیستم تامین میشود.

با توجه به جدول زیر میتونید ضریب فرکانس  مورد نظرمون رو انتخاب کنیم :

آموزش میکروکنترلر avr

3) بررسی رجیستر (ADC (ADCH,ADCL

3) بررسی رجیستر  (ADC (ADCH,ADCL

آموزش میکروکنترلر avr

در این دو رجیستر اطلاعات خروجی ADC قرار میگیرند. یعنی وقتی تبدیل انجام شد،مقدار حاصل با دقت مورد نظر میاد و تو این رجیستر میشینه !
اگه یادتون باشه گفتم که دقت واحد ADC در میکروکنترلرهای AVR به 10 بیت میرسه ! این یعنی چه ؟ یعنی اینکه طول داده ها 10 بیتیه !
اما مگه نگفتیم که طول هر رجیستر 8 بیته ؟ حالا چجوری 10 بیت رو تو 8 بیت جا بدیم ؟؟؟ چاره اش رو اتمل پیدا کرده !
میگه میایم 2 تا رجیستر 8 بیتی به اینکار اختصاص میدیم میشه 8+8 = 16 بعد ما 10 تاشو لازم داریم دیگه ؟!
اون 6 تا که اضافیه رو هم بهشون محل نمیذاریم ! لذا داستان اینجوری میشه که این رجیستر 2 تیکه است !
و در واقع 2 تا رجیستر هستند اما با یک نام و یک وظیفه که بهم چسبیدند !
فقط برای اینکه با هم قاطی نشند اومدند و یه پسوند H و L بهشون دادند.(مخفف High و Low )

حالا چرا 2 شکل کشیدیم از این رجیسترها ؟

اون بیت ADLAR بود توی رجیستر ADMUX ، یادتونه که ایشالا ؟!اون مال همینه.
اگه ADLAR=1 باشه نتیجه تبدیل بصورت تنظیم از چپ و اگر ADLAR=0 باشه بصورت تنظیم از راست اطلاعات درون رجیسترها قرار میگیره !
شکل بالایی تنظیم از راست و شکل پایینی تنظیم از چپه !
نکته ای که باید بگم اینه که به مجموع دو تا رجیستر ADCL و  ADCH میگند ADCW که در واقع قراره یه عدد 10 بیتی رو به ما تحویل بده !

4) بررسی رجیستر SFIOR

4) بررسی رجیستر SFIOR

 آموزش جامع avr

در کل ما زیاد کاری به این رجیستر در مبحث ADC نداریم.
ولی اگه بیت ADATE از رجیستر ADSRA رو 1 کردید ، تبدیل هامون با یک لبه صعودی تحریک کننده اتفاق میوفته !

میدونم چیزی متوجه نشدید ولی عیبی نداره !!! خودم هم چیزی نفهمیدم 😀 

بیت های 5 و 6 و 7  :  ADTS 5,7 از طریق این سه بیت و با توجه به جدول زیر مشخص میکنیم که واحد ADC چجوری تحریک بشه !
گاهی وقتها لازمه که براساس یه رخداد خاصی،ADC بکار بیوفته !
مثلا : هرگاه وقفه خارجی اتفاق افتاد،ADC تبدیل رو شروع کنه.

 آموزش جامع avr
استفاده های خاص خودشو داره و چون بیشتر مواردش مربوط به مبحث تایمر/کانترها میشه.

 

پروژه avr یک

آموزش ساده ساخت دماسنج با lm35 رو بخونید.

پروژه avr دو

عکس مدار پروژه
 پروژه avr

کدهای پروژه

توجه : یکی از بازدید کننده های سایت یه فایل شامل کد و یه سری توضیحات برای این پروژه قرار دادن که دیدنش ظرر نداره – البته من هنوز وقت و حوصله نکردم بشینم بررسیش کنم : دانلود

تنظیمات کدویژن
 میکروکنترلر AVR

دانلود پروژه AVR دو

منبع
noise.blog.ir

این وبلاگ خوبی هستش حتما یه سری بزنید.
در ضمن این مطلب کپی پیس خالی نیست ==>تغیراتی هم داده شده

گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو گوگل میفرماید : إِنَّ اللّه مَعَ السارِچین ( خداوند با سرچ کنندگان است )
ارسال دیدگاه
163

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

4) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    saeed

    سلام اقا مهدی من پتانسیومتر رو به میکرو وصل کردم. پایه هایavcc و aref رو در عمل باید چجوری وصل کنم⁉ولتاژ مرجع ام رو رو حالت avcc گذاشتم.

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      جفتشون رو وصل کن به vcc (اگه میخوای ولتاژ مرجعت ۵ ولت باشه)

  2. Avatar

    مهمان

    مهدی

    سلام ممنون بایت اموزش خوبتولی قبلا نا جلوی هر ریجستر معنی فارسی رو هم مینوشتی که این خط کد چه معنی داره اون وقت خیلی قابل فهم تر بود اگه ممکنه اینارو هم به فارسی بگو جون من بگو
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    delay_us(10);// Delay needed for the stabilization of the ADC input voltage
    ADCSRA|=0x40;// Start the AD conversion
    while ((ADCSRA & 0x10)==0);// Wait for the AD conversion to complete
    ADCSRA|=0x10;

  3. Avatar

    مهمان

    میلاد

    سلام
    استاد ببخشید یه سوال؟
    نقش ۲۵۶ تو ایت پروژه چیه؟وقتی بجاش ۱۰۲۳ میذارم بیشتر از ۱٫۲۵ ولت رو نشون نمیده
    ممنون میشم بیشتر توضیح بدین
    مرسی

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      ولتاژ مرجع ضرب در ۱۰۰

  4. Avatar

    مهمان

    محمد

    با سلام
    هم تو شبیه سازی اینطوره هم تو عمل
    ADCH درسته من با دقت ده بیت میخوام

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      یه کاری کن
      تو ECA سوالت رو مطرح کن و کد ها و شماتیک پروژت و مشکلت رو اونجا مطرح کن…..

  5. Avatar

    مهمان

    محمد

    ببخشید من این برنامه رو نوشتم که برا انالوگ تو دیجیتاله :
    #include
    #include
    #include
    #include
    int i=0;
    int c;
    char a[];
    interrupt [TIM0_OVF] void timer0_ovf_isr(void){
    i++;
    if(i==4){
    ADCSRA=0b11000111;
    c=ADCH;
    itoa(c,a);
    lcd_clear();
    lcd_puts(a);
    i=0;
    }
    }
    void main(){
    lcd_init(16);
    #asm(“sei”)
    ADMUX=0b01100011;
    ADCSRA=0b10000111;
    TCCR0=0x05;
    TCNT0=0x00;
    TIMSK=0x01;
    }
    تو این برنامه رجیستر ADCW کار نمیکنه یعنی اعداد چرت و پرت نشون اعداد منفی و بیش تر از ۱۰۲۳ و …
    میشه یه کمک برسونید

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      کد پروژه رو همیشه زیپ کن و بفرست
      مورد بعد این که تو شبیه ساز این طوره یا در عمل؟
      اگه در عمل این طوره باس پایه های avcc-aref رو به vcc_پنج ولت_ وصل کنید

  6. Avatar

    مهمان

    محمد

    خودم مشکل رو حل کردم مقاومت پول اپ رو درست نذاشته بودم
    ممنون از حرفتون باعث شد برم با دقت تر نگاه کنم

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      اینم بگم که وقتی یه مشکلی برات ایجاد میشه اگه بخوای به دیگران نشون بدی دیگران هم باس وقت بزارن و وقت بزارن و مشکل رو پیدا کنن و معمولا کسی اینکار رو نمیکنه
      لذا بهتره به جای این که زیاد فک نکنی و خودت مشکل رو پیدا نکنی و سوال بپرسی و منتظر فکردن و احتمالا جواب دادن دیگران باشی کاری پیش نمیبری این طوری….
      البته نمیگم سوال نپرس….بپرس و حتما بپرس و شک نکن.
      ولی چیزی که خودت میتونی حل کنی و بهتر هم اینه چرا سوال کنی
      خدا رحم کنه زمانی که من پیر بشم. focus
      همه رو نصیحت میکنم laugh

      • Avatar

        مهمان

        شهریار

        سالاری

  7. Avatar

    مهمان

    محمد

    فرستادم
    اقا خیلی اقایی انقد سریع و خوب جواب میدی

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      بهتره همیشه سوالات رو تو eCA بپرسی
      البته بازم بهتره که خودت دنبال مشکل بگیری
      جواب رو از دیگران بشنوی ارزش ندارم به نظرم

  8. Avatar

    مهمان

    محمد

    من پایه های aref و avcc رو به ولتاژ ۵ وصل کردم
    از قبل ولی نمیشه

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      شماتیک و کد های پروژت رو تو Eca پیوست کن…

  9. Avatar

    مهمان

    محمد

    ممنون
    خیلی اقایی

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      چاکریم focus

  10. Avatar

    مهمان

    محمد

    با سلام
    من یه برنامه نوشتم که توسط adc انالوگ رو به دیجیتال تبدیل میکنه و روی lcd نشون میده
    این برنامه رو تو پروتئوس اجرا کردن درست اجرا شده
    ولی وقتی رو میکرو پروگرام میکنم وقتی اجرا میکنم اولش اعداد قاطی پاتی نشون میده
    ولی وقتی پایه adc رو وصل میکنم همیشه ۲۵۵ رو نشون میده یعنی حد اکثر ( این موضوع با هر ولتاژی صدق میکنه)
    دیگه اعصابم خرد شده لطفا یه راهنمایی بکنین
    با تشکر

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      تو پستی که تو eca گزاشتی جوابت رو دادم. good

  11. Avatar

    مهمان

    محمد

    سلام داداش مهدی.
    یک سوال داشتم؟؟؟؟
    چرا نریم سراغ بسکام؟
    بسکام چه ایرادی داره؟
    من تازه شروع کردم و میخوام رو یه زبانی کار کنم که کار باهاش اسون باشهو بشه زود یاد کرفتش.
    از آنجایی که بسکام به زبان بیسیک هستش و در رده زبانهای سطح بالا قرار داره ،بنظرم شاید یادگیری اون از زبان c راحتتر باشه. چون زبان c یک زبان میانیه.و اسمبلی هم که خودتون میدونید چه مکافاتی داره.
    لطفا زود جواب بدین من گیج شدم. smile help

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      تا جایی که من میدونم
      بسکام سادس(طوری که شنیدم)
      ولی سی یکم سخت تر از بسکامه….و سی قوی تره…..ملت اینو میگن
      اگه سی بلد باشی….AVR-ARDUINO-ARM رو میتونی برنامش رو بنویسی ولی برا بسکام تا جایی که من میدونم فقط برا AVR هستش
      مورد بعد این که C به نظرم زیباترین و آسون ترین زبونه….
      اگه سی بلد باشی ++C , C# هم یادمیگیری آسون
      و این که تو برنامه نویسی QT (حالا این QT فک کنم یه محیط باشه…) میتونی توش کد بزنی و برا تمام سیستم عامل های کامپیوتر و موبایل کد بزنی و….
      حالا بازم سوال کن از دوستان دیگه ظرر نداره

  12. Avatar

    مهمان

    علی

    سلام میشه در تلگرام گروه ایجاد کنی و لینگ اش را تو سایت بذاری و بچه ها عضو شن تبادل اطلاعات بهتر میشه
    ممنون بابت مطاب اموزشی تون

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      زیاد تو این چیزا نمیرم…
      بیشتر سایتم

  13. Avatar

    مهمان

    احمد

    آره داش ، ممنون .
    سایتت فوق العادست ، حداقل بخش avr ش . میتونه بهتر ازینم باشه laugh
    همینجوریشم فوق العادست

  14. Avatar

    مهمان

    احمد

    سلام
    ببخشید میشه یه توضیحی راجب اون الماتهای سمت چپ تو پروتیوس یدین ؟؟
    و اینکه تو پرونیوس چی سرچشون کنیم ؟
    ممنون

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      مقاومت متغییر منظورته؟؟؟
      تو کتاب خونه قطعات اگه بری کتیجوری مقاومت ها…بعد قسمت متغییرش(یکی مونده به آخر) و بعد تو ساب کتیجوری مقاومت های نمایش داده شده یکی رو انتخاب کنی ولی اونی که active هستش قطعه زیر هستش….pot-hg

  15. Avatar

    مهمان

    saeed ghazi

    اونوقت الان پروژه کامل بسته بشه چجوری خروجی بگیرم ازش

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      متوجه منظورت نشدم…
      میشه بیشتر توضیح بدی و واضح تر

  16. Avatar

    نویسنده سایت

    amir021

    براشلس laugh
    http://aryanelectro.blogfa.com/post/6
    این واضح نوشته
    مثلان موتور هارد cool

  17. Avatar

    نویسنده سایت

    amir021

    مهدی جان smile
    می خام خودم فایل هاشو بسازم (نحوه ساخت) bb
    اگرم شد یک فیلم از املکردش بزارم blush
    راستی این عکس خودم رو چه جوری عوض کنم unknw

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      این طوری خیلی بهتره….هم برا خودت هم برا کسایی که مطلب رو میخونن….چون کپی ساده مطلب از یه سایت به این سایت اصلا فایده ای نداره …..
      در ضمن خودت مطلب رو میزاری به اسم خودت هم میزاری good
      فیلم بزاری که خیلی خوب میشه
      بابد بری سایت زیر و ثبت نام کنی توش و تو پروفایلت…تو سایته رو میگم…تو پروفایلت یه عکس برا خودت انتخاب کنی…
      https://wordpress.org/support/register.php

      • مهدی دمرچیلو

        نویسنده این مطلب

        مهدی دمرچیلو

        راستی موتور براشیل چیه؟؟؟؟
        نشنیده بودم تا حالا pardon

  18. Avatar

    نویسنده سایت

    amir021

    مهدی جان باشه good
    فعلا یک چیز جالب پیدا کردم در مورد موتور براشیل cool
    هست الماناشو میخرم اگه درست کار کرد میزارم mail
    راستی به اس خودم میزاری rtfm

  19. Avatar

    نویسنده سایت

    amir021

    من میرم تو کارش cool
    مطالب رو میزارم تو یک وبلاگ اگه خوب بود اضافه کن boast
    مطالب رو از سایت های خارجی کپی می کنم diablo
    نظرت چیه crazy

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      یه چیز…
      اگه میخوای بزاری تو وبلاگ دیگه نمیخواد اینجا بزاری…
      مطلب کپی(از سایت های فارسی و ایرانی) تو سایت نمیزاریم
      مطلب هم از سایت های خارجی فقط اون خوب هاش و تست شده هاش….
      تعداد زیاد مطلب مهم نیست(تو این سایت) …کیفیت مطلب مهم هستش بیشتر
      زاسش خودم هم تو فکر این کار بودم….اصلا تو برنامم بود…ولی وقت نمیشه dash….یعنی موافقم crazy
      چند تا از این مطالبی که میخوای بزاری رو تو سایت رو لینکش رو بهم بده یا بزار تو یه فایل ورد و… و بده ببینم good

  20. Avatar

    نویسنده سایت

    amir021

    راستی مهدی mail
    چرا یک بخش انالوگ اضافه نمی کنی search

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      آخه کسی آنالوگ کار نمیکنه…..همه بچه ها دیجیتال کار میکنن….اگه کی پیدا شد که آنالوک کار کنه….و بخواد تو سایت مطلب دربارش بزاره…بخش آنالوگ رو هم اضافه میکنم تو سایت

  21. Avatar

    نویسنده سایت

    amir021

    انشالله yes
    راستی مهدی mail
    چرا یک بخش انالوگ اضافه نمی کنی search

  22. Avatar

    نویسنده سایت

    amir021

    محمد جان راستی من احل مشهدم
    اگه خدا بخاد سه ماه تعطیلی این کلاس های میکرو رو میرم بعد میام این سایتو میترکونم bb
    یه عالمه ماژول و برنامه باهم میسازیم اگه خدا بخاد crazy
    از ECA رو میزاریم تو جیبه مون laugh
    اگه تا پنج ماهه دیگه نویسنده بخاین blush
    نظرت چیه؟
    الان بجز شما کی تو برنامه نویسی وارده blush تو این سایت؟

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      انشالله
      هر موقع خواستین در خدمتیم… yes
      تقریبا تمام نویسنده های سایت برنامه نویسی بلدن—–البته اگه برنامه نویسی c و خانواده هاش منظورت باشه…..

  23. Avatar

    مهمان

    امیر

    اقا مهمد اگه میشه شما برام برنمشو با پوتیوس درست کنی ممنون میشم
    من برنامه رو تغیر دادم و گذاشتم
    #include
    #include
    void main (){
    DDRB.1=0;
    DDRB.2=0 ;
    DDRB.3=1 ;
    while(1){
    delay_ms(10);
    if(PINB.1==1)PORTB.3=1;
    if(PINB.2==1)PORTB.3=0;
    }}
    میکروم ایتاینی 13 هستش
    با پروتیوس تست کردم فقد میشه یک بار خاموش و روشن کنم
    در عمل میکرو قاطی میکنه laugh

  24. Avatar

    مهمان

    امیر

    shock مگه چی باید می فرستادم

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      از پروتئوس و کدویژن ورژن چند استفاده میکنی؟؟؟؟

  25. مهدی دمرچیلو

    نویسنده این مطلب

    مهدی دمرچیلو

    من چی گفتم و تو برام چی فرستادی dash

  26. Avatar

    مهمان

    امیر

    شرمنده داداش که انقدر شما رو اذییت می کنیم sorry

  27. Avatar

    مهمان

    امیر

    داداش در پروتیوس
    امتحان کردم فقد روشن میشه و خاموش نمیشه
    در عم امتحان کردم فقد در لحضه روشن میشه (وقتی که پین بی صر یک میشیه ) wacko
    چکار کنم سر در گمم

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      فایل های کدویژن+فایل پروتئوس رو تو یه فایل زیپ بفرست برام

  28. مهدی دمرچیلو

    نویسنده این مطلب

    مهدی دمرچیلو

    led رو باید به پایه PB0 وصل کنی و نه PB4
    اگه دقت کنی فقط پایه PB0 رنگش (از آبی به قرمز) تغییر میکنه و نه پایه های دیگه
    کلید ها هم باید به PA0 و PA1 وصل بشن…..برا کلید ها مقاومت پول دان هم بزاری بهتره

  29. Avatar

    مهمان

    امیر

    داداش برنامه که دادی کار نمیکنه چکار کنم
    #include
    void main()
    {
    DDRA=0X00;//KEY
    DDRB=0XFF;//LED
    while(1)
    {
    if(PINA==0X01)PORTB=0X01;
    if(PINA==0X02)PORTB=0X00;
    };
    }

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      تو پروتئوس یا تو عمل؟؟؟؟
      عکس بده ببینم کجا اشتباه کردی

  30. Avatar

    مهمان

    امیر

    مباحثشو نمی دونم ولی ادرس دو سایتشو می دونم
    http://www.ebtekarsazan.com/info/
    http://www.chistatvtc.ir/index.php

    داداش به نظرت کدوم بهتره برم laugh

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      به هیچ وجع نرو سراغ بسکام…..از ما گفتن از شما نشنفتن…
      زنگ بزن ببین مباحث آموزش مقدماتی و آموزش متسط و حرفه ای……لیست مباحثش رو بگیر و بهم بگو…..قیمت هم یادت نره…..شنبه زنگ بزن….فردا جمعه هستش…..احتمالا تعطیل باشه

  31. Avatar

    مهمان

    امیر

    من یک اموزش گاه تو مشهد 2 جا پیدا کرد یکی 250 تومن یکی 360 تومن
    250 تومنی هم بسکام یاد میده هم سی
    برنامه هم داداش من می خوام با دو کلید یک لامپ رو خاموش و روشن کنم
    مثلا یک کلید روشن کنه یک کلید خاموش
    برنامه من
    #include
    void main(){
    DDRB.0=0;
    DDRB.1=0;
    DDRB.2=1;
    while(1){
    if(PINB.0==1)
    PORTB.2=1;
    if(PINB.1==1)
    PORTB.2=0;} }
    با تشکر ok

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      از این کد استفاده کن….پورت آ >>> کلید بهش وصل میشه و پورت بی LED ها بهش وصل میشن
      void main()
      {
      DDRA=0X00;//KEY
      DDRB=0XFF;//LED
      while(1)
      {
      if(PINA==0X01)PORTB=0X01;
      if(PINA==0X02)PORTB=0X00;
      };
      }

      در ضمن اول کد های بالا کتاب خونه رو هم بزار….
      در ضمن اونی که میگی ۲۰۰-۳۰۰ تومن مباحثش رو بگو ببینم چیا درس میدن

  32. مهدی دمرچیلو

    نویسنده این مطلب

    مهدی دمرچیلو

    سلام
    کد پروژه و مدار در عمل و… رو بفرست ببینم…. dash

  33. Avatar

    مهمان

    امیر

    سلام من می خام مثل شما از برنامه نویسی میکرو فول بشم (مثلا پروژه صنعتی pardon )
    حالا می خام بدونم شما به صورت خوداموزش شروع کردی
    یا کلاس خصوصی رفتی
    اگه خوداموز بود چه کتاب و چه جزوه ای خوبه
    اگه کلاس بوده یکم درمورد هزینه ای که کردی و قیمت و.. توضیح بدین
    من رشتم الکترونیکه این ترم یک درس میکرو پروسسور داریم اما فقد سخت افزارو توضیح میدن
    می خواستم بدونم ایا تو دانش گاه به صورت کامل یاد میدن یا باید به صورت تخصوصی باید خودم پیگیر بشم wacko
    خدایش گیج شدم راستی اگه لطف کنید برنامه رو خودتون اصلاح کنید تا ببینم چی رو اشتباه کردم
    خسته شدی خوندی ببخشید طو لانی شدmail

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      خودم خوندم….کتاب جابر الوندی+انجمن های برق(جواب سوالاتم)
      تو دانشگاه کامل درس نمیدن ، اگه هم بدن مجبور میشن…..
      کدوم برنامه؟ unknw

  34. Avatar

    مهمان

    امیر

    مطلب مربوط به مقاومت کجاست من پیدا نمی کنم لینکشو بزارید sorry

  35. مهدی دمرچیلو

    نویسنده این مطلب

    مهدی دمرچیلو

    کارت راه افتاد یا هنوز مشکل داری؟

  36. Avatar

    مهمان

    امیر

    کسی نیست من را یاری کند no

  37. Avatar

    مهمان

    امیر

    برنامم ایراد داره یا سخت افزار خاصی می خاد میشه شما برنامم رو اصلاح کنید blush

  38. Avatar

    مهمان

    امیر

    مقاومت پول دان چیه search
    من می خام با دو کلید یک لامپ رو خاموش و روشن کنم laugh

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      مطلب مربوط به مقاومت رو بخون

  39. Avatar

    مهمان

    امیر

    سلام من می خوام یک برنامه بنویسم دچار مشکل شدم کارش اینه که موقعی که کلید فشار داده شد یک ال ای دی روشن بشه اگه اون یکی کلید فشا ر داده شد ال ای دی خاموش بشه برنامه ای که من موشتم laugh
    #include
    void main(){
    DDRB.0=0;
    DDRB.1=0;
    DDRB.2=1;
    while(1){
    if(PINB.0==1)
    PORTB.2=1;
    if(PINB.1==1)
    PORTB.2=0;} }
    اما قفقد موقعی که کلید رو مزنم ال ای دی روشن میشه و روشن نمی مونه چکار کنم چیزی کم داره wacko

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      مدارت رو ببنم
      مقاومت پول دان گزاشتی

  40. Avatar

    مهمان

    Amir

    mosking به نظر شما از lcd کارکتری رو یاد بگیرم چه جوریه

  41. Avatar

    مهمان

    Amir

    دادا اخر سایت کجایه no

  42. Avatar

    مهمان

    Amir

    گفتی بهتره برم زبان سی رو قوی کنم
    میشه بگی چکار کنم
    bye کتابی هست پی دی اف چیزی بهم معرفی کنی

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      کتاب : برنامه سازی پیشرفته نوشته دکتر احمد فراهانی کتاب درسی پیام نور رشته کامپیوتر

  43. Avatar

    مهمان

    Amir

    اقا مهدی
    توضیح بدین صواب داره help

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      جان داش حسش نیست…..هرجاش مشکلی داری بگو دربست درخدمتیم……به نظرم اگه تازه کاری برو از آخر سایت شروع کن و بیا صفحات اولیه سایت…..مطالبی آخری سایت آسون هستن و برا تازه کارا خوبه و به تدریج سخت میشه

  44. Avatar

    مهمان

    Amir

    دادا یک توضیخ خط به خط به برنامه اضافه کن خدایش هچی نمی فهمم
    pardon

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      حسش نیست pardon

  45. Avatar

    مهمان

    Amir

    ببخشید در قسمت ریجیستر ADMUX
    یت های ۶ و ۷ (REFS 1,0 ) : طبق جدول زیر میتونیم ولتاژ مرجعمون رو انتخاب کنیم :
    منضور از refs1و 0 چیه واقعا گیج شدم wacko

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      هر ریجستر از ۸ بایت تشکیل شده(۸ تا ۰ و ۱) که به هر ۸ بایت میگن ۱ بیت…….حالا یعنی هر ریجستر ۸ تا خونه داره که میتونی توش ۰ بزاری یا ۱ بزاری…….حالا با توجه به این که REFS0 و REFS1 بیت های ۷ و ۸ ریجستر admux هستن……لذا با صفر و یک کردن اینا ولتاژ مرجع رو میتون انتخاب کنیم که در زیر انواع حالت ها رو میتونی ببینی
      آموزش avr
      با توجه به جدول بالا تو (منظور از حالت شماره ردیف جدول بالا هستش…..حالت ۱=ردیف ۱ جدول بالا)
      حالت ۴ : ولتاژ ۲٫۵۶ داخلی رو به عنوان ولتاژ مرجع درنظر میگیره
      حالت ۲(۱) : ولتاژِ که به پایه (AVCC(AREF میکرو میدیم رو به عنوان ولتاژ مرجع درنظر میگیره
      حالت ۳ : رزرو شده–یعنی شما نمیتونید این مقادیر رو به REFS0 و REFS1 بدید….
      الان گرفتی؟؟؟؟

  46. Avatar

    مهمان

    Amir

    سلام
    خط سه نه و 14 مل چیه سردر نمیارم

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      خط ۳ : این کتابخونه شامل توابعی که کارشون تبدیل انواع متغییر به هم دیگه هستش
      خط ۹ : تو خط زیر>>>ADC_VREF_TYPE یه متغییر هستش که مقدار ۰x20 بهش داده شده است و ما این جا اومدیم به صورت یه متغییر سراسری تعریفش کردیم لذا هر جا از ADC_VREF_TYPE استفاده کنیم انگار مقدار ۰x20 رو قرار دادیم
      #define ADC_VREF_TYPE 0x20
      خط۱۴ : این تابع کار خواندن ولتاژ رو انجام میده…..به وسیله این تابع میفهمیم که مقدار ولتاژ چقدره
      به نظرم بهتره بری زبون C تو قوی کنی……این طوری خیلی اضیت مییشی
      موفق باشی داش امیر

  47. Avatar

    مهمان

    مهدی

    دستت درد نکنه وقت می ذاری

  48. Avatar

    مهمان

    مجید

    کامل نخونده بودم، توضیحات داخل پست جامع بود. تشکر

  49. Avatar

    مهمان

    مجید

    سلام، با تشکر از سایت عالیتون، یه سوال داشتم، تویه رجیستر ADMUX بیت 5 (ADLAR) برایه چیه؟

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام-
      مربوط به نحوه تنظیم بیت ها تو حالت ۱۰ بیت هستش….که همون صفر وباشه بهتره

  50. Avatar

    مهمان

    حسین

    عالی
    انشاالله همیشه سرزنده و شاد باشی
    مرسی give_rose

1 2