هر کی سوالی در مورد avr داره بپرسه جواب می دم.
هر کی سوالی در مورد avr داره بپرسه جواب می دم.
سلام. من برنامه صفحه کلیدی که با میکرو ای وی آر باشه و با زبان سی باشه میخوام که روی ال سی دی گرافیکی نشان بده .می توانید کمکم کنید ؟
بیشتر توضیح بده درست منظورتو نفهمیدم.
سلام.سوالمو بهتر مطرح می کنم.یک برنامه می خوام به زبان CیاC++برای میکروی AVR.میکرو به یک lcd گرافیکی مدل ts12864A-2 (که از تراشه ی ks0108استفاده می کنه)و هم چنین یک صفحه کلید 4×4 وصل است.می خوام هر کلیدی که زده شد روی lcdنمایش بده.مثلا اگه کلید 6 را زدیم عدد 6 را نمایش بده.لطفا کمکم کنید.ممنونم
ای بابا هیچ کس نیست جواب منو بده؟ من عجله دارم.
ببین از نظر سخت افزاری که مشکلی نداری اما من باز توضیح می دم اولا که بهتره از Lcd معمولی استفاده کنی چون تو lcd گرافیکی کار با text سخته اما من هردو حالتشو توضیح می دم فقط الان یه مشکل دیگه هست اونم اینه که از چه ادیتوری واسه پروگرم کردن استفاده می کنی.
از پروگرامر stk400استفاده می کنم.استاد مجبورم کرده از این lcd استفاده کنم.مرسی که می خواین کمکم کنید.
سلام.من خیلی عجله دارم. از لحاظ سخت افزار هم مشکل ندارم.حتی می دونم چه طور روی lcd هم نشون بدم. فقط یه برنامه می خوام که هر کلیدی را زدیم تشخیص دهد و مثلا اگر کلید 8 را زدیم وارد یک تابعی بشود به نام key 8. کارهایی که قراره توی تابع انجام بشه را خودم بلدم.فقط تشخیص فشردگی کلید و این که کدوم کلید فشرده شده را نمی دونم.
ببین کی برد حالت ماتریس داره ینی تو هر دکمه رو که فشار می دی اون سطر و سطون به هم وصل می شن.
پس اگه از کی برد 4*4 استفاده می کنی باید چهار تا سیم مربوط به سطر یا سطون رو پول دان کنی(با یه مقاومت کم به GRD وصل کنی) تا نویز نگیره بعد دونه دونه به اون چهار تا پایه دیگه ولتاژ می دی با میکرو و اون چهار تای دیگه رو هم چک می کنی به همین راحتی.
مثلا تو سطون رو پول دان می کنی و به سطر ولتاژ میدی (اونی رو که پول دان کردی چک می کنی) مثلا وقی به سطر دو ولتاژ دادی اگه سطون 3 دارای ولتاژ باشه یعنی دکمه 8 فشار داده شده.
من خودم با codevisionavr کار می کنم و تا بحال با stk400ا کار نکردم اما اگه الگوریتمو متوجه نشدی برنامشم می نویسم ببینی چطوریه.
سلام.آقا ما جواب نخواستیم. این توضیحاتو خودم بلدم. بابا مثلا مهندس کامپیوترم.من برنامه را می خواستم که انگار شما فقط دارید منو می پیچونید.تازه امروز بالاخره جواب گرفتم . خداحافظ
اینم برنامه.
مثلا ردیف افقی رو پول دان کردی
و همه رو 4تای پول دان شوده روی پرت b0-b3 و 4تای دیگه رو روی b4-b7 گذاشتی.
PORTB.4=1;
if(PINB.1==1)
{
lcd_putchar('1');
}
if(PINB.2==1)
{
lcd_putchar('2');
}
if(PINB.3==1)
{
lcd_putchar('3');
}
if(PINB.4==1)
{
lcd_putchar('a');
}
PORTB.5=1;
if(PINB.1==1)
{
lcd_putchar('4');
}
if(PINB.2==1)
{
lcd_putchar('5');
}
if(PINB.3==1)
{
lcd_putchar('6');
}
if(PINB.4==1)
{
lcd_putchar('b');
}
PORTB.6=1;
if(PINB.1==1)
{
lcd_putchar('7');
}
if(PINB.2==1)
{
lcd_putchar('8');
}
if(PINB.3==1)
{
lcd_putchar('9');
}
if(PINB.4==1)
{
lcd_putchar('c');
}
PORTB.7=1;
if(PINB.1==1)
{
lcd_putchar('d');
}
if(PINB.2==1)
{
lcd_putchar('e');
}
if(PINB.3==1)
{
lcd_putchar('f');
}
if(PINB.4==1)
{
lcd_putchar('g');
}
با سلام خدمت دوست عزيز.
من مبتدي نيستم ( به عنوان مثال اين برنامه اي كه دوستمان در خواست كرده بودند را من قبلا نوشته بودم.) ولي مي خواهم براي ادامه كارم در اين رشته دست به كار شوم و اطلاعات خود را در زمينه ي كمي و كيفي افزايش دهم .
مي شود يك كتاب مناسب به من معرفي كنيد( كه حاوي مطالب سطح بالاتر و مثال هاي متنوع و مفيد تر باشد).
اين مورد شايان ذكر است كه من در مورد AVR مي خواهم.
با تشكر .
خدانگهدار.
سلام از راستش من یه برنامه فلاشر با c نوشتم که روی پورت a یه برنامه و روی پورت b و d یه برنامه دیگه اجرا میکنه ولی مشکل اینجاست که برنامه هر دو پورت رو همزمان اجرا نمیکنه میتونید در این مورد کمکم کنید برنامش چطوری میشه ممنون میشم
اگه از سری ATmega استفاده میکنی مدل mega128 میتونه سیستم عامل های ساده رو اجرا کنه تا بتونی تو سیستم پردازش موازی رو داشته باشی
البته تو سری های 8 بیت من فقط mega 128 رو دیدم که بتونه OS اجرا کنه بقیه رو نمی دونم
ولی سری ها 16 و 32 بیتی رو به راحتی میتونی روش سیستم عامل نصب کنی حتی لینوکس و ویندوز
البته نظر شخصی من اینه که با یکم تلاش و اضافه کردن امکانات جانبی شاید بتونی نسخه uclinux رو هم تو mega128 اجرا کنی !
یعنی با mega16 نمیشه این کارو انجام داد راستش من تازه واردم و زیاد نمیتونم برنامه های سخت رو بنویسم میتونید یکم واضح تر توضیح بدید که در نهایت با این ای سی میتونم یا نه میخوام اگه لطف کنید من رو تو نوشتن برنامه یاری کنید ممنون میشم
منظورتون از لوازم جانبی چیه
با سلام.
نه بامگا 16 نمی شه.مگا 16 یک سری امکانات در اختیار افراد قرار می دهد ولی فقط برای شروع کار خوب است.
هر آی سی را بهر کاری ساخته اند.شما می توانید به بروشور این محصول رجوع کنید تا بهتر بتوانید آی سی مورد استفاده را پیدا کنید.
البته اگر شما بیشتر توضیح می دادید که دقیقا چه کار انجام می دید ، می شد راهنمایی بیشتری انجام داد.
موفق باشید.
میتونین بگین باید چکار کنم و با چه ای سی این کارو انجام بدم ببینین من میخوام برنامه ای بنویسم که روی پورت A میکرو یکسری led چشمک بزنه و روی پورت B و D میکرو یکسری دیگه LED با یه برنامه دیگه چشمک بزنه یه برنامه فلاشر ولی میخوام این دو برنامه مختلف روی این دو پورت بصورت همزمان اجرا بشه یعنی دو پورت مستقل از هم کارکنن حالا میتونین راهنمایی کنین با چه ای سی و برنامش چطوری میشه
یه سوال دیگه هم داشتم چطور میشه یه باتری بک آپ رو به atmega16 وصل کرد کسی نقشه ای در این مورد داره یعنی باید به کدوم پایه ها وصل کرد طریقه وصل کردنش چطوریه
اینم برنامه :
#include <mega16.h>
#include <delay.h>
#define B PORTB
#define D PORTD
#define A PORTA
char i;
char x;
char z;
void main(void)
{
PORTA=0x00;
DDRA=0x0F;
PORTB=0x00;
DDRB=0xff;
PORTD=0x00;
DDRD=0xFf;
while (1)
{
i=0x55; //1
B=i;
D=i;
delay_ms(50);
B=B<<1;
D=D<<1;
delay_ms(50);
x=0X0F; //2
A=x;
delay_ms(50);
x=0X00;
A=x;
delay_ms(50);
}
}
با سلام.
دوست من ، در اینجا خیلی برنامه مهم نیست.چون در هر صورت برنامه قابل تغییر است.در اینجا فقط مدار و توانایی آی سی است که غیر قابل تغییر است.
آی سی ای که دوست خوبم آقای کرنل پیشنهاد دادند برای این کار باید مناسب باشد.ولی بااین وجود در بعضی موارد شاهد آن خواهیم بود که همه چیز آنطور که ما می خواهیم پیش نمی رود.
منظور شما از باتری بک آپ چیست؟
اگر منظور شما باتری پشتیبان است (که احتمالا هم همین است ) ، باید از طریق یک رله به مصرف کننده وصل شود و سپس کنترل آن رله را به آی سی بدهید.این روشی است که همواره جواب می دهد ولی روش های دیگر ی وجود دارد که از این روش بسیار ساده تر بوده ولی مختص شرایط خاص هستند.
دلیل شکم بر نام باتری این است که ، مداری که شما از آن صحبت کرده اید نیازی به باتری بک آپ ندارد.مگر منظور شما غیر از این باشد.
باز هم اگر موردی هست سوال کن ولی سعی کن آن را در یک پست جدید مطرح کنی.
البته از این پس برای سوال خود توضیحات دقیق تر و با ذکر مشخصات سوال بفرمایید.چون همانطور که می دانید دانش الکترونیک مبتنی بر مشاهده و بررسی دقیق است که بدون شرح جزئیات این مهم تحقق نمی یابد.
خدانگهدار.
کسی نیست یه جواب به ما بده
کسی نیست یه جواب به ما بده
ببینین من یک برنامه ساعت با mega16دارم که باتری پشتیبان نداره و هر وقت تغذیه قطع میشه ساعت از اول شروع به کار میکنه میخوام زمان دقیق رو تا وصل مجدد تغذیه حفظ کنه
در مورد سوال دیگم میتونین بگین باید چکار کنم و با چه ای سی این کارو انجام بدم ببینین من میخوام برنامه ای بنویسم که روی پورت A میکرو یکسری led چشمک بزنه و روی پورت B و D میکرو یکسری دیگه LED با یه برنامه دیگه چشمک بزنه یه برنامه فلاشر ولی میخوام این دو برنامه مختلف روی این دو پورت بصورت همزمان اجرا بشه یعنی دو پورت مستقل از هم کارکنن حالا میتونین راهنمایی کنین با چه ای سی و برنامش چطوری میشه
اینم برنامه :
#include <mega16.h>
#include <delay.h>
#define B PORTB
#define D PORTD
#define A PORTA
char i;
char x;
char z;
void main(void)
{
PORTA=0x00;
DDRA=0x0F;
PORTB=0x00;
DDRB=0xff;
PORTD=0x00;
DDRD=0xFf;
while (1)
{
i=0x55; //1
B=i;
D=i;
delay_ms(50);
B=B<<1;
D=D<<1;
delay_ms(50);
x=0X0F; //2
A=x;
delay_ms(50);
x=0X00;
A=x;
delay_ms(50);
}
}
بابا تورو خدا به ما هم کمک کنید برنامش چطوری میشه عجله دارم این با برنامه رو هم براتون گذاشتم میتونید راهنمایی کنید چطور میشه برنامه روی پورت a و پورت b هر دو همرمان و مستقل اجرا بشه
بابا یعنی یه نفر نیست این برنامه رو بلد باشه کسی از این موضوع سر در نمیاره
دو تا راه داری یا برای برنامه ساعت از یه iC real time clock استفاده کن مثل ds1307 اینا خودشون باتری بک آپ قبول میکنه و ساعت همیشه درسته یا نه اگه میخوای برای خود میکرو باتری بک آپ بذاری باید یه مدار باشه احتمالا با یه رله و مدار شارژ باتری
یک سوال
من تاحالا با اتمل کار نکردم
فقط هم س بلدم
چه نو AtMel برای اولین بر کار با AVR پیشنهاد میکنید (مدل)
که هم با س کار کنه و هم نه زیاد گنده باشه که زیاد بشه
و در ادامه چجوری میشه programmer برای آور سخت به که اکثرشون بخوره و ساختنش اسون باشه
چون اینجا programmer خیلی گرونه...
و در ادامه من پرت USB فقط توی پکام دارم و serial ندارم
اینو در ادامهٔ حرف programer میگم، که یه پرگرممری باشه که با USB بشه وصل کر
در مورد مدار فلاشرم که برنامشم گذاشتم میتونی بهب کمک کنی
میتونین بگین باید چکار کنم و با چه ای سی این کارو انجام بدم ببینین من میخوام برنامه ای بنویسم که روی پورت A میکرو یکسری led چشمک بزنه و روی پورت B و D میکرو یکسری دیگه LED با یه برنامه دیگه چشمک بزنه یه برنامه فلاشر ولی میخوام این دو برنامه مختلف روی این دو پورت بصورت همزمان اجرا بشه یعنی دو پورت مستقل از هم کارکنن حالا میتونین راهنمایی کنین با چه ای سی و برنامش چطوری میشه
اینم برنامه :
#include <mega16.h>
#include <delay.h>
#define B PORTB
#define D PORTD
#define A PORTA
char i;
char x;
char z;
void main(void)
{
PORTA=0x00;
DDRA=0x0F;
PORTB=0x00;
DDRB=0xff;
PORTD=0x00;
DDRD=0xFf;
while (1)
{
i=0x55; //1
B=i;
D=i;
delay_ms(50);
B=B<<1;
D=D<<1;
delay_ms(50);
x=0X0F; //2
A=x;
delay_ms(50);
x=0X00;
A=x;
delay_ms(50);
}
}
اتفاقا منظورم خود برنامس
با سلام
من به طور اتفاقی این تاپیک رو دیدم . بعد دیدم r-electronic یه سوال نسبتا ساده مطرح کرده و حدود 2 ماهه کسی جواب نداده! برای همین هم عضو شدم تا بتونم کمک کنم.
امیدوارم که r-electronic بی خیال نشده باشه!
اول یه سوال میکنم تا موضوع مورد نظر شما ، برای من روشنتر بشه:
برنامه شما شیفت دادن led ها روی پورت b,c به صورت یکی در میون و خاموش روشن کردن 4 تا led روی پورت a ؛ با اختلاف زمانی 50 میلی ثانیه هست دیگه؟ درضمن 4 تا از پایه های پورت a به جایی وصل نیست دیگه؟
اگه بله ، پس کافیه:
1. این 4 خط رو ببری قبل از while (تو main)
x=0X0F
i=0x55;
B=i;
D=i;
2. تابع while رو تغییر بدی:
while (1)
{
delay_ms(50);
B=B<<1;
D=D<<1;
x=~x ;
A=x;
}
برای یه برنامه ای به این سادگی به پردازش موازی و سیستم عامل هیچ نیازی نیست! درضمن میکرو های avr سری atmega میکرو های پر قدرتی هستند(برای کار های معمولی) ؛ به طور مثال با همین atmega 16 میشه همزمان اطلاعات 8 تا سنسور رو همزمان خوند وبعد با توجه به این اطلاعات ،دور موتور 3 تا موتور رو باز همزمان کنترل کرد و اطلاعات مورد نیاز رو به صورت realtime به کامپیوتر داد.
ببخشید ، یه سوال دارم : شما خارج از ایران(نروژ) هستید دیگه؟
اگه منظورتون از این که گنده نباشه ، گرون قیمت نبودنش هست ؛ باید بگم قیمتشون ارزونه . مثلا قیمت atmega 32 که یه مدل تقریبا کامل و قدرتمند با 40 تا pin هست ، حدود 4 دلاره. منم همین رو پیشنهاد میکنم، چون همه امکانات رو داره و ازش میشه تو پروژه های کوچیک تا نسبتا بزرگ استفاده کرد(من یکدونه atmega 32 خریدم و 2ساله دارم ازش تو همه پروژه ها استفاده میکنم!) . اما اگه اندازه (و قیمت) خیلی براتون مهمه ، قیمت atmega 8 حدود 2 دلار هست و 28 pin داره (کوچیکتره) ولی امکانات خوبی داره.
اگه ابزار (سیم و هوییه و ...) و حوصله دارید ، خودتون یه پروگرمر بسازید ارزونتر براتون در میاد(تو ایران نصف و تو خارج یک سوم قیمت) . من یه نقشه مدار پروگرمر usb داشتم ، ببینم اگه پیدا کردم براتون میگذارم. درضمن اگه کیس(همون پک) شما فقط پورت usb داره برای serial میتونید از کابل تبدیل serial به usb هم استفاده کنید . من اونو تو ایران خریدم 5 هزار تومن(5 دلار).و در ادامه چجوری میشه programmer برای آور سخت به که اکثرشون بخوره و ساختنش اسون باشه
چون اینجا programmer خیلی گرونه...
و در ادامه من پرت USB فقط توی پکام دارم و serial ندارم
اینو در ادامهٔ حرف programer میگم، که یه پرگرممری باشه که با USB بشه وصل کر
مرسی از جوابتون
بله من در نروژ زندگی میکنم
نه اصلا منظوره من قیمت خود AVR نبود
میدونید که کلا AVR توی نروژ درست شده...
It is believed the AVR basic architecture was conceived by two students at the Norwegian Institute of Technology (NTH) Alf-Egil Bogen and Vegard Wollan.[1][2]
منظوره من programmer بود
گفتم که یه AVR پیشنهاد کنید که کوچیک باشه، نه از لحاظه قیمت
ولی از لحاظه اینکه زیاد پیشرفته نباشه ... ولی خوب مسلیک اونی که شما پیشنهاد کردید بدرده منم میخوره
قیمت programmer اینجا خیلی بالاست... که گفتم خودم درست کنم
من laptop فقط USB داره، seriall نداره
نبدیل سیم seriall به USB هم شنیدم که هر تبدیلی نمیخوره
اگه میشه یه لینک بذرید / یه عکس که ببینم منظوره شما دقیقا همونو که من میگم یا نه
بدم در برنامه مثلا CodeVision برای این تبدیل با مشگل بر نمیخورم؟
من خودم دوست دارم بسازم، که یادم بگیرم
الکتریک خندم و میدونم چجوری لحیم کنم اگه نقش باشه
من توی سایت avr.ir یه نقشه خیلی ساده دیدم
حالا ۲سوال دارم از شما...
توی فایل PDF نوشته شده بود که این برنامه با BASCOM کار میکنه
ولی من باید کدم رو توی CodeVision بریزم چون C بلدم، اگه ایشون گفتم که با BASCOM کار میکنه
اهتمهله اینکه این programmer با CodeVisionهم کار کنه است؟
یل سوال دیگه... این programmer که من دیدم
و یا شما قرار است بدید
به اکثر AteMega میخوره؟
یا هر AtMega باید programmer خودشو داشته باشه؟
http://www.avr.ir/pdf/Sample_programmer.pdf
مرسی
یادم رفت اینو بگم
این Programmer برای پرت Parallell یا پرینتر است
که من فقط و فقط USB دارم
قبلا اینجا دیده بودم :
http://mag2009.mihanblog.com/post/28
ولی لینک فایل پاک شده!
اما سایت اصلی این پراگرمر(پراگرمر خودمم همین نوعه!) همه اطلاعات رو داره:
http://www.fischl.de/usbasp/
اینم همون پروگرمر از سایت kavirelectronic ، بعد از نصب یه فایل help کوچیک داره:
http://kavirelectronic.ir/fa/modules...article&sid=74
اگه میخواید خیلی کوچیک باشه ( مثلا 8 pin) سری ATtiny این خصوصیت رو داره. و البته امکاناتشم کمتره . اما در کل برنامه نویسی همه avr ها مثل همه (از ATtiny تا ATmega) ، برای همین فرقی نمیکنه با کدوم شروع کنید ، بعلاوه کار کردن میکرو های بزرگتر به دلیل داشتن پایه های بیشتر راحت تره. چون اون پایه های اضافی پورت(i/o) اضافی هستند و اگه لازم نداشته باشید هیچی بهشون وصل نمیکنید ولی در عوض میکرو های کوچیکتر فشرده تر هستن و هر پایه برای چند کار مختلف استفاده میشه و در نتیجه پیچیده تر میشن!گفتم که یه AVR پیشنهاد کنید که کوچیک باشه، نه از لحاظه قیمت
ولی از لحاظه اینکه زیاد پیشرفته نباشه ... ولی خوب مسلیک اونی که شما پیشنهاد کردید بدرده منم میخوره
من از این تبدیل برای وصل کردن میکرو با پورت سریال (برای انتقال اطلاعات به کامپیوتر نه پروگرم) به لپتاپم استفاده کردم و هیچ مشکلی نداشت. عکسشو تو ضمیمه گذاشتم(با موبایله!) ولی برای پروگرم امتحان نکردم، چون پروگرمر usb داشتم.نبدیل سیم seriall به USB هم شنیدم که هر تبدیلی نمیخوره
اگه میشه یه لینک بذرید / یه عکس که ببینم منظوره شما دقیقا همونو که من میگم یا نه
بدم در برنامه مثلا CodeVision برای این تبدیل با مشگل بر نمیخورم؟
آره ،این ساده ترین و ارزونترین پروگرمر هست ولی با پورت LPT !من توی سایت avr.ir یه نقشه خیلی ساده دیدم
حالا ۲سوال دارم از شما...
توی فایل PDF نوشته شده بود که این برنامه با BASCOM کار میکنه
ولی من باید کدم رو توی CodeVision بریزم چون C بلدم، اگه ایشون گفتم که با BASCOM کار میکنه
اهتمهله اینکه این programmer با CodeVisionهم کار کنه است؟
منظور ایشون این بوده که با bascom هم کار میکنه. در کل پروگرمر یه چیز مستقل از کامپایلر هست. کامپایلر میکرو کنترلر یه خروجی hex. (به جای exe) تولید میکنه و پروگرمر اون فایل hex رو (حالا برای هر کاپایلری باشه) تو میکرو میریزه. حالا بعضی پروگرمر ها با کامپایلر هماهنگی دارن ، یعنی وقتی که کامپایل میکنن ، به طور خودکار پروگرم هم میکنن ،همین.
این پروگرمر ها به همه ی atmega , attiny ها میخورن ، فقط مشکل اینجاست که پایه های مخصوص پروگرم شدن برای بعضی از میکرو ها با هم فرق داره. به همین دلیل هم روی بورد های آماده پروگرم یه سوکت 40 پایه ، یه سوکت 28 پایه و غیره میگذارن.یل سوال دیگه... این programmer که من دیدم
و یا شما قرار است بدید
به اکثر AteMega میخوره؟
یا هر AtMega باید programmer خودشو داشته باشه؟