هر گونه سوال و کمک و آموزش در مورد AVR با نرم افزار Codevision

pooriyasms

عضو جدید
با سلام خدمت دوستان عزیزم
من دانشجوی ارشد مکاترونیک گرایش طراحی ربات هستم
هرگونه سوال آموزش در مورد AVR به زبان Codevision باشه رو در اینجا مطرح کنید.
ممنون;)
 

pooriyasms

عضو جدید
از آقا سعید ممنون بابت این مقاله ها و هرگونه سوال و مشکلی در برنامه نویسی پیش اومد لطفاً همینجا مطرح کنید
 

meyosem

عضو جدید
سلام دوست عزیز

راهنمایی و کمک میخوام

احتیاج به یک برد دارم که با میکرو کار میکنه و برنامه نویسی داره
اگه کسی هست که این مدار و برنامه را برای من طراحی کنه خیلی مرده
در غیر اینصورت میشه کمکم کنید خودم بسازمش؟
مدار به شرح ذیل میباشد:
1-مدار کنترل موتور دی سی با تغذیه 24 ولت
2-این مدار با ورودی 24 ولت ای سی به مدار راه اندازی میشه
3-از دو طریق حالت چپ گرد و راست گرد میشه اول از طریق کلید دوم (نرمال)از طریق رله 24 ولته (اتوماتیک) که فرمان چپ و راست را میده که در اصل 2 کلید دارد یکی برای چپ وراست گرد بودنش و دیگری برای حالت نرمال و اتوماتیک بودنش
4-در هر دو حالت چپ و راست گرد دو دور دارد تند و کند که سرعت هر کدام با ولوم تنظیم میشود که در اصل 4 ولوم دارد یکی برای سرعت تند راست گرد و یکی برای سرعت کند راست گرد و به همین طریق برای چپ گرد
5-استارت موتور با دور تند میباشد که به محض برخورد با سنسور حساس به مغناطیس از دور تند به دور کند تغییر حالت داده و با دور کند حرکت میکند
6-در حالت راست گرد موتور با سرعت کند دائم تغذیه شود ولی در حالت چپ گرد سرعت کند بعد از 10 ثانیه موتور قطع شود تا زمان فرمان گرفتن از حالت نرمال یا اتوماتیک

با سپاس فراوان
متشکرم
 

mbkhavari

اخراجی موقت
ممنون میشم pdfاموزشی کد ویژن و پروتیوس و avr رابه بفرستید
 

hadise70

عضو جدید
سلام

دوستان میخواستم کمکی کنید وببینیداین برنامه روبرایavrدرست نوشتم(متاسفانه الان نمیتونم امتحانش کنم)
کلمه جمعه رادرحافظه گرافیکی lcd ایجادکرده وآن را نمایش دهد؟(برای اتصال به lcd ازپورت d استفاده شود وطبق ماتریس5*8باشد)
کد:
[LEFT][RIGHT]#include <mega16.h>[/RIGHT]

[RIGHT]#asm[/RIGHT]

[RIGHT]         .equ_lcd_port=0x12[/RIGHT]

[RIGHT]#endasm[/RIGHT]

[RIGHT]#include <lcd.h>[/RIGHT]

[RIGHT]Typedef unsigned char byte;[/RIGHT]

[RIGHT]Flash bytechar0[8]={0,8,20,2,31,0,4,0};[/RIGHT]

[RIGHT]Flash bytechar1[8]={0,0,0,0,31,10,14,0};[/RIGHT]

[RIGHT]Flash bytechar2[8]={0,0,31,10,31,0,0,0};[/RIGHT]

[RIGHT]Flash byte char3[8]={2,6,10,6,3,0,0,0};[/RIGHT]

[RIGHT]Void define_char(byte flash *pc,bytechar_code){[/RIGHT]

[RIGHT]Byte i,a;[/RIGHT]

[RIGHT]A=(char_code<<3[FONT='inherit']|[/FONT]0x40);[/RIGHT]

[RIGHT]For (i=0;i<8;i++)[/RIGHT]

[RIGHT]}[/RIGHT]

[RIGHT]Void main(){[/RIGHT]

[RIGHT]Lcd_init(16);[/RIGHT]

[RIGHT]Define_char(char0,0);[/RIGHT]

[RIGHT]Define_char(char1,1);[/RIGHT]

[RIGHT]Define_char(char2,2);[/RIGHT]

[RIGHT]Define_char(3,3);[/RIGHT]

[RIGHT]Lcd_gotoxy(0,0);[/RIGHT]

[RIGHT]Lcd_putsf("Display day:");[/RIGHT]

[RIGHT]Lcd_putchar(3);[/RIGHT]

[RIGHT]Lcd_putchar(2);[/RIGHT]

[RIGHT]Lcd_putchar(1);[/RIGHT]

[RIGHT]Lcd_putchar(0);[/RIGHT]

[RIGHT]While(1){[/RIGHT]

[RIGHT]};[/RIGHT]

[RIGHT]}[/RIGHT]
[/LEFT]
 

majidi8

عضو جدید
avr

avr

سلام مشکل من خیلی ساده اس وقتی میگنِِDDRDیعنی چی؟ DDRD=0x00باDDRD=0xffیا باDDRD=0x12یعنی چی؟ تفاوتش باPORTD چیه؟ خواهشا ساده (زیر لیسانس)جواب بدید
 

سپهر سوری

عضو جدید
سلام یه برنامه ساده نوشتم که یه عدد ولتاژ رو ازADC میخونه و روی ال سی دی نمایش بده و لی هیچی روی صفحه نمایش نمیده چیکار کنم؟
دوم آیا ADC ولتاژ های منفی رو هم میفهمه یا فقط صفر تاپنج ولت رو میفهمیه؟
سوم آیا زمانیکه با برنامه code wizard قابلیتADC رو فعال میکنی همه هشتا پایه فعال میشن یا فقط یه پایه فعال میشه؟
متشکر
یاعلی
 

GNMS

عضو جدید
سلام مشکل من خیلی ساده اس وقتی میگنِِDDRDیعنی چی؟ DDRD=0x00باDDRD=0xffیا باDDRD=0x12یعنی چی؟ تفاوتش باPORTD چیه؟ خواهشا ساده (زیر لیسانس)جواب بدید

majidi8 عزیز با سلام

DDR جهت پورت رو نشون میده، یعنی اینکه با متغیر DDR به AVR میگی قراره این پورت خروجی باشه (یعنی برق مثبت 5 ولت بده) یا اینکه ورودی باشه (یعنی بهش برق مثبت 5 ولت وصل کنی).
هر پورتی هم 8 تا پایه داره که با یکی از بیتهای متغیر DDR متناظره. یعنی اینکه اگه بیت مربوطه به اون رو 1 بکنی پورت بصورت خروجی تعریف میشه و اگه صفر کنی بصورت ورودی تعریف میشه. بعد یه عدد تو مبنای 2 بدست میاد که باید به مبنای 10 یا 16 تبدیل کنی و به DDR نسبت بدی.
بعنوان مثال پورت D رو توی ATMega 16 در نظر بگیر که پایه هاش بصورت زیر هستند:

پایه پورت
شماره پایه ATMega16
شماره بیت DDR
(PORTD.0)
14
0
(PORTD.1)
15
1
(PORTD.2)
16
2
(PORTD.3)
17
3
(PORTD.4)
18
4
(PORTD.5)
19
5
(PORTD.6)
20
6
(PORTD.7)
21
7

با توجه به جدول بالا میتونی تک تک هر کدوم از پایه ها رو بصورت مستقل ورودی یا خروجی تعریف کنی.
مثال: فرض کن میخوای پایه های 14 و 15 و 21 خروجی باشن و مابقی ورودی باشند. پس عددی که به DDR باید بدی توی مبنای 2 میشه: 10000011. اگه این عدد رو به مبنای 10 تبدیل کنی میشه 131. پس باید دستور زیر رو بنویسی:
DDRD=131.
یا میتونستی عدد 131 رو به مبنای 16 تبدیل کنی که میشه 83. بجای دستور بالا میتونی دستور زیر رو هم بنویسی:
DDRD=0x83.
فکر کنم الان دیگه میدونی که فرق DDRD=0x00 با DDRD=0xff چیه: در حالت اول (DDRD=0x00) تمام پایه ها بصورت ورودی تعریف میشن (چون تمام بیتها صفر هستش) در حالیکه در حالت دوم (DDRD=0xff) تمام پایه ها بصورت خروجی تعریف میشن.(چون تمام بیتها 1 هستن).
امیدوارم که توضیحاتم کامل بوده باشه.

GNMS
 

GNMS

عضو جدید
سلام یه برنامه ساده نوشتم که یه عدد ولتاژ رو ازADC میخونه و روی ال سی دی نمایش بده و لی هیچی روی صفحه نمایش نمیده چیکار کنم؟
دوم آیا ADC ولتاژ های منفی رو هم میفهمه یا فقط صفر تاپنج ولت رو میفهمیه؟
سوم آیا زمانیکه با برنامه code wizard قابلیتADC رو فعال میکنی همه هشتا پایه فعال میشن یا فقط یه پایه فعال میشه؟
متشکر
یاعلی

سپهر سوری عزیز با سلام

ADC فقط ولتاژهای مثبت رو میفهمه و ولتاژهای منفی رو نمیتونی بهش بدی. لزومی هم نداره که ولتاژت 0 تا 5 ولت باشه، چون رفرنسش پایه Vref هست. یعنی میتونی مثلا ولتاژ 2 ولت بهش بدی و ولتاژ 0 تا 2 ولت رو اندازه گیری کنی.
وقتی که با code wizard قابلیت Adc رو فعال میکنی یه تابع به نام read_adc اضافه میکنه که از این تابع میتونی مستقلاً هرکدوم از پایه ها رو خواستی بعنوان آنالوگ بخونی.
اینکه چرا هیچی رو LCd نشون نمیده رو دلیلش رو نمیدونم. چون برنامه و سخت افزارت رو نمیدونم چه جوریه! هر کدومش میتونه اشکال داشته باشه، یا LCD رو اشتباه بستی، یا برنامه اش رو اشتباه نوشتی، اما من همین برنامه رو برات آپلود میکنم که میدونم درست کار میکنه. امتحانش کن ببین چه جوابی میگیری.

GNMS
 

پیوست ها

  • adc.rar
    32.2 کیلوبایت · بازدیدها: 2
آخرین ویرایش:

mamalijavad

عضو جدید
سلام مشکل من خیلی ساده اس وقتی میگنِِDDRDیعنی چی؟ DDRD=0x00باDDRD=0xffیا باDDRD=0x12یعنی چی؟ تفاوتش باPORTD چیه؟ خواهشا ساده (زیر لیسانس)جواب بدید

سلام دوست عزیز....دستور DDR مشخص میکنه که پایه چی باشه(ورودی یا خروجی)...اما دستور PORTمشخص میکنه که از چه نوع باشه(مـثلا اگه داریمDDRD.0=1 یعنی خروجیه واگه PORT.0=0 یعنی اگه led بهش بزنی روشن نمیشه ولی اگه PORT.0=1 باشه روشن میشه...



برای بزرگ شدن نیازی به تحقیر دیگران نیست
 

mzolfaghari

عضو جدید
سلام یه برنامه ساده نوشتم که یه عدد ولتاژ رو ازADC میخونه و روی ال سی دی نمایش بده و لی هیچی روی صفحه نمایش نمیده چیکار کنم؟
دوم آیا ADC ولتاژ های منفی رو هم میفهمه یا فقط صفر تاپنج ولت رو میفهمیه؟
سوم آیا زمانیکه با برنامه code wizard قابلیتADC رو فعال میکنی همه هشتا پایه فعال میشن یا فقط یه پایه فعال میشه؟
متشکر
یاعلی

جواب سوال شما با ذکر مثال و توضیحات برنامه در لینک زیر موجود است.
آموزش برنامه نویسی codevision
(تشخیص ورود ماشین به پارکینگ)

سطح آموزشی: مقدماتی
http://matlabfa.ir/post/13
 

montarboo

عضو جدید
سلام دوستان من یه پروژه کسینوس فی متر با avr داشتم که تو اون قرار بود موج مربعی نمونه برداری شده از ولتاژ به اینتراپت خارجی صفر و نمونه جریان به اینت یک وصل بشه و با توجه به اختلاف زمانی بین ان ها (در بارهای غیر اهمی) اینت خارجی صفر تایمر یک را روشن کند و اینت خارجی یک تایمر را خاموش کند و از طریق محاسبه این زمان، اختلاف فاز بین دو شکل موج بدست آید. ولی گاهی اوقات در محیط پروتئوس خطا در اندازه گیری بود. تصور من این است که چون میکرو برنامه ها را خط به خط اجرا می کند. لذا با رفتن به زیر برنامه وقفه اینت صفر بدون اینکه برنامه وقفه یک برود ادامه برنامه را دنبال می کند و لذا خطا ایجاد می شود می خواستم بدونم آیا راهی وجود دارد که در برنامه ترتیبی داد که میکرو بدون رفتن به هر دو اینتراپت برنامه را ادامه ندهد. یا اصلا راهی وجود دارد که میکرو در حال انتظار برای رخداد کاری بماند. ایا در میکروهای دیگر مثل pic این امکان وجود دارد؟ قبلا از همکاری دوستان صمیمانه تشکر می کنم. در زیر قسمتی از برنامه اورده شده است توضیح اینکه متغیر n جهت این به کار رفته که ادامه برنامه منوط به اجرای زیر برنامه وقفه صفر قبل از یک شود. حتما وقفه صفر باید قبل از یک اجرا شود.
[FONT=&quot]int [/FONT][FONT=&quot]n=0;[/FONT]
[FONT=&quot]// External Interrupt 0 service routine[/FONT]
[FONT=&quot]interrupt [/FONT][FONT=&quot][2] void ext_int0_isr(void)[/FONT]
[FONT=&quot]{[/FONT]
[FONT=&quot]TCNT1=0X0000;[/FONT]
[FONT=&quot]TCCR1A=0X00;[/FONT]
[FONT=&quot]TCCR1B=0x02;[/FONT]
[FONT=&quot]n=2;[/FONT]
[FONT=&quot]}[/FONT]
[FONT=&quot]// External Interrupt 1 service routine[/FONT]
[FONT=&quot]interrupt [/FONT][FONT=&quot][3] void ext_int1_isr(void)[/FONT]
[FONT=&quot]{[/FONT]
[FONT=&quot]TCCR1A=0x00;[/FONT]
[FONT=&quot]TCCR1B=0X00;[/FONT]
[FONT=&quot]GICR=0X00;[/FONT]
[FONT=&quot]MCUCR=0X00;[/FONT]
[FONT=&quot]#asm("cli")[/FONT]
[FONT=&quot]n--;[/FONT]
[FONT=&quot]}[/FONT]
[FONT=&quot]شرط ادامه برنامه را هم بدین صورت تعریف می کردیم:[/FONT]
[FONT=&quot]while[/FONT][FONT=&quot](n!=1)[/FONT]
[FONT=&quot]{ GICR|=0xC0;[/FONT]
[FONT=&quot]MCUCR=0x0F;[/FONT]
 

montarboo

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

ahmad2267

عضو جدید
سلام من درمورد اثر انگشت که چگونه کد میشند وهمینطور درمورد hmt-rمطلب نیاز دارم برا پروژه پایانی میخوام ممنون میشم کمکم کنید
 

martin19902000

عضو جدید
pwm

pwm

با سلام و خسته نباشید ..
من یک برنامه pwm با c نوشتم و داخل proteus شبیه سازی کردم و کاملا درست جواب داد ولی وقتی روی اتمگا می ریزم پالسی نمیده ،
به نظر شما مشکل از کجاست
(برنامه ی دیگه ریختم جواب می ده)
 

iman_

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

ateeee

عضو جدید
salam,
bebakhshid mozahem shodam.
man baraye poroje karshenasi mikhastam ye robot taghibe seda ya rimot besazam,bein in do mondam!!!
goftam shayad betonin komakam konin,
man taze daram AVR yad migiram,hichi az sakht nemidunam!!
aslan nemidonam az koja bayad shoro konam!!
va dar che zaminei motale'e konam .
mamnoon misham komakam konin..
 

zahra.b432

عضو جدید
سلام
برنامه که در سطر اول و ستون سوم جمله ی ثابت "my name"را نمایش بده و در سطر دوم هم نام خودم رو نمایش بده و در امتداد و انتهای نام خودم کاراکتر * رو نمایش بده ..در انتها هم مکان نما به ابتدای سطر دوم رفته و فرمان چشمک زن بودن آن را ارسال کند....؟؟
ممنون میشم برنامه رو بنویسید واسم:cry:وقت ندارم خودم و سر کلاس هم نبودم واسه آزمایشگاه ریزپردازنده میخوام

 

mohamad_musavi69

عضو جدید
کسی نیست اینجا جووووووووابمو بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟:(:(:cry:



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

mpiramooni

عضو جدید
سلام دوستان
من یک سوال دارم .
اگر بخواهیم میکرو در زمان مشخصی از کار افتاده و با زدن چند کلید ترکیبی دوباره راه اندازی شود امکان دارد یا نه ؟ و اگر نشود راهی هست که بعد از مدتی یا ساعت -یا تعداد روشن و خاموش کردن ها -خود به خود از کار بیفتد؟
در صورتی که روی برد ساعت یا تایمر روز شمار و هیچ نشانگری نداشته باشد
 

aam1372

عضو جدید
سلام من دانشجوی سال دوم کارشناسی برق هستم میخوام شروع کنم به یاد گرفتن برنامه کد ویژن و کار با میکرو کنترل هارو ولی نمی دونم باید از کجاشروع کنم میشه یکم راهنمایی کنید منو ......
زبان c رو بلدم....
 
آخرین ویرایش:
سلام :دوست عزیز این بردی که شما نیاز دارید احتمالا واسه درب کنترلی میخواهید البته تنها راهش اینه که یه هدر برد با میکروی avr تهیه کنی و از خروجیهاش استفاده کنی
 
avr

avr

سلام دوست عزیز شما باید سعی کنید یه سری سخت افزار تهیه کنید(lcd 16*2----مگا 16----ذیف سوت ---- پروجکت برد) و نیز یه پروگرامر avr
 
سلام:
دوست عزیز میکرو در مقابل شوک الکتریکی و نویز بسیار اسیب پذیر میباشد و لطف کنید دیتاشیت میکرو مذکور را مشاهده و پایه ریست انرا پیدا کنید و به منفی متصل کنید تا ریست شود /موفق باشی
 

Similar threads

بالا