نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ

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

23

به نام خدا

آموزش جامع میکروکنترلر 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

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

تعداد مطالب : 362 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
ارسال دیدگاه
168
نظرات این مطلب بسته شده است.
  1. مهمان

    aec

    درود کاش خط به خط توضیح میدادین کد رو من بازم سردرنیاوردن

    این کد ها تو اتمل استودیو هم اجرا میشن یا فقط کد ویژن 🤔
    کدویژن کرکه و کرک هم از لحاظ اخلاقی درست نیست

  2. مهمان

    علی

    خدا اجرتون بده. هم آموزش علمی در اختیار مخاطب گذاشتید و هم یک حدیث زیبا از پیامبر

  3. مهمان

    حمیدرضا

    سلام خسته نباشید.
    اگر موقع اتمام عملیات تبدیل، بیت ADSC میشه 0، پس چرا توی خط 16 ما بیت ADIF رو ملاک بررسی اتمام عملیات در نظر گرفتیم؟
    و اینکه من خودم ملاک بررسی رو همون بیت ADSC درنظر گرفتم اما کار نرکد. علتش چیه؟ مگه موقع اتمام عملیات این بیت 0 نمیشه؟

  4. مهمان

    سلام خسته نباشید
    میشه اموزش درمورد راه اندازی مبدل دیجیتال به انالوگ میکرو هم بزارید؟(DAC)
    ممکن هست یا خیر؟!

  5. مهمان

    مهندس برق

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

  6. مهمان

    pm

    سلام خیلی لطف میکنید این اطلاعات رو در سایتتون میگذارید ممنون

  7. مهمان

    amir

    سلام
    ممنون از توضیحاتتون. می‎خواستم بدونم فرکانسی که بر عددای مختلف تقسیم میشه تا فرکانس کاری واحد adc رو به وجود بیاره چه فرکانسی هستش؟ فرکانس خود میکرو هست؟
    و تا چقدر مینونه باشه؟

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

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

      سلام.
      دقیقا متوجه منظورتون نشدم ولی :
      رجیستر ADCSRA، فیلد ADPS ( بیت 0 تا 2 ) وظیفه تقسیم فرکانسی واحد ADC رو بر عهده داره – که مقدارشو میتونید 1-2-4-8 و … تنظیم کنید تا فرکانس میکرو بر این مقدار فوق تقسیم بشه حاصل بشه فرکانس واحد ADC

  8. مهمان

    ایزدپناه

    مهندس عزیز سلام :
    میخواستم بدونم چطور میشه مقدار منفی سیگنال سینوسی رو با adc بخوانیم؟لطفا راهنمایی فرمایید . تشکر.

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

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

      سلام-تنها روشی که من بلدم – سیگنال رو شیف میدی بالا تا مثبت بشه و بعد سطح ولتاژشو میاری بین 0 تا 5 ولت.
      مثلا بین -7 تا +7 هستش – بعد شیفت دادن میشه 0 تا +14 و بعد از کاهش سطح ولتاژ باید بشه 0 تا +5

  9. مهمان

    مسلم حسینی

    متشکرم از مطالب خوب شما من میخواستم یک برنامه را از اتمل استودیو ورژن 7را به پروتیوس وارد کنم بعد هم میخواستم بدونم چطور میشه با ای سی 74244برنامه را پروگرام کنم میشود

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

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

      خب کد هگز اتمل استدیو رو میدی به پروتئوس – 74244 سرچ کردم آیسی بافر هستش – چه ربطی به پروگرام کردن داره؟

  10. مهمان

    مسعود سلیمانی

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

  11. مهمان

    ایران

    ضریب تقسیم فرکلنسی
    این قضیه تحریکCPU باSFIORتوضیح میدی نفهمیدم چه جور تحریک میکنه

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

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

      بیت ACME از رجیستر SFIOR :
      Analog Comparator Multiplexer Enable
      بیتهای ADTS0 و ADTS1 و ADTS2 :
      ADC Auto Trigger Source
      خب اگه بیت ADATE از رجیستر ADCSRA یک بشه – 3 بیت بالا – تعیین میکنن کدام تغییر وضعیت ( trigger ) باعث رخ دادن تبدیل adc بشه.
      که خب برا تعیین منبع شروع تبدیل ( یه چیزی رخ بده تا تبدیل adc انجام بشه ) رو با مقدار دهی بیت های بالا انجام میشه – که نحوه مقدار دهی بیت های فوق – رو در جدول 86 ( صفحه 221 – دیتاشیت مگا16) – یا تو فصل adc دنبالش هم بگردی پیدا میکنی این جدولو
      0 : Free Running mode ( نیازی به تحریک شدن برای شروع تبدیل نداره – یرخی تبدیل میکنه میره – فک کنم )
      1 : Analog Comparator
      2 : External Interrupt Request 0
      3 : Timer/Counter0 Compare Match
      4 : Timer/Counter0 Overflow
      5 : Timer/Counter1 Compare Match B
      6 : Timer/Counter1 Overflow
      7 : Timer/Counter1 Capture Event

  12. مهمان

    سعید

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

  13. مهمان

    MOrteZA

    #define F_CPU 1000000UL
    #include
    //#include
    #include
    #include
    #include
    //#define ADC_VREF_TYPE 0x20
    void lcd_cmd(unsigned char cmd) // create a function for sending commands to lcd
    {
    PORTD = cmd ; //using port b for data and command
    PORTC &= ~(0x01); //using port c for controlling lcd with rs rw en pins.clear rs pin for sending
    PORTC |=(0x04); // set enable
    _delay_ms(10);
    PORTC &=~(0x04); // clear enable
    }
    void lcd_data(unsigned char data) // create a function for sending data to lcd
    {
    PORTD = data ; //using port b for data and command
    PORTC |= (0x01); //using port c for controlling lcd with rs rw en pins.set rs pin for sending
    PORTC |=(0x04); // set enable
    _delay_ms(10);
    PORTC &=~(0x04); // clear enable
    }
    void lcd_str(char *str)
    {
    while(*str)
    lcd_data(*str++);
    }
    void lcd_init()
    {
    lcd_cmd(0x38); //8bit mode
    lcd_cmd(0x0e); //enable cursor
    lcd_cmd(0x06); //cursor increament
    lcd_cmd(0x01); //lcd clear
    lcd_cmd(0x80); //select 1st row and 1col for data
    }
    int read_adc()
    {
    ADCSRA|= (1<<ADEN) | (1<<ADSC);
    while ((ADCSRA & (1<<ADIF))==0);
    return ADCH;
    }
    int main(void)
    {
    DDRD = 0xff;
    DDRC = 0xff;
    lcd_init();
    float voltage;
    char str[2];
    ADMUX= (1<<ADLAR);
    ADCSRA= (1<<ADEN) | (1<<ADSC) | (1<<ADPS1) | (1<<ADPS0);
    lcd_str(" Voltage is");
    while (1)
    {
    voltage = read_adc();
    voltage = (voltage * 5)/256 ;
    dtostrf(voltage,1,4,str);
    lcd_cmd(0xc5);
    lcd_str(str);
    }
    }
    سلام این کد مال atmel studio هست
    lcd پورت های data هر 8 رو به پورت D و rs , e رو به پورت c0 , c3 وصل کردم و پایه rw رو زمین کردم
    یا علی

  14. مهمان

    مهدی امانی

    یه چند جایی از اون فایل راهنمای من ایراد داره ظاهرا
    مقدار دهی رجیستر

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

      مهدی دمرچیلو

      تصحیح کن بده مجدا قرار بدم good

  15. مهمان

    مهدی امانی

    سلام و خسته نباشید
    سال قبل یه راهنما برای پروژه اول همین جلسه برا شما ارسال کردم و هیچ جوابی نگرفتم و خیلی دلخور شدم. یه جورایی اول کار میکرو برام حساب میشد و دلسرد شدم
    بعد مدت ها امروز اودم توی آموزش این صفحه کارمو مجدد شروع کنم دیدم فایل راهنمای منو پایین پروژه قرار دادین و من خبر نداشتم
    give_rose dash
    هیچی دیگه . خودمم مرور کردم .

  16. مهمان

    amir

    سلام میشه اموزش وقفه adc هم بزاری هر چی تو نت میگردم نیست

  17. مهمان

    مهدی

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

  18. مهمان

    س

    سلام میگم چرا اینجا return تو adc h زدی چرا تو adcw نزدی

  19. مهمان

    عسل

    در واقع خروجی رو روی pinb.0 میخوام بریزم.
    ورودی:x
    خروجی:y که روی pinb.0 ریخته میشه

  20. مهمان

    عسل

    ببینید من یه ولتاژ آنالوگ به میکرو میدم که چون این ولتاژ آنالوگه و برای میکرو قابل فهم نیست از بخش adc میکرو استفاده میکنم
    بر اساس اینکه ورودی مقدار x رو داشته میخوام بگم مثلا pinb.0 مقدار y رو داشته باشه.
    میدونیم که مقادیر پایه های میکرو یا صفر هستن یا یک . اما من میخوام مقدار pinb.0 عددی بین 0تا یک باشه مثلا 0.2 بشه
    چطوری میتونم این خروجی ر از pinb.0 بگیرم.

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

      مهدی دمرچیلو

      خب پایه های پورت A که همشون Adc دارن و رو اون پایه ها بحثی نیست – اما برا پورت های دیگه که پایه هاشون adc نداره – میتونید از تایمر( pwm ) برای این کار استفاده کنید.

  21. مهمان

    عسل

    سلام ، ممنون از مطلب مفیدتون
    اگر من بخوام خروجی adc v رو به صورت آنالوگ از میکرو بگیرم(فقط هم از یک پین بگیرم) یعنی ورودی یه چیزی بوده حالا من میخوام بر اساس ورودی، خروجی مثلا 0.2 ولت داشته باشم و اینکه خروجی رو حتما میخوام از یک پین بگیرم. چیکار باید بکنم?

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

      مهدی دمرچیلو

      سلام
      متوجه نشدم دقیقا میخواین چیکار کنید.

  22. مهمان

    amir

    سلام
    من متوجه نشدم معنی (while(ADSRA==0 چیه؟؟؟؟

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

      مهدی دمرچیلو

      سلام-تا زمانی که مقدار رجیستر ADCSRA صفر هستش…

  23. مهمان

    علی

    سلام و خسته نباشید بابت سایت خوبتون و سوالم اینه که الان این برنامه فقط مقدار dc رو نشون میده، وقتی به adc سینوسی دادم، lcd مقدار صفر نشون داد، برای اینکه سینوسی رو هم نشون بده چه تغییری لازمه؟؟

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

      مهدی دمرچیلو

      سلام.بستگی داره.اولا نباید مقدار ولتاز شما به زیر ۰ ولت بره
      ولتاژ منفی نباید به adc بدی
      اگه ولتاژت قسمت منفی داره باید شیفت ولتاژ بدیش
      حالا بازم بستگی به فرکانس موجت هم داره.اگه بالا باشه.میزاان تغیرات اعداد تو نمایشگر زیاد میشه و نمایشگر به مشکل میخوره

  24. مهمان

    محدثه

    سلام
    خدا قوت
    زمانی که دو تا ورودی (مثلا دو تا سنسور) به adc میکرو وصل بشه چجوری میکرو بهشون رسیدگی میکنه؟کدش چجوری تغییر میکنه؟
    تشکر

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

      مهدی دمرچیلو

      سلام – امقدار پایه ها رو پشت سر هم میخونیم – در داخل تابع main هم اگه نیاز باشه پایه های مورد استفاده رو باید پیکربندی کنیم در نقش adc تا جایی که در خاطرمه.
      read_adc(0);
      .
      .
      .
      read_adc(1);

  25. مهمان

    حمید رضا

    سلام خسته نباشید .
    ببخشید من زیاد وارد نیستم . فقط میخواستم بدونم نحوه جابجایی پایه ها چجوریه؟ مثلا توی همین برنامه به جای پایه ۴۰ به پایه ۳۰ وصل بشه ؟
    چند جا فرموده بودین مطالب adc مربوط به avr ، اوناروهم خوندم چیزی متوجه نشدم یا هرچی با برنامه کلنجار میرم جواب نمیده ممنون میشم راهنمایی کنید .

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

      مهدی دمرچیلو

      سلام
      جابجایی بین پایه های adc? خب رجیستر ADMUX رو بخونین توضیحاتشو – کم بود – تو نت بزنید و توضیحات دیگران رو هم بخونید – دیتاشیت هم که هستش.

      • مهمان

        حمید رضا

        دمت گرم .
        فقط یه سوال دیگه برای پورتای دیگه چی ؟ از همین روش هست ؟
        مثلا پورت b، اگه بخوایم به جای پورت ۱و۲ از پورت ۵و۶ استفاده کنیم ولی همون مقدار بهمون بده ؟ smile

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

          مهدی دمرچیلو

          adc فقط رو یه پورت سوار هستش.

  26. مهمان

    عرفان

    با عرض سلام و تشکراز مطالب مفید سایتتون
    یه سوال داشتم
    منظور از اینکه فلان میکرو کنترلر ۸ بیتیه یعنی چی؟

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

      مهدی دمرچیلو

      سلام
      رجیسترها ۸ بیتی هستن – مثلا تو ارتباط سریال دیتایی بخوای بخونی یا بنویسی به طبع اونم ۸ بیتی میشه… چیزی که میدونستم…
      مطلب زیر رو هم بخون :
      http://digiato.com/article/2014/10/30/%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-64-%D8%A8%DB%8C%D8%AA%DB%8C-%DA%86%DB%8C%D8%B3%D8%AA%D8%9F/

  27. مهمان

    علی

    سلام میشه پالس مربعی ۱۰ MHZ با میکرو ساخت؟

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

      مهدی دمرچیلو

      سلام.حداکثر ۸ میگ
      یه کلاک برا ساخت سطح ۰ و یه کلاک برا سطح ۱
      فرکانس میکرو رو ۱۶ میگ در نظر بگیری….حداکثر ۸ میگ میتونه باشه موجت

  28. مهمان

    مهدی

    سلام خدا قوت اقا مهدی اگ میشه درباره خط ۱۶ یه توضیحی بدید

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

      مهدی دمرچیلو

      سلام
      #define ADC_VREF_TYPE 0x20
      ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

      خب مقدار ADC_VREF_TYPE برابر ۰x20 هستش – این از این.
      تو خط دوم، ADC_VREF_TYPE با ۰xff اند بیتی میشه ( اگه نمیدونی چیه، تو نت سرچ کن – تو سایت تو قسمت برنامه نویسی c هم فک کنم آموزشش رو گزاشتم) و جوابش میشه ۰x20 و این جواب با adc_input اور بیتی میشه( اینم برو آموزشش رو بخون که اور بیتی یعنی چی )، این adc_input هم که شماره پایه Adc ما هستش و ما از پایه ۰ استفاده میکنیم و لذا اور بیتی ۰x20 با ۰ میشه همون ۰x20 ؛ و بعد این جواب به رجیستر ADMUX داده میشه که بیت ۵ این رجیستر ۱ میشه و بقیه بیتهاش ۰ میشن

  29. مهمان

    رضا123456789

    سلام.من از کد ویزارد استفاده میکنم.هر متغیری میتونه تو تابع پایین استفاده شه؟یا فقط باید رشته باشه؟
    lcd_puts
    با lcd_putsf چه فرقی داره؟
    اگه میشه برنامم رو چک کن.برنامه هم برات میفرستم به ایمیلت.

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

      مهدی دمرچیلو

      سلام.فقط رشته
      اگه عدد داری باید به رشته تبدیل کنی به کمک توابع itoa و ftoa که پروزه های avr توی سایت رو بررسی کنی نحوه کارش دستت میاد

  30. مهمان

    رضا

    سلام—–(ftoa(voltage,2,str
    دستور بالا ، متغیر voltage رو دو رقم اعشار روند میکنه و تبدیل به استرینگش میکنه؟

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

      مهدی دمرچیلو

      سلام – بله –
      متغیر اعشاری فوق رو در Str ذخیره میکنه – بعد از فراخونی این تابع باید از Str استفاده کنیم.

  31. مهمان

    یاسر

    میگم دمتون گرم که این سایتو درست کردین کار مردمو راه میندازین ولی حداقل جواب طرفو بدید!

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

      مهدی دمرچیلو

      سلام آقا یاسر
      والا تو هر سایت تاخیر تو پاسخ دهی وجود داره.
      منم پشت سایت نیستم همیشه و لذا نمیتونم در آن نظر دادن کاربر همون لحظه جواب بدم – ممکنه یه ساعت بعدش سایت رو بررسی کنم و جواب بدم.
      عرضم به حظورتون که این کار زیاد سخت نیست شما کافیه از دستور if استفاده کنید – مقدار adc رو با if های تو در تو بررسی کنید.

  32. مهمان

    یاسر

    کسی نیست؟

  33. مهمان

    یاسر

    سلام آقا مهدی
    یه سوال اگر این ولتاژی که از سنسور LM35(آنالوگ) وارد ADC میشه رو بخواهیم برای هر درجه دما یه متن هم روی LCD بنویسه باید چکار کنم

  34. مهمان

    ehsan-mikro

    سلام بر آقا مهدی عزیز
    فک کنم تو بحث ولتاژ refrence یه ایرادی باشه//منظورم اینه که به پایه AVCCفقط میشه تغذیه میکرو با یک فیلترLCمتصل نمود و قابلیت انعطاف نداره یعنی اینکه مثل پایه ی AREF نمی توان بصورت دلخواه ((متناسب با پروژه)) از 0 تا سطح تغذیه(مثلا5ولت)را داد—البته با توجه به این قضیه میگم که اگه ولتاژی که روی پایه AVCCاعمال میکنیم به اندازه( +-0.3ولت)با Vccمدار اختلاف داشته باشه قسمت ADCمیکرو مقایسه کننده اش از دس میره وحتی پورت دوگانه ای که در حالت غیر از ADC استفاده میشه هم میسوزه——–<>>>>>>>>>>>>–ایییی ک وگفتی یعنیییی چههه—هاااا ای چی بیده—من ک نوفهمم–اشتباه گفته بیدم؟؟؟؟؟

  35. مهمان

    Myself

    سلام
    ببخشید توی خط ۱۹ وقتی که شرط داخل حلقه رو این شکلی مینویسیم یعنی چی؟
    ببخشید من یه مشکل توی خط ۱۶ دارم
    چرا ما میایم با صفر عمل or کردن رو‌ انجام میدیم که‌ همیشه‌ حاصل خود عبارت غیر صفر میشه؟
    ممنون پیشاپیش

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

      مهدی دمرچیلو

      سلام
      خط 19) خب کاراکتر & یعنی اند بیتی، تو این خط گفتیم تا زمانی که بیت 5 ام(بیت شماره 4، شماره گزاری از 0 شروع میشه!) 0 هستش صبر کن >>>> به کمک & اومدیم غیر از بیت 5ام(شماره4) بقیه مقادیر رو 0 کردیم و اودیم گفتیم تا زمانی که این بیت 5ام مقدار 0 هست وایسا(while)
      به نظرم مطلب زیر رو بخون – و یکم تو گوگل سرچ کن – آموزشش پیدا میشه – من بخوام توضیح بدم بدتر میشه و شما به نظرم قاطی میکنید چون من بد توضیح میدم.
      تغییر و یا خوندن یه بیت از یک متغیر

  36. مهمان

    رضا

    من عینا همین کد ها رو استفاده کردم ولی lcd فقط 4.98 چاپ میکنه و تغییر هم نمیکنه
    نباید پوینتر استفاده کرد ؟

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

      مهدی دمرچیلو

      اون دو تا پایه توی شماتیک رو به vcc وصل کردی؟ اگه نشد یه بار یکیشون رو وصل کن اون یکی رو قطع و برعکس

  37. مهمان

    مهجور

    سلام جناب مهندس
    یه توضیحات و تغییراتی برا پروژه 2 گذاشتم ببین اگه مناسبه و ایرادی نداره برا بقیه بذار
    و بسیار متشکرم از همه وقتی که گذاشتی و به قول خودت زکات علم کردی.
    به ایمیل شما ارسال کردم

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

      مهدی دمرچیلو

      سلام
      پیوست کردم

  38. مهمان

    وحید

    سلام خسته نباشی
    الان این پروژه والتاژ بین 0و5 ولت نشون میده ولی اگر بخوام 0تا12 ولت نشون بده باید چه کار کنم , چه جوری محاسبه کنم میشه راهنمایی کنید.ممنون میشم

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

      مهدی دمرچیلو

      سلام
      تنها ورش فعلا فقط تقسیم ولتاژ به ذهنم میرسه

  39. مهمان

    محمدرضا

    آقا اوکی شد، با همون روش push-pull با استفاده از دو کانال درستش کردم. smile

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

      مهدی دمرچیلو

      good

  40. مهمان

    محمدرضا

    خب وقتی از روش اول میرم، lcd درست به فرمان های برنامه عمل نمیکنه و قاطی میکنه. میدونین مشکلش چیه؟ البته هنوز روش وقفه رو امتحان نکردم ببینم اونم همین مشکل رو داره یا نه

  41. مهمان

    محمدرضا

    اها…از روش push-pull برم!؟ یا از روش وقفه!؟

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

      مهدی دمرچیلو

      اولی

  42. مهمان

    محمدرضا

    سلام آقا مهدی، میگما میشه همزمان از سه تا کانال adc استفاده کرد!؟ میخوام یک کانال رو واسه سنجش ولتاژ خروجی یک مدار استفاده کنم (ولتمتر دیجیتال) و دو کانال دیگه رو در مد تفاضلی بزارم و تفاضل ولتاژ دو سر یک مقاومت رو اندازه بگیرم. چنین کاری شدنیه!؟

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

      مهدی دمرچیلو

      سلام
      مد تفاظلی کار نکردم
      ولی اندازه گیری 8 تا پشت سر هم، هم میشه و مشکلی نیست.
      ولی همزمان که نمیشه اصلا – اول پایه 1 رو اندازه میگیری بعد میری 2 و …

  43. مهمان

    ناصری

    سلام دوست عزیز
    سوالم چرا تایید نشد؟
    سوالم این بود که ftoa در برنامه خط 47 یعنی چی؟
    من وقتی تاپیش میکنم کامپایل میکنم برنامه ارور میگیره
    ممنون میشم راهنمایی کنید؟

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

      مهدی دمرچیلو

      سلام
      کدوم مطلب/؟
      تبدیل متغییر float به رشته

  44. مهمان

    ناصری

    سلام دوست عزیز خسته نباشی و بابت آموزشهای خوبت از تشکر میکنم
    من این برنامه رو نوشته ام اما error داد در خط 47 شما نوشتین ftoa این یعنی چی از این کلمه error .میگیره لطفا راهنمایی کنید
    با تشکر

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

      مهدی دمرچیلو

      سلام
      تابع ftoa میاد و یه متغییر float رو میگیره و در یه رشته ذخیره میکنه و در ضمن میشه تعداد ارقام اعشار رو تعیین کرد.

  45. مهمان

    حامد

    چرا سوالات من اصلا تایید نمیشه و نمایش داده نمیشه آقای مدیر سایت؟؟؟؟؟؟؟؟
    تا حالا چن بار نظر دادم سال پرسیدم اما اصلا ج ندادین که هیچ تاییدشم نکردین

  46. مهمان

    حامد

    آقا من یه ال سی دی کارکتری گرفتم اصلا نمیدونم چشه مدار میبندم باید 2 ساعت بزنم تو سرش اینورو اونورش کنم تا یه چیز نشون بده واللا فقط مستطیلارو نشون میده خیلی گیره چیکارش کنم؟

  47. مهمان

    بنده

    نزدیک ۲ ساعتی هست دارم میخونم خیلی سنگینه
    ولی عالی هستی مهندس خدا قوت

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

      مهدی دمرچیلو

      اکثر مطالبش رو نگفتم….وقتم خالی بشه این مبحث رو کامل رو میکنم.

  48. مهمان

    سهیل

    سلام
    در این سایت چیزی درمورد اینی که گفتم نبود؟؟؟!!!!!!

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

      مهدی دمرچیلو

      سلام
      چگونه همه پایه های میکروکنترلر AVR را PWM کنیم ؟؟

  49. مهمان

    سهیل

    سلام
    چه جوری می شود از همه ی پایه های avr خروجی pwm گرفت؟
    مثلا برای ساخت led ابشاری

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

      مهدی دمرچیلو

      سلام
      با استفاده از تایمر فک کنم
      میتونی لینک زیر رو هم ببینی….فک کنم طرف یه کتابخونه آماده برا اینکار نوشته (البته باید بسرچی تا پیداش کنی)
      http://www.eca.ir/forum2/index.php?board=161.0

  50. مهمان

    سهیل

    سلام
    چه جوری میشه از ADC خروجی PWM گرفت؟

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

      مهدی دمرچیلو

      سلام
      دقیقا متوجه نشدم
      یعنی میگی از پایه های adc به عنوان pwm استفاده کنی یا…؟
      چون adc میاد آنالوک رو میخونه و دیجیتال میکنه و pwm برعکس این کار رو میکنه

  51. مهمان

    saeed

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

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

      مهدی دمرچیلو

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

  52. مهمان

    مهدی

    سلام ممنون بایت اموزش خوبتولی قبلا نا جلوی هر ریجستر معنی فارسی رو هم مینوشتی که این خط کد چه معنی داره اون وقت خیلی قابل فهم تر بود اگه ممکنه اینارو هم به فارسی بگو جون من بگو
    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;

  53. مهمان

    میلاد

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

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

      مهدی دمرچیلو

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

  54. مهمان

    محمد

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

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

      مهدی دمرچیلو

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

  55. مهمان

    محمد

    ببخشید من این برنامه رو نوشتم که برا انالوگ تو دیجیتاله :
    #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_پنج ولت_ وصل کنید

  56. مهمان

    محمد

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

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

      مهدی دمرچیلو

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

      • مهمان

        شهریار

        سالاری

  57. مهمان

    محمد

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

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

      مهدی دمرچیلو

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

  58. مهمان

    محمد

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

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

      مهدی دمرچیلو

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

  59. مهمان

    محمد

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

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

      مهدی دمرچیلو

      چاکریم focus

  60. مهمان

    محمد

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

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

      مهدی دمرچیلو

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

  61. مهمان

    محمد

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

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

      مهدی دمرچیلو

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

  62. مهمان

    علی

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

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

      مهدی دمرچیلو

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

  63. مهمان

    احمد

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

  64. مهمان

    احمد

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

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

      مهدی دمرچیلو

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

  65. مهمان

    saeed ghazi

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

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

      مهدی دمرچیلو

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

  66. نویسنده سایت

    amir021

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

  67. نویسنده سایت

    amir021

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

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

      مهدی دمرچیلو

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

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

        مهدی دمرچیلو

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

  68. نویسنده سایت

    amir021

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

  69. نویسنده سایت

    amir021

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

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

      مهدی دمرچیلو

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

  70. نویسنده سایت

    amir021

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

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

      مهدی دمرچیلو

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

  71. نویسنده سایت

    amir021

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

  72. نویسنده سایت

    amir021

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

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

      مهدی دمرچیلو

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

  73. مهمان

    امیر

    اقا مهمد اگه میشه شما برام برنمشو با پوتیوس درست کنی ممنون میشم
    من برنامه رو تغیر دادم و گذاشتم
    #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

  74. مهمان

    امیر

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

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

      مهدی دمرچیلو

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

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

    مهدی دمرچیلو

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

  76. مهمان

    امیر

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

  77. مهمان

    امیر

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

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

      مهدی دمرچیلو

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

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

    مهدی دمرچیلو

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

  79. مهمان

    امیر

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

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

      مهدی دمرچیلو

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

  80. مهمان

    امیر

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

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

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

      مهدی دمرچیلو

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

  81. مهمان

    امیر

    من یک اموزش گاه تو مشهد 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;
      };
      }

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

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

    مهدی دمرچیلو

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

  83. مهمان

    امیر

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

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

      مهدی دمرچیلو

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

  84. مهمان

    امیر

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

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