سلام.
برای استفاده از کارتهای مولتی مدیا "mmc" در کامپایلر کدویژن مطلب رو دنبال کنید.
ابتدا کتابخانه را باید نصب کنید.
برای اینکار به محل نصب کد ویژن رفته و فایل mmc_lib.h را درون پوشه inc و فایل mmc_lib.lib را داخل پوشه lib قرار دهید.
الان میتونید این کتابخونه رو به برنامه خودتون اضافه کنید
به این شکل :
#include "mmc_lib.h"
این برنامه از پورت SPI میکرو استفاده میکنه.
بنابراین در تنظیمات این پورت دقت کنید.
اگر از کدویزارد استفاده میکنید پس از فعال کردن پورت SPI و انتخاب سرعت مناسب , "SPI Type" رو از Slave به Master تبدیل کنید.
در ضمن بیت صفر از پورت B رو هم باید بصورت خروجی تعریف کنید.
اتصال میکرو به MMC به این صورت است.
پایه MISO میکرو به DO از MMC متصل میشه.
پایه MOSI میکرو به DI از MMC متصل میشه.
پایه CLK میکرو به CLK از MMC متصل میشه.
پایه PORTB.0 میکرو به CS از MMC متصل میشه.
برای استفاده از این کتابخونه , شما احتیاج به تعریف یک بافر 512 بایتی از نوع Unsigned Char دارید.
مثلا متغیری با اسم buf_data به این شکل تعریف میشه.
unsigned char buf_data[512];
این کتابخونه سه دستور برای استفاده از MMC داره.
mmc_init();
و
mmc_write(unsigned long Number_Of_Sector, unsigned char Buffer);
و
mmc_read(unsigned long Number_Of_Sector, unsigned char Buffer);
که شما بجای "unsigned char Number_Of_Sector" شماره سکتوری که میخواهید دیتا در آنجا نوشته و یا از آنجا خوانده شود را مینویسید.
و بجای "unsigned char Buffer" اسم متغیری که برای کار با این کتابخونه ساخته بودید را مینویسید.
یک مثال کوچک.
برای استفاده از کارتهای مولتی مدیا "mmc" در کامپایلر کدویژن مطلب رو دنبال کنید.
ابتدا کتابخانه را باید نصب کنید.
برای اینکار به محل نصب کد ویژن رفته و فایل mmc_lib.h را درون پوشه inc و فایل mmc_lib.lib را داخل پوشه lib قرار دهید.
الان میتونید این کتابخونه رو به برنامه خودتون اضافه کنید
به این شکل :
#include "mmc_lib.h"
این برنامه از پورت SPI میکرو استفاده میکنه.
بنابراین در تنظیمات این پورت دقت کنید.
اگر از کدویزارد استفاده میکنید پس از فعال کردن پورت SPI و انتخاب سرعت مناسب , "SPI Type" رو از Slave به Master تبدیل کنید.
در ضمن بیت صفر از پورت B رو هم باید بصورت خروجی تعریف کنید.
اتصال میکرو به MMC به این صورت است.
پایه MISO میکرو به DO از MMC متصل میشه.
پایه MOSI میکرو به DI از MMC متصل میشه.
پایه CLK میکرو به CLK از MMC متصل میشه.
پایه PORTB.0 میکرو به CS از MMC متصل میشه.
برای استفاده از این کتابخونه , شما احتیاج به تعریف یک بافر 512 بایتی از نوع Unsigned Char دارید.
مثلا متغیری با اسم buf_data به این شکل تعریف میشه.
unsigned char buf_data[512];
این کتابخونه سه دستور برای استفاده از MMC داره.
mmc_init();
و
mmc_write(unsigned long Number_Of_Sector, unsigned char Buffer);
و
mmc_read(unsigned long Number_Of_Sector, unsigned char Buffer);
که شما بجای "unsigned char Number_Of_Sector" شماره سکتوری که میخواهید دیتا در آنجا نوشته و یا از آنجا خوانده شود را مینویسید.
و بجای "unsigned char Buffer" اسم متغیری که برای کار با این کتابخونه ساخته بودید را مینویسید.
یک مثال کوچک.
کد:
[left] #include <mega32.h> #include <spi.h> #include "mmc_lib.h" unsigned char buf_mmc[512]; // IN BUFERY AST KE BARAYE TABADOLE ETELAAT BA MMC ESTEFADE MISHE. unsigned long sector_num; unsigned int i; void main(void) { // Input/Output Ports initialization // Port A 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 PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=Out // State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=0 PORTB=0x00; DDRB=0xB1; // Port C 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 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=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 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: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // SPI initialization // SPI Type: Master // SPI Clock Rate: 2000.000 kHz // SPI Clock Phase: Cycle Half // SPI Clock Polarity: Low // SPI Data Order: MSB First SPCR=0x50; SPSR=0x00; mmc_init(); // RAH ANDAZI MMC for (i = 0 ; i <= 511 ; i++) { buf_mmc[i] = i % 256; // POR KARDANE BUFER } sector_num = 50; // ENTEKHABE SECTORE SHOMAREYE "50" AZ MMC , BARAYE NEVESHTAN VA KHANDAN mmc_write(sector_num, buf_mmc); // NEVESHTAN ROOYE MMC for (i = 0 ; i <= 511 ; i++) { buf_mmc[i] = 0; // KHALI KARDANE BUFER } mmc_read(sector_num, buf_mmc); // KHANDAN AZ ROOYE MMC PORTD = buf_mmc[170]; // NAMAYESHE ADADE KHANDE SHODE AZ MMC while (1) { // Place your code here }; } [/left]
دیدگاه