ATmega32

آرشیو برنامه های ATmega32 روی برد NSK115

ATmega32

آرشیو برنامه های ATmega32 روی برد NSK115

برنامه ارتباط با پورت سریال

در اینجا به تفصیل به شرح برنامه ای خواهم پرداخت که دو روز آزگار امان مرا گرفت تا آن را اجرا کنم. 

هدف: برنامه ای که یک داده ( در اینجا عدد 57) را از میکرو ATmega32A روی صفحه کپ تاپ بفرستد. 

 

الف) تجهیزات سخت افزاری

1- یک دستگاه کامپیوتر شامل 64bit Windows 7 

2- یک پروگرامر شرکت اکستریم که وطنی و غیر استاندارد جهانی است. خود شرکتهای آمریکایی اتمل یا اینتل پروگرامرهای دیگری معرفی کرده اند. این شرکت ایرانی یک نرم افزار واسط به نام سازنده آن خزاما هم همراه پروگرامر ارائه کرده است. 

3- یک دستگاه NSK115 شرکت نوآوران الکترونیک 

4- یک مبدل USB / RS232 چینی نوع امگا ( که باید درایور آن را جستجو کرده و دانلود و نصب کنید) 

 

ب) نرم افزارها 

1- نرم افزار AVR CodeVision ساخت آلمان برای برنامه نویسی به زبان C 

2- نرم افزار AVR Studio ساخت شرکت اتمل برای برنامه نویسی به زبان اسمبلی 

3 - نرم افزار Khazma AVR Programmer برای ریختن برنامه درون میکرو ساخت مهندس بهزاد خزاما

4- نرم افزار Serial Interface برای ارتباط سریال ساخت شرکت نوآوران الکترونیک  

 

ج) آماده کردن میکرو 

اول باید تمام سخت افزارها ( مخصوص مبدل) و نرم افزارها را آزمایش و راستی آزمایی کرد. 

سپس باید فیوز بیت ها و قفلها را تنظیم کرد. 

برای این کار روی آیکون قفل خزاما کلیک کنید. 

√ یعنی "برنامه ریزی نشده" یعنی 1 

برای همه مثالهای بعدی تا اطلاع ثانوی: 

H-Fuse:  10001001

L-Fuse:  11101111

E-Fuse:  00000000

Lock:      00111111

د) برنامه به زبان اسمبلی

ابتدا نرم افزار AVR Studio  را باز کرده و برنامه خود را نامگذاری می کنیم. در صفحه بعد در قسمت دیوایس ها نوع Atmega32 را انتخاب می کنیم. سپس در صفحه (راست-بالا) این عبارت را می افزاییم: 

;>> Initiating:
.include"m32def.inc"
.ORG 0
CLI

;>> Global vars
LDI R20,$0
LDI R21,$FF

; loop vars
LDI R23,0
LDI R24,3

;>> USART Registers
OUT UCSRA,R20
LDI R16,$08
OUT UCSRB,R16
LDI R17,$86
OUT UCSRC,R17

;>> Baud Rate
OUT UBRRH,R20
LDI R16,$47 ;As in ne-ir
OUT UBRRL,R16
SEI

;>> Show 3
OUT DDRA,R21
LDI R18,$B0
OUT PORTA,R18

;>> Wait to empty buffer
Sabr:
SBIS UCSRA,5
RJMP Sabr

;>> Send 55
LDI R16,57
OUT UDR,R16

;>> Repeat above 3X
INC R23
CPSE R23,R24
RJMP Sabr

;>> Output 1 if completed
LDI R18,$F9
OUT PORTA,R18
YYY:
RJMP YYY 

 

سپس دگمه F7 را می زنیم. اگر عملیات موفق باشد، فایل با پسوند hex ایجاد می شود. 

 

ه) متن برنامه به زبان سی 

برای آشنایی کار با نرم افزار AVR CodeVision اینجا را کلیک کنید. متن برنامه به قرار زیر است: 

#include <mega32.h>
#include <stdio.h>
#include <delay.h>

void main(void)
{
int i;
PORTA=0x00;
DDRA=0xFF;
PORTA=0XF9;


PORTB=0x00;
DDRB=0x00;


PORTC=0x00;
DDRC=0x00;

 
PORTD=0x00;
DDRD=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600/R.S/
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;


delay_ms(500);   
PORTA=0XA4;
for(i=0;i<3;i++)
{
putchar(57); //send data
delay_ms(100);
}
PORTA=0X90;

 

و) ریختن برنامه 

توسط نرم افزار Khazma AVR Programmer برنامه را درون فلاش میکرو بریزید. 

 

ز) اجرای برنامه 

نرم افزار Serial Interface را اجرا می کنیم و تنظیمات لازمه را انجام می دهیم. اینجا را برای دیدن شماره پورت ببینید. باید عبارت 9600, n, 8,1 به رنگ سبز را بتوانید ببینید. 

با هر بار فشردن دکمه Reset روی میکرو، سه بار عدد 57 در قسمت Recieve Buffer به نمایش در خواهد آمد.

نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.