به نام خدا
آموزش جامع میکروکنترلر AVR جلسه2
مبدل آنالوگ به دیجیتال
اگر به PORTA.0 تا PORTA.7 نگاه کرده باشید کنارشون یه کلماتی هست : ADC0 تا ADC7 که با استفاده از این پورت( PORTA ) میتونیم سیگنال آنالوگ رو دیجیتال کنیم.
=============================================
ریجسترهای دوس داشتنی خودمون!!!
پروژه avr یک
آموزش ساده ساخت دماسنج با lm35 رو بخونید.
پروژه avr دو
کدهای پروژه
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
#include <mega16.h> #include <delay.h> #include <stdlib.h> #asm .equ __lcd_port=0x12 ;PORTD #endasm #include <lcd.h> #define ADC_VREF_TYPE 0x20 // Read the 8 most significant bits // of the AD conversion result unsigned char read_adc(unsigned char adc_input) { 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; return ADCH; } void main(void) { float voltage; char str[10]; // ADC initialization // ADC Clock frequency: 1000.000 kHz // ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: None // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x83; lcd_init(16); lcd_puts(" Voltage is"); while (1) { voltage=read_adc(0); voltage=(voltage*5)/256; ftoa(voltage,2,str); lcd_gotoxy(6,1); lcd_puts(str);lcd_puts(" "); delay_ms(100); }; } |
توجه : یکی از بازدید کننده های سایت یه فایل شامل کد و یه سری توضیحات برای این پروژه قرار دادن که دیدنش ظرر نداره – البته من هنوز وقت و حوصله نکردم بشینم بررسیش کنم : دانلود
مهمان
درود کاش خط به خط توضیح میدادین کد رو من بازم سردرنیاوردن
این کد ها تو اتمل استودیو هم اجرا میشن یا فقط کد ویژن 🤔
کدویژن کرکه و کرک هم از لحاظ اخلاقی درست نیست
مهمان
خدا اجرتون بده. هم آموزش علمی در اختیار مخاطب گذاشتید و هم یک حدیث زیبا از پیامبر
مهمان
سلام خسته نباشید.
اگر موقع اتمام عملیات تبدیل، بیت ADSC میشه 0، پس چرا توی خط 16 ما بیت ADIF رو ملاک بررسی اتمام عملیات در نظر گرفتیم؟
و اینکه من خودم ملاک بررسی رو همون بیت ADSC درنظر گرفتم اما کار نرکد. علتش چیه؟ مگه موقع اتمام عملیات این بیت 0 نمیشه؟
مهمان
سلام خسته نباشید
میشه اموزش درمورد راه اندازی مبدل دیجیتال به انالوگ میکرو هم بزارید؟(DAC)
ممکن هست یا خیر؟!
مهمان
سلام واقعا سایت خوبی دارید قلم نوشتنتون هم خیلی دلنشینه ممنون از وقتی که میزارید
فقط یه نکته در جهت بهتر شدن اگر امکان دارد در معرفی رجیستر ها اسم کامل شون هم بنویسید که مخفف چی هستن… خیلی راحت اینطوری در ذهن پردازش میشه…سپس فراوان
مهمان
سلام خیلی لطف میکنید این اطلاعات رو در سایتتون میگذارید ممنون
مهمان
سلام
ممنون از توضیحاتتون. میخواستم بدونم فرکانسی که بر عددای مختلف تقسیم میشه تا فرکانس کاری واحد adc رو به وجود بیاره چه فرکانسی هستش؟ فرکانس خود میکرو هست؟
و تا چقدر مینونه باشه؟
نویسنده این مطلب
سلام.
دقیقا متوجه منظورتون نشدم ولی :
رجیستر ADCSRA، فیلد ADPS ( بیت 0 تا 2 ) وظیفه تقسیم فرکانسی واحد ADC رو بر عهده داره – که مقدارشو میتونید 1-2-4-8 و … تنظیم کنید تا فرکانس میکرو بر این مقدار فوق تقسیم بشه حاصل بشه فرکانس واحد ADC
مهمان
مهندس عزیز سلام :
میخواستم بدونم چطور میشه مقدار منفی سیگنال سینوسی رو با adc بخوانیم؟لطفا راهنمایی فرمایید . تشکر.
نویسنده این مطلب
سلام-تنها روشی که من بلدم – سیگنال رو شیف میدی بالا تا مثبت بشه و بعد سطح ولتاژشو میاری بین 0 تا 5 ولت.
مثلا بین -7 تا +7 هستش – بعد شیفت دادن میشه 0 تا +14 و بعد از کاهش سطح ولتاژ باید بشه 0 تا +5
مهمان
متشکرم از مطالب خوب شما من میخواستم یک برنامه را از اتمل استودیو ورژن 7را به پروتیوس وارد کنم بعد هم میخواستم بدونم چطور میشه با ای سی 74244برنامه را پروگرام کنم میشود
نویسنده این مطلب
خب کد هگز اتمل استدیو رو میدی به پروتئوس – 74244 سرچ کردم آیسی بافر هستش – چه ربطی به پروگرام کردن داره؟
مهمان
سلام وقتتون بخیر
من میخواستم اطلاعات از چندتا سنسور مختلف بخونم مثلا دوتا سنسور نور و دما چیجوری میتونم adc رو طوری فعال کنم و وقفه مورد نیاز هر سنسور بنویسم اگر میشه کد مناسب اتمل رو برام بنویسید.
مهمان
ضریب تقسیم فرکلنسی
این قضیه تحریک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
مهمان
سلام استاد واقعا کلمه استادی برازنده شماست.خدا خیرت بده .من مطالبی ازت یاد گرفتم که تو دانشگاه یاد نگرفتم و نگفتن نامردا.یه مبلغ ناچیزی رو به عنوان یه تشکر کوچولو به کارتتون واریز کردم .کمیش رو به بزرگیتون ببخشید .امیدوارم خدا بهتون عمر پربرکت و جیب پر از پول حلال بده انشالله.بازم از مطالب مفید و خوب سایتتون تشکر میکنم.ادامه بدید این راه رو که بسیار بسیار جوونای این مملکت به افرادی مثل شما نیاز دارن.یاحق
مهمان
#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 رو زمین کردم
یا علی
مهمان
یه چند جایی از اون فایل راهنمای من ایراد داره ظاهرا
مقدار دهی رجیستر
نویسنده این مطلب
تصحیح کن بده مجدا قرار بدم
مهمان
سلام و خسته نباشید

سال قبل یه راهنما برای پروژه اول همین جلسه برا شما ارسال کردم و هیچ جوابی نگرفتم و خیلی دلخور شدم. یه جورایی اول کار میکرو برام حساب میشد و دلسرد شدم
بعد مدت ها امروز اودم توی آموزش این صفحه کارمو مجدد شروع کنم دیدم فایل راهنمای منو پایین پروژه قرار دادین و من خبر نداشتم
هیچی دیگه . خودمم مرور کردم .
مهمان
سلام میشه اموزش وقفه adc هم بزاری هر چی تو نت میگردم نیست
مهمان
سلام چرا تو ای دی سی اچ رریترن زدی چرا تو ای دی سی دبلیو نزدی
مهمان
سلام میگم چرا اینجا return تو adc h زدی چرا تو adcw نزدی
مهمان
در واقع خروجی رو روی pinb.0 میخوام بریزم.
ورودی:x
خروجی:y که روی pinb.0 ریخته میشه
مهمان
ببینید من یه ولتاژ آنالوگ به میکرو میدم که چون این ولتاژ آنالوگه و برای میکرو قابل فهم نیست از بخش adc میکرو استفاده میکنم
بر اساس اینکه ورودی مقدار x رو داشته میخوام بگم مثلا pinb.0 مقدار y رو داشته باشه.
میدونیم که مقادیر پایه های میکرو یا صفر هستن یا یک . اما من میخوام مقدار pinb.0 عددی بین 0تا یک باشه مثلا 0.2 بشه
چطوری میتونم این خروجی ر از pinb.0 بگیرم.
نویسنده این مطلب
خب پایه های پورت A که همشون Adc دارن و رو اون پایه ها بحثی نیست – اما برا پورت های دیگه که پایه هاشون adc نداره – میتونید از تایمر( pwm ) برای این کار استفاده کنید.
مهمان
سلام ، ممنون از مطلب مفیدتون
اگر من بخوام خروجی adc v رو به صورت آنالوگ از میکرو بگیرم(فقط هم از یک پین بگیرم) یعنی ورودی یه چیزی بوده حالا من میخوام بر اساس ورودی، خروجی مثلا 0.2 ولت داشته باشم و اینکه خروجی رو حتما میخوام از یک پین بگیرم. چیکار باید بکنم?
نویسنده این مطلب
سلام
متوجه نشدم دقیقا میخواین چیکار کنید.
مهمان
سلام
من متوجه نشدم معنی (while(ADSRA==0 چیه؟؟؟؟
نویسنده این مطلب
سلام-تا زمانی که مقدار رجیستر ADCSRA صفر هستش…
مهمان
سلام و خسته نباشید بابت سایت خوبتون و سوالم اینه که الان این برنامه فقط مقدار dc رو نشون میده، وقتی به adc سینوسی دادم، lcd مقدار صفر نشون داد، برای اینکه سینوسی رو هم نشون بده چه تغییری لازمه؟؟
نویسنده این مطلب
سلام.بستگی داره.اولا نباید مقدار ولتاز شما به زیر ۰ ولت بره
ولتاژ منفی نباید به adc بدی
اگه ولتاژت قسمت منفی داره باید شیفت ولتاژ بدیش
حالا بازم بستگی به فرکانس موجت هم داره.اگه بالا باشه.میزاان تغیرات اعداد تو نمایشگر زیاد میشه و نمایشگر به مشکل میخوره
مهمان
سلام
خدا قوت
زمانی که دو تا ورودی (مثلا دو تا سنسور) به adc میکرو وصل بشه چجوری میکرو بهشون رسیدگی میکنه؟کدش چجوری تغییر میکنه؟
تشکر
نویسنده این مطلب
سلام – امقدار پایه ها رو پشت سر هم میخونیم – در داخل تابع main هم اگه نیاز باشه پایه های مورد استفاده رو باید پیکربندی کنیم در نقش adc تا جایی که در خاطرمه.
read_adc(0);
.
.
.
read_adc(1);
مهمان
سلام خسته نباشید .
ببخشید من زیاد وارد نیستم . فقط میخواستم بدونم نحوه جابجایی پایه ها چجوریه؟ مثلا توی همین برنامه به جای پایه ۴۰ به پایه ۳۰ وصل بشه ؟
چند جا فرموده بودین مطالب adc مربوط به avr ، اوناروهم خوندم چیزی متوجه نشدم یا هرچی با برنامه کلنجار میرم جواب نمیده ممنون میشم راهنمایی کنید .
نویسنده این مطلب
سلام
جابجایی بین پایه های adc? خب رجیستر ADMUX رو بخونین توضیحاتشو – کم بود – تو نت بزنید و توضیحات دیگران رو هم بخونید – دیتاشیت هم که هستش.
مهمان
دمت گرم .
فقط یه سوال دیگه برای پورتای دیگه چی ؟ از همین روش هست ؟
مثلا پورت b، اگه بخوایم به جای پورت ۱و۲ از پورت ۵و۶ استفاده کنیم ولی همون مقدار بهمون بده ؟
نویسنده این مطلب
adc فقط رو یه پورت سوار هستش.
مهمان
با عرض سلام و تشکراز مطالب مفید سایتتون
یه سوال داشتم
منظور از اینکه فلان میکرو کنترلر ۸ بیتیه یعنی چی؟
نویسنده این مطلب
سلام
رجیسترها ۸ بیتی هستن – مثلا تو ارتباط سریال دیتایی بخوای بخونی یا بنویسی به طبع اونم ۸ بیتی میشه… چیزی که میدونستم…
مطلب زیر رو هم بخون :
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/
مهمان
سلام میشه پالس مربعی ۱۰ MHZ با میکرو ساخت؟
نویسنده این مطلب
سلام.حداکثر ۸ میگ
یه کلاک برا ساخت سطح ۰ و یه کلاک برا سطح ۱
فرکانس میکرو رو ۱۶ میگ در نظر بگیری….حداکثر ۸ میگ میتونه باشه موجت
مهمان
سلام خدا قوت اقا مهدی اگ میشه درباره خط ۱۶ یه توضیحی بدید
نویسنده این مطلب
سلام
#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 داده میشه که بیت ۵ این رجیستر ۱ میشه و بقیه بیتهاش ۰ میشن
مهمان
سلام.من از کد ویزارد استفاده میکنم.هر متغیری میتونه تو تابع پایین استفاده شه؟یا فقط باید رشته باشه؟
lcd_puts
با lcd_putsf چه فرقی داره؟
اگه میشه برنامم رو چک کن.برنامه هم برات میفرستم به ایمیلت.
نویسنده این مطلب
سلام.فقط رشته
اگه عدد داری باید به رشته تبدیل کنی به کمک توابع itoa و ftoa که پروزه های avr توی سایت رو بررسی کنی نحوه کارش دستت میاد
مهمان
سلام—–(ftoa(voltage,2,str
دستور بالا ، متغیر voltage رو دو رقم اعشار روند میکنه و تبدیل به استرینگش میکنه؟
نویسنده این مطلب
سلام – بله –
متغیر اعشاری فوق رو در Str ذخیره میکنه – بعد از فراخونی این تابع باید از Str استفاده کنیم.
مهمان
میگم دمتون گرم که این سایتو درست کردین کار مردمو راه میندازین ولی حداقل جواب طرفو بدید!
نویسنده این مطلب
سلام آقا یاسر
والا تو هر سایت تاخیر تو پاسخ دهی وجود داره.
منم پشت سایت نیستم همیشه و لذا نمیتونم در آن نظر دادن کاربر همون لحظه جواب بدم – ممکنه یه ساعت بعدش سایت رو بررسی کنم و جواب بدم.
عرضم به حظورتون که این کار زیاد سخت نیست شما کافیه از دستور if استفاده کنید – مقدار adc رو با if های تو در تو بررسی کنید.
مهمان
کسی نیست؟
مهمان
سلام آقا مهدی
یه سوال اگر این ولتاژی که از سنسور LM35(آنالوگ) وارد ADC میشه رو بخواهیم برای هر درجه دما یه متن هم روی LCD بنویسه باید چکار کنم
مهمان
سلام بر آقا مهدی عزیز
فک کنم تو بحث ولتاژ refrence یه ایرادی باشه//منظورم اینه که به پایه AVCCفقط میشه تغذیه میکرو با یک فیلترLCمتصل نمود و قابلیت انعطاف نداره یعنی اینکه مثل پایه ی AREF نمی توان بصورت دلخواه ((متناسب با پروژه)) از 0 تا سطح تغذیه(مثلا5ولت)را داد—البته با توجه به این قضیه میگم که اگه ولتاژی که روی پایه AVCCاعمال میکنیم به اندازه( +-0.3ولت)با Vccمدار اختلاف داشته باشه قسمت ADCمیکرو مقایسه کننده اش از دس میره وحتی پورت دوگانه ای که در حالت غیر از ADC استفاده میشه هم میسوزه——–<>>>>>>>>>>>>–ایییی ک وگفتی یعنیییی چههه—هاااا ای چی بیده—من ک نوفهمم–اشتباه گفته بیدم؟؟؟؟؟
مهمان
سلام
ببخشید توی خط ۱۹ وقتی که شرط داخل حلقه رو این شکلی مینویسیم یعنی چی؟
ببخشید من یه مشکل توی خط ۱۶ دارم
چرا ما میایم با صفر عمل or کردن رو انجام میدیم که همیشه حاصل خود عبارت غیر صفر میشه؟
ممنون پیشاپیش
نویسنده این مطلب
سلام
خط 19) خب کاراکتر & یعنی اند بیتی، تو این خط گفتیم تا زمانی که بیت 5 ام(بیت شماره 4، شماره گزاری از 0 شروع میشه!) 0 هستش صبر کن >>>> به کمک & اومدیم غیر از بیت 5ام(شماره4) بقیه مقادیر رو 0 کردیم و اودیم گفتیم تا زمانی که این بیت 5ام مقدار 0 هست وایسا(while)
به نظرم مطلب زیر رو بخون – و یکم تو گوگل سرچ کن – آموزشش پیدا میشه – من بخوام توضیح بدم بدتر میشه و شما به نظرم قاطی میکنید چون من بد توضیح میدم.
تغییر و یا خوندن یه بیت از یک متغیر
مهمان
من عینا همین کد ها رو استفاده کردم ولی lcd فقط 4.98 چاپ میکنه و تغییر هم نمیکنه
نباید پوینتر استفاده کرد ؟
نویسنده این مطلب
اون دو تا پایه توی شماتیک رو به vcc وصل کردی؟ اگه نشد یه بار یکیشون رو وصل کن اون یکی رو قطع و برعکس
مهمان
سلام جناب مهندس
یه توضیحات و تغییراتی برا پروژه 2 گذاشتم ببین اگه مناسبه و ایرادی نداره برا بقیه بذار
و بسیار متشکرم از همه وقتی که گذاشتی و به قول خودت زکات علم کردی.
به ایمیل شما ارسال کردم
نویسنده این مطلب
سلام
پیوست کردم
مهمان
سلام خسته نباشی
الان این پروژه والتاژ بین 0و5 ولت نشون میده ولی اگر بخوام 0تا12 ولت نشون بده باید چه کار کنم , چه جوری محاسبه کنم میشه راهنمایی کنید.ممنون میشم
نویسنده این مطلب
سلام
تنها ورش فعلا فقط تقسیم ولتاژ به ذهنم میرسه
مهمان
آقا اوکی شد، با همون روش push-pull با استفاده از دو کانال درستش کردم.
نویسنده این مطلب
مهمان
خب وقتی از روش اول میرم، lcd درست به فرمان های برنامه عمل نمیکنه و قاطی میکنه. میدونین مشکلش چیه؟ البته هنوز روش وقفه رو امتحان نکردم ببینم اونم همین مشکل رو داره یا نه
مهمان
اها…از روش push-pull برم!؟ یا از روش وقفه!؟
نویسنده این مطلب
اولی
مهمان
سلام آقا مهدی، میگما میشه همزمان از سه تا کانال adc استفاده کرد!؟ میخوام یک کانال رو واسه سنجش ولتاژ خروجی یک مدار استفاده کنم (ولتمتر دیجیتال) و دو کانال دیگه رو در مد تفاضلی بزارم و تفاضل ولتاژ دو سر یک مقاومت رو اندازه بگیرم. چنین کاری شدنیه!؟
نویسنده این مطلب
سلام
مد تفاظلی کار نکردم
ولی اندازه گیری 8 تا پشت سر هم، هم میشه و مشکلی نیست.
ولی همزمان که نمیشه اصلا – اول پایه 1 رو اندازه میگیری بعد میری 2 و …
مهمان
سلام دوست عزیز
سوالم چرا تایید نشد؟
سوالم این بود که ftoa در برنامه خط 47 یعنی چی؟
من وقتی تاپیش میکنم کامپایل میکنم برنامه ارور میگیره
ممنون میشم راهنمایی کنید؟
نویسنده این مطلب
سلام
کدوم مطلب/؟
تبدیل متغییر float به رشته
مهمان
سلام دوست عزیز خسته نباشی و بابت آموزشهای خوبت از تشکر میکنم
من این برنامه رو نوشته ام اما error داد در خط 47 شما نوشتین ftoa این یعنی چی از این کلمه error .میگیره لطفا راهنمایی کنید
با تشکر
نویسنده این مطلب
سلام
تابع ftoa میاد و یه متغییر float رو میگیره و در یه رشته ذخیره میکنه و در ضمن میشه تعداد ارقام اعشار رو تعیین کرد.
مهمان
چرا سوالات من اصلا تایید نمیشه و نمایش داده نمیشه آقای مدیر سایت؟؟؟؟؟؟؟؟
تا حالا چن بار نظر دادم سال پرسیدم اما اصلا ج ندادین که هیچ تاییدشم نکردین
نویسنده این مطلب
سلام
این 7 امین باری هستش که با این ایمیل تو سایت نظر میدی و من جواب میدم
https://dmf313.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b3%d8%a7%d8%af%d9%87-%d8%b3%d8%a7%d8%ae%d8%aa-%d8%af%d9%85%d8%a7%d8%b3%d9%86%d8%ac-%d8%a8%d8%a7-lm35/#comment-150636
https://dmf313.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b3%d8%a7%d8%af%d9%87-%d8%b3%d8%a7%d8%ae%d8%aa-%d8%af%d9%85%d8%a7%d8%b3%d9%86%d8%ac-%d8%a8%d8%a7-lm35/#comment-150671
https://dmf313.ir/%d9%be%d8%b1%d9%88%da%98%d9%87-rfid-%db%8c%d8%a7-%d9%87%d9%85%d9%88%d9%86-%da%a9%d8%a7%d8%b1%d8%aa%d8%ae%d9%88%d8%a7%d9%86-%d8%a8%d8%a7-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d9%85%d9%84/#comment-150673
https://dmf313.ir/%d9%be%d8%b1%d9%88%da%98%d9%87-lcd-%da%af%d8%b1%d8%a7%d9%81%db%8c%da%a9%db%8c-%d8%a8%d9%87-%d9%87%d9%85%d8%b1%d8%a7%d9%87-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d9%85%d9%84/#comment-150730
https://dmf313.ir/%d9%be%d8%b1%d9%88%da%98%d9%87-lcd-%da%af%d8%b1%d8%a7%d9%81%db%8c%da%a9%db%8c-%d8%a8%d9%87-%d9%87%d9%85%d8%b1%d8%a7%d9%87-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d9%85%d9%84/#comment-150731
https://dmf313.ir/%d9%be%d8%b1%d9%88%da%98%d9%87-lcd-%da%af%d8%b1%d8%a7%d9%81%db%8c%da%a9%db%8c-%d8%a8%d9%87-%d9%87%d9%85%d8%b1%d8%a7%d9%87-%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d9%85%d9%84/#comment-150739
https://dmf313.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%ac%d8%a7%d9%85%d8%b9-%d9%85%db%8c%da%a9%d8%b1%d9%88%da%a9%d9%86%d8%aa%d8%b1%d9%84%d8%b1-avr-%d8%ac%d9%84%d8%b3%d9%872/#comment-150774
https://dmf313.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b3%d8%a7%d8%ae%d8%aa-%d8%b4%d9%85%d8%a7%d8%b1%d9%86%d8%af%d9%87-%d8%b9%d8%af%d8%af-%d8%af%d8%b1-lcd/#comment-150776
https://dmf313.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%ac%d8%a7%d9%85%d8%b9-%d9%85%db%8c%da%a9%d8%b1%d9%88%da%a9%d9%86%d8%aa%d8%b1%d9%84%d8%b1-avr-%d8%ac%d9%84%d8%b3%d9%872/#comment-150783
مهمان
آقا من یه ال سی دی کارکتری گرفتم اصلا نمیدونم چشه مدار میبندم باید 2 ساعت بزنم تو سرش اینورو اونورش کنم تا یه چیز نشون بده واللا فقط مستطیلارو نشون میده خیلی گیره چیکارش کنم؟
نویسنده این مطلب
خب عادی هستش این جور مشکلات در ابتدای کار
مطلب زیر رو ببین
https://dmf313.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D8%A7%D9%85%D8%B9-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-lcd-%DA%A9%D8%A7%D8%B1%D8%A7%DA%A9%D8%AA%D8%B1%DB%8C/
مهمان
نزدیک ۲ ساعتی هست دارم میخونم خیلی سنگینه
ولی عالی هستی مهندس خدا قوت
نویسنده این مطلب
اکثر مطالبش رو نگفتم….وقتم خالی بشه این مبحث رو کامل رو میکنم.
مهمان
سلام
در این سایت چیزی درمورد اینی که گفتم نبود؟؟؟!!!!!!
نویسنده این مطلب
سلام
چگونه همه پایه های میکروکنترلر AVR را PWM کنیم ؟؟
مهمان
سلام
چه جوری می شود از همه ی پایه های avr خروجی pwm گرفت؟
مثلا برای ساخت led ابشاری
نویسنده این مطلب
سلام
با استفاده از تایمر فک کنم
میتونی لینک زیر رو هم ببینی….فک کنم طرف یه کتابخونه آماده برا اینکار نوشته (البته باید بسرچی تا پیداش کنی)
http://www.eca.ir/forum2/index.php?board=161.0
مهمان
سلام
چه جوری میشه از ADC خروجی PWM گرفت؟
نویسنده این مطلب
سلام
دقیقا متوجه نشدم
یعنی میگی از پایه های adc به عنوان pwm استفاده کنی یا…؟
چون adc میاد آنالوک رو میخونه و دیجیتال میکنه و pwm برعکس این کار رو میکنه
مهمان
سلام اقا مهدی من پتانسیومتر رو به میکرو وصل کردم. پایه هایavcc و aref رو در عمل باید چجوری وصل کنم⁉ولتاژ مرجع ام رو رو حالت avcc گذاشتم.
نویسنده این مطلب
سلام
جفتشون رو وصل کن به vcc (اگه میخوای ولتاژ مرجعت ۵ ولت باشه)
مهمان
سلام ممنون بایت اموزش خوبتولی قبلا نا جلوی هر ریجستر معنی فارسی رو هم مینوشتی که این خط کد چه معنی داره اون وقت خیلی قابل فهم تر بود اگه ممکنه اینارو هم به فارسی بگو جون من بگو
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;
مهمان
سلام
استاد ببخشید یه سوال؟
نقش ۲۵۶ تو ایت پروژه چیه؟وقتی بجاش ۱۰۲۳ میذارم بیشتر از ۱٫۲۵ ولت رو نشون نمیده
ممنون میشم بیشتر توضیح بدین
مرسی
نویسنده این مطلب
سلام
ولتاژ مرجع ضرب در ۱۰۰
مهمان
با سلام
هم تو شبیه سازی اینطوره هم تو عمل
ADCH درسته من با دقت ده بیت میخوام
نویسنده این مطلب
سلام
یه کاری کن
تو ECA سوالت رو مطرح کن و کد ها و شماتیک پروژت و مشکلت رو اونجا مطرح کن…..
مهمان
ببخشید من این برنامه رو نوشتم که برا انالوگ تو دیجیتاله :
#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_پنج ولت_ وصل کنید
مهمان
خودم مشکل رو حل کردم مقاومت پول اپ رو درست نذاشته بودم
ممنون از حرفتون باعث شد برم با دقت تر نگاه کنم
نویسنده این مطلب
اینم بگم که وقتی یه مشکلی برات ایجاد میشه اگه بخوای به دیگران نشون بدی دیگران هم باس وقت بزارن و وقت بزارن و مشکل رو پیدا کنن و معمولا کسی اینکار رو نمیکنه

لذا بهتره به جای این که زیاد فک نکنی و خودت مشکل رو پیدا نکنی و سوال بپرسی و منتظر فکردن و احتمالا جواب دادن دیگران باشی کاری پیش نمیبری این طوری….
البته نمیگم سوال نپرس….بپرس و حتما بپرس و شک نکن.
ولی چیزی که خودت میتونی حل کنی و بهتر هم اینه چرا سوال کنی
خدا رحم کنه زمانی که من پیر بشم.
همه رو نصیحت میکنم
مهمان
سالاری
مهمان
فرستادم
اقا خیلی اقایی انقد سریع و خوب جواب میدی
نویسنده این مطلب
بهتره همیشه سوالات رو تو eCA بپرسی
البته بازم بهتره که خودت دنبال مشکل بگیری
جواب رو از دیگران بشنوی ارزش ندارم به نظرم
مهمان
من پایه های aref و avcc رو به ولتاژ ۵ وصل کردم
از قبل ولی نمیشه
نویسنده این مطلب
شماتیک و کد های پروژت رو تو Eca پیوست کن…
مهمان
ممنون
خیلی اقایی
نویسنده این مطلب
چاکریم
مهمان
با سلام
من یه برنامه نوشتم که توسط adc انالوگ رو به دیجیتال تبدیل میکنه و روی lcd نشون میده
این برنامه رو تو پروتئوس اجرا کردن درست اجرا شده
ولی وقتی رو میکرو پروگرام میکنم وقتی اجرا میکنم اولش اعداد قاطی پاتی نشون میده
ولی وقتی پایه adc رو وصل میکنم همیشه ۲۵۵ رو نشون میده یعنی حد اکثر ( این موضوع با هر ولتاژی صدق میکنه)
دیگه اعصابم خرد شده لطفا یه راهنمایی بکنین
با تشکر
نویسنده این مطلب
سلام
تو پستی که تو eca گزاشتی جوابت رو دادم.
مهمان
سلام داداش مهدی.

یک سوال داشتم؟؟؟؟
چرا نریم سراغ بسکام؟
بسکام چه ایرادی داره؟
من تازه شروع کردم و میخوام رو یه زبانی کار کنم که کار باهاش اسون باشهو بشه زود یاد کرفتش.
از آنجایی که بسکام به زبان بیسیک هستش و در رده زبانهای سطح بالا قرار داره ،بنظرم شاید یادگیری اون از زبان c راحتتر باشه. چون زبان c یک زبان میانیه.و اسمبلی هم که خودتون میدونید چه مکافاتی داره.
لطفا زود جواب بدین من گیج شدم.
نویسنده این مطلب
سلام
تا جایی که من میدونم
بسکام سادس(طوری که شنیدم)
ولی سی یکم سخت تر از بسکامه….و سی قوی تره…..ملت اینو میگن
اگه سی بلد باشی….AVR-ARDUINO-ARM رو میتونی برنامش رو بنویسی ولی برا بسکام تا جایی که من میدونم فقط برا AVR هستش
مورد بعد این که C به نظرم زیباترین و آسون ترین زبونه….
اگه سی بلد باشی ++C , C# هم یادمیگیری آسون
و این که تو برنامه نویسی QT (حالا این QT فک کنم یه محیط باشه…) میتونی توش کد بزنی و برا تمام سیستم عامل های کامپیوتر و موبایل کد بزنی و….
حالا بازم سوال کن از دوستان دیگه ظرر نداره
مهمان
سلام میشه در تلگرام گروه ایجاد کنی و لینگ اش را تو سایت بذاری و بچه ها عضو شن تبادل اطلاعات بهتر میشه
ممنون بابت مطاب اموزشی تون
نویسنده این مطلب
سلام
زیاد تو این چیزا نمیرم…
بیشتر سایتم
مهمان
آره داش ، ممنون .
سایتت فوق العادست ، حداقل بخش avr ش . میتونه بهتر ازینم باشه
همینجوریشم فوق العادست
مهمان
سلام
ببخشید میشه یه توضیحی راجب اون الماتهای سمت چپ تو پروتیوس یدین ؟؟
و اینکه تو پرونیوس چی سرچشون کنیم ؟
ممنون
نویسنده این مطلب
سلام
مقاومت متغییر منظورته؟؟؟
تو کتاب خونه قطعات اگه بری کتیجوری مقاومت ها…بعد قسمت متغییرش(یکی مونده به آخر) و بعد تو ساب کتیجوری مقاومت های نمایش داده شده یکی رو انتخاب کنی ولی اونی که active هستش قطعه زیر هستش….pot-hg
مهمان
اونوقت الان پروژه کامل بسته بشه چجوری خروجی بگیرم ازش
نویسنده این مطلب
متوجه منظورت نشدم…
میشه بیشتر توضیح بدی و واضح تر
نویسنده سایت
براشلس

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



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



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



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

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

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


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



تو این سایت؟
اگه خدا بخاد سه ماه تعطیلی این کلاس های میکرو رو میرم بعد میام این سایتو میترکونم
یه عالمه ماژول و برنامه باهم میسازیم اگه خدا بخاد
از ECA رو میزاریم تو جیبه مون
اگه تا پنج ماهه دیگه نویسنده بخاین
نظرت چیه؟
الان بجز شما کی تو برنامه نویسی وارده
نویسنده این مطلب
انشالله
هر موقع خواستین در خدمتیم…
تقریبا تمام نویسنده های سایت برنامه نویسی بلدن—–البته اگه برنامه نویسی c و خانواده هاش منظورت باشه…..
مهمان
اقا مهمد اگه میشه شما برام برنمشو با پوتیوس درست کنی ممنون میشم
من برنامه رو تغیر دادم و گذاشتم
#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 هستش
با پروتیوس تست کردم فقد میشه یک بار خاموش و روشن کنم
در عمل میکرو قاطی میکنه
مهمان
نویسنده این مطلب
از پروتئوس و کدویژن ورژن چند استفاده میکنی؟؟؟؟
نویسنده این مطلب
من چی گفتم و تو برام چی فرستادی
مهمان
شرمنده داداش که انقدر شما رو اذییت می کنیم
مهمان
داداش در پروتیوس
امتحان کردم فقد روشن میشه و خاموش نمیشه
در عم امتحان کردم فقد در لحضه روشن میشه (وقتی که پین بی صر یک میشیه )
چکار کنم سر در گمم
نویسنده این مطلب
فایل های کدویژن+فایل پروتئوس رو تو یه فایل زیپ بفرست برام
نویسنده این مطلب
led رو باید به پایه PB0 وصل کنی و نه PB4
اگه دقت کنی فقط پایه PB0 رنگش (از آبی به قرمز) تغییر میکنه و نه پایه های دیگه
کلید ها هم باید به PA0 و PA1 وصل بشن…..برا کلید ها مقاومت پول دان هم بزاری بهتره
مهمان
داداش برنامه که دادی کار نمیکنه چکار کنم
#include
void main()
{
DDRA=0X00;//KEY
DDRB=0XFF;//LED
while(1)
{
if(PINA==0X01)PORTB=0X01;
if(PINA==0X02)PORTB=0X00;
};
}
نویسنده این مطلب
تو پروتئوس یا تو عمل؟؟؟؟
عکس بده ببینم کجا اشتباه کردی
مهمان
مباحثشو نمی دونم ولی ادرس دو سایتشو می دونم

http://www.ebtekarsazan.com/info/
http://www.chistatvtc.ir/index.php
داداش به نظرت کدوم بهتره برم
نویسنده این مطلب
به هیچ وجع نرو سراغ بسکام…..از ما گفتن از شما نشنفتن…
زنگ بزن ببین مباحث آموزش مقدماتی و آموزش متسط و حرفه ای……لیست مباحثش رو بگیر و بهم بگو…..قیمت هم یادت نره…..شنبه زنگ بزن….فردا جمعه هستش…..احتمالا تعطیل باشه
مهمان