a.rmohajery
عضو جدید
سلام
ممنون بابت این سایت
من یک دانشجوی پزشکی هستم.ازین نظر میگم که بدونید چقدر با آی سی ها و میکروکنترولرها ناآشنا بودم.البته یک ماهی هست راجبشون خوندم و با کمک یکی از دوستای مهندسی برقم تونستم یکم پیشرفت کنم.
الآن ماجرا این هستش که من میخوام یک دستگاهی بسازم تا از طریق کامپیوتر بتونم دو تا چراغ رو به صورت جدا جدا روشن خاموش کنم،این دستگاه بخشی از یک سیستم نرم افزاری-سخت افزاری هستش که میخوایم از طریق اون سیستم ویژگیهای ظاهری دارو رو شناسایی کنیم و بعد اسمش تشخیص داده بشه.تا جاییکه فهمیدم باید از طریق میکروکنترلر و رله و پورت سریال اینکار رو انجام بدم.
با کمک دوستم و استفاده از برنامه های موجود تو اینترنت و مثالها و آشناییکه خودم در حد متوسط با برنامه نویسی داشتم و ... یک برنامه با codevisionavr برای ATmega8 نوشتیم و مدارشم روی برد پیاده کردیم.یکی از این پورتهای usb که پورت com مجازی روی کامپیوتر ایجاد میکنه هم خریدم و در نهایت مدار رو بستیم.
یک توضیح راجبه پورت com مجازی که گفتم خریدیم:عکسش رو در ادامه گذاشتم.ضمنا با استفاده از این دیگه نیاز به max232 نیست و مستقیم میشه به میکرو کنترلر متصلش کرد.
جوری که برنامه رو نوشتیم با فشار دکمه 1 در خروجی نرم افزار VB. net (این نرم افزارم از یکی از سایتها برداشتم و آماده بود.این نرم افزار مقدار تایپ شده رو به پورت com انتخاب شده ارسال میکند.البته خودم در حد متوسط برنامه نویسی vb.net بلدم)پایه portb.0 فعال باید بشه و چراغ شماره یک باید روشن و خاموش میشد و با فشار دکمه دو ،با فعال شدن پایه b.1 میکرو چراغ شماره 2 روشن و خاموش بشه.اما نمیشههههه
(((
ضمنا برنامه codevisionavrهیچ خطایی در برنامه نوشته شده نمیده و فایل HEXرو ایجاد میکنه.منم فایل رو با استفاده از avr studio4 و با کمک پروگرامر USB میکروکنترلرهای STK500) AVR) مدل NUS112 ماله شرکت نوآوران الکترونیک به میکروکنترولر منتقل میکنم و اینم انگار درست انجام میشه و avr studio4پیغام میده فایل منتقل شد و برنامه ریخته شده با فایل hexمطابقت داره.
ممنون میشم اگر کسی بتونه کمکم کنه و بهم بگه ایراد این سیستم کجاش میتونه باشه.در ادامه نرم افزار vb.net و کدهایی که در codevisionavrنوشتیم و عکسهای مدار بسته شده رو گذاشتم.ضمنا آداپتوری هم که به مدار وصل کردم 4 ولته
ببخشید خیلی طولانی شد

ممنون بابت این سایت
من یک دانشجوی پزشکی هستم.ازین نظر میگم که بدونید چقدر با آی سی ها و میکروکنترولرها ناآشنا بودم.البته یک ماهی هست راجبشون خوندم و با کمک یکی از دوستای مهندسی برقم تونستم یکم پیشرفت کنم.
الآن ماجرا این هستش که من میخوام یک دستگاهی بسازم تا از طریق کامپیوتر بتونم دو تا چراغ رو به صورت جدا جدا روشن خاموش کنم،این دستگاه بخشی از یک سیستم نرم افزاری-سخت افزاری هستش که میخوایم از طریق اون سیستم ویژگیهای ظاهری دارو رو شناسایی کنیم و بعد اسمش تشخیص داده بشه.تا جاییکه فهمیدم باید از طریق میکروکنترلر و رله و پورت سریال اینکار رو انجام بدم.
با کمک دوستم و استفاده از برنامه های موجود تو اینترنت و مثالها و آشناییکه خودم در حد متوسط با برنامه نویسی داشتم و ... یک برنامه با codevisionavr برای ATmega8 نوشتیم و مدارشم روی برد پیاده کردیم.یکی از این پورتهای usb که پورت com مجازی روی کامپیوتر ایجاد میکنه هم خریدم و در نهایت مدار رو بستیم.
یک توضیح راجبه پورت com مجازی که گفتم خریدیم:عکسش رو در ادامه گذاشتم.ضمنا با استفاده از این دیگه نیاز به max232 نیست و مستقیم میشه به میکرو کنترلر متصلش کرد.
جوری که برنامه رو نوشتیم با فشار دکمه 1 در خروجی نرم افزار VB. net (این نرم افزارم از یکی از سایتها برداشتم و آماده بود.این نرم افزار مقدار تایپ شده رو به پورت com انتخاب شده ارسال میکند.البته خودم در حد متوسط برنامه نویسی vb.net بلدم)پایه portb.0 فعال باید بشه و چراغ شماره یک باید روشن و خاموش میشد و با فشار دکمه دو ،با فعال شدن پایه b.1 میکرو چراغ شماره 2 روشن و خاموش بشه.اما نمیشههههه

ضمنا برنامه codevisionavrهیچ خطایی در برنامه نوشته شده نمیده و فایل HEXرو ایجاد میکنه.منم فایل رو با استفاده از avr studio4 و با کمک پروگرامر USB میکروکنترلرهای STK500) AVR) مدل NUS112 ماله شرکت نوآوران الکترونیک به میکروکنترولر منتقل میکنم و اینم انگار درست انجام میشه و avr studio4پیغام میده فایل منتقل شد و برنامه ریخته شده با فایل hexمطابقت داره.
ممنون میشم اگر کسی بتونه کمکم کنه و بهم بگه ایراد این سیستم کجاش میتونه باشه.در ادامه نرم افزار vb.net و کدهایی که در codevisionavrنوشتیم و عکسهای مدار بسته شده رو گذاشتم.ضمنا آداپتوری هم که به مدار وصل کردم 4 ولته
ببخشید خیلی طولانی شد
کد:
[LEFT]
#include <mega8.h>
// Standard Input/Output functions
#include <stdio.h>
// Declare your global variables here
char code;
bit a;
bit b;
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
while (1)
{
code=getchar();
switch (code)
{
case '1':
if (a==0)
{
a=1;
PORTB.0=1;
}
else
{
a=0;
PORTB.0=0;
}
break;
//////////////////////////////
case '2':
if (b==0)
{
b=1;
PORTB.1=1;
}
else
{
b=0;
PORTB.1=0;
}
break;
}
}
}
[/LEFT]
