مشاهده پست های بی پاسخ | مشاهده موضوعهای فعال تاریخ امروز شنبه 21 آوریل, 2018 1:12 am



پاسخ به موضوع  [ 48 پست ]  برو به صفحه قبلی  1 ... 6, 7, 8, 9, 10
 آموزش میکروکنترلرهای AVR گام به گام 
نویسنده پیام

عضو: پنجشنبه 26 مارس, 2009 9:37 am
پست ها: 1
پست Re: آموزش میکروکنترلرهای AVR گام به گام
خوب بقيش كو؟


پنجشنبه 26 مارس, 2009 9:58 am
مشخصات شخصی
آواتار کاربر

عضو: پنجشنبه 07 فوریه, 2008 6:01 pm
پست ها: 39
پست قسمت بیست و چهارم:توابع کتابخانه Spi.h :
توابع کتابخانه Spi.h :
کامپایلر codevision کتابخانه spi.h را برای ساده نمودن بر قراری ارتباط بین برنامه های c و سایل جانبی از طریق باس SPI ارائه نموده است . تعریف این تابع در زیر دایرکتوری ../INC قرار دارد . قبل از استفاده از توابع موجود در آن باید آن را به کمک include #به ابتدای خود اضافه کنید . توابع SPI به قرار زیراند :
unsigned char spi (unsigned char data)i:
این تابع یک بایت داده را می فرستد و به طور همزمان یک بایت دریافت می کند . قبل از استفاده از تابع spi باید رجیستر کنترل SPI (SPCR)i را بر اساس مطالب ذکر شده در برگه های اطلاعاتی Atmel تنظیم نمود .
از آنجایی که تابع spi برای ارتباط SPI از روش polling استفاده می کند نیازی به فعال کردن وقفه SPI نیست . در ادامه مثالی از استفاده تابع spi برای برقراری ارتباط مبدل با آنالوگ به دیجیتال AD7896 آورده شده است :
در این برنامه مبدل آنالوگ به دیجیتال AD7896 به میکروکنترلر AT90S8515 متصل شده است.این برنامه هر 100 میلی ثانیه یکبار،مقدار ولتاژ ADC را به کمک تابع read_adc() به صورت سریال می خواند و بر روی LCD نمایش می دهد.
/*
Digital voltmeter using an
Analog Devices AD7896 ADC
connected to an AT90S8515
using the SPI bus
Chip: AT90S8515
Memory Model: SMALL
Data Stack Size: 128 bytes
Clock frequency: 4MHz
AD7896 connections to the AT90S8515
[AD7896] [AT9S8515 DIP40]
1 Vin
2 Vref=5V
3 AGND - 20 GND
4 SCLK - 8 SCK
5 SDATA - 7 MISO
6 DGND - 20 GND
7 CONVST- 2 PB1
8 BUSY - 1 PB0
Use an 2x16 alphanumeric LCD connected
to PORTC as follows:
[LCD] [AT90S8515 DIP40]
1 GND- 20 GND
2 +5V- 40 VCC
3 VLC
4 RS - 21 PC0
5 RD - 22 PC1
6 EN - 23 PC2
11 D4 - 25 PC4
12 D5 - 26 PC5
13 D6 - 27 PC6
14 D7 - 28 PC7 */

#asm
.equ __lcd_port=0x15
#endasm

#include <lcd.h> // LCD driver routines
#include <spi.h> // SPI driver routine
#include <90s8515.h>
#include <stdio.h>
#include <delay.h>

// AD7896 reference voltage [mV]
#define VREF 5000L

// AD7896 control signals PORTB bit allocation
#define ADC_BUSY PINB.0
#define NCONVST PORTB.1

// LCD display buffer
char lcd_buffer[33];

unsigned read_adc(void)
{
unsigned result;
// start conversion in mode 1
// (high sampling performance)
NCONVST=0;
NCONVST=1;
// wait for the conversion to complete
while (ADC_BUSY);
// read the MSB using SPI
result=(unsigned) spi(0)<<8;
// read the LSB using SPI and combine with MSB
result|=spi(0);
// calculate the voltage in [mV]
result=(unsigned) (((unsigned long) result*VREF)/4096L);
// return the measured voltage
return result;
}

void main(void)
{
// initialize PORTB
// PB.0 input from AD7896 BUSY
// PB.1 output to AD7896 /CONVST
// PB.2 & PB.3 inputs
// PB.4 output (SPI /SS pin)
// PB.5 input
// PB.6 input (SPI MISO)
// PB.7 output to AD7896 SCLK
DDRB=0x92;
// initialize the SPI in master mode
// no interrupts, MSB first, clock phase negative
// SCK low when idle, clock phase=0
// SCK=fxtal/4
SPCR=0x54;
// the AD7896 will work in mode 1
// (high sampling performance)
// /CONVST=1, SCLK=0
PORTB=2;
// initialize the LCD
lcd_init(16);

lcd_putsf("AD7896 SPI bus\nVoltmeter");
delay_ms(2000);
lcd_clear();

// read and display the ADC input voltage
while (1)
{
sprintf(lcd_buffer,"Uadc=%4umV",read_adc());
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(100);
{;
{


انجام تنظیمات اولیه ارتباط سریال SPI در Codewizard :
در صورتی که در برنامه Codewizard بر روی لبه SPI کلیک کنید می توانید ویژگیهای ارتباط SPI را تنظیم کنید . با انتخاب گزینه SPI enabled ارتباط SPI در داخل میکرو فعال و صفحه ای شبیه شکل زیر ظاهر می شود .
ضمیمه:
SPI.GIF

اگر قصد دارید تا پس از اتمام یک ارسال SPI، وقفه تولید گردد باید گزینه SPI interrupt را علامت بزنید علاوه بر این شما می توانید پارامترهای زیر را تنظیم کنید:
SPI clock rate:
کلاک استفاده شده در پایه SCK برای ارسال داده ها را مشخص می کند .
Clock phase :
موقعیت لبه سیگنال SCK را نسبت به بیت داده مشخص می کند .
Clock polarity :
وضعیت پایه SCK را در حالت بیکاری تعیین می کند .
SPI Type :
حالت عملکرد SPI را به صورت Master یا slave مشخص می کند .
Data order :
ترتیب ارسال بیتهای داده ( اول LSB یا اول MSB ) را تعیین می کند .
انتخاب گزینه clock Rate*2 که برای بعضی از تراشه های VAR وجود دارد ،سرعت کلاک SPI را دو برابر می کند
برای بر قراری ارتباط از طریق واسطه SPI در صورتی که وقفه SPI غیر فعال باشد ، از توابع SPI استفاده می شود و در صورتی که وقفه SPI فعال باشد باید از روتین وقفه spi_isr که توسط Codewizard تولید می شود ،استفاده نمود .


برای مشاهده تصاویر و دانلود فایل های ضمیمه ، لازم است در سایت ثبت نام کرده و با نام کاربری خود وارد شوید. در حال حاضر ثبت نام در سایت رایگان است.


پنجشنبه 16 آوریل, 2009 5:52 pm
مشخصات شخصی

عضو: پنجشنبه 12 فوریه, 2009 9:26 pm
پست ها: 1
پست Re: آموزش میکروکنترلرهای AVR گام به گام
Ali Reza نوشته بود:
خوب فکر میکنم برای شروع کار همین قدر کافی باشه.
اگه بازم سوالی براتون پیش اومد میتونید تو همین تاپیک ازم بپرسید یا این که بهم میل بزنید.


سلام!
من یه سری از داده های عددی از طریق پورت سریال در حافظه فلش میکرو ذخیره کردم(به صورت اسمبلی) توی code vision چطور میشه به این داده ها دسترسی پیدا کرد؟


دوشنبه 29 ژوئن, 2009 1:06 pm
مشخصات شخصی
مشاهده پست های قبلی:  نمایش بر اساس  
پاسخ به موضوع   [ 48 پست ]  برو به صفحه قبلی  1 ... 6, 7, 8, 9, 10

افراد آنلاین

کاربران حاضر در این تالار: Baidu [Spider] و 10 مهمان


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

جستجو برای:
پرش به:  
cron
استفاده و نقل از مباحث سایت، فقط با ذکر منبع و لینک سایت میکرورایانه مجاز است.
Copyright © 2006 - 2010 MicroRayaneh - Powered by phpBB © phpBB Group
Valid CSS2 Valid XHTML 1.0
طراحی سایت : میکرو رایانه