سلام
من یک حافظه mmc 512 مگابایتی رو از طریق ماژول آماده مستقیم به میکرو اتمگا 32 وصل کردم و یک ال سی دی هم برای نمایش خروجی روی میکرو بستم از کدویژن نسخه 3.12 برای کامپایل استفاده میکنم خود حافظه رو هم با فرمت fat32 با حجم 512 بایت فرمت کردم بعد یه برنامه تو سایت بود که فکر کنم مثال هفتم اقای حامد بود تو برنامه خود ایشون اصلا spi رو فعال نکرده فقط تو تنظیمات mmc پایه پورت b رو تنظیم کرده از کتابخونه ff.h هم استفاده کرده برنامه ایشون تو پروتیوس جواب میده ولی وقتی من رو میکرو میریزم جواب نمیگیرم بعد از fmount=ok اخطار fr_int_err بعد fr_exist همین طوری اینا رو میده پشت سرهم تا برسه به end نمیدونم مشکل از کجاست من تو پروژم شدیدا نیاز دارم برنامه نویسی mmc رو یاد بگیرم خواهش کمک کنید تو سایت chan رفتم دیدم کتابخونه جدید گذاشته یه ff.h گذاشته و ff.c و fconfig و discko و غیره اینا رو چطوری تو کد ویژن قرار بدم کسی میدونه من چطوری از این کتابخونه های جدید استفاده کنم این برنامه اون دوست عزیز
راستی چرا spi فعال نکرده خود کتابخونه فعالش میکنه..
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Author : Hamid Mohammad GHasemi
Chip type : ATmega32A
Program type : Application
AVR Core Clock frequency: 8 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
************************************************** ***/
#include <mega32a.h>
#include <alcd.h>
#include <ff.h>
#include <stdio.h>
#include <delay.h>
#define T1_OVF_FREQ 100
#define T1_PRESC 1024L
#define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))
FRESULT res;
unsigned int nbytes;
FATFS drive;
FIL file;
char path1[]="0:/hamid.txt";
char path2[]="0:/test.txt";
unsigned char buffer_1[15]="ha is BEST..";
unsigned char buffer[15];
unsigned char lcd_buf[15];
/* error message list */
flash char * flash error_msg[]=
{
"", /* not used */
"FR_DISK_ERR",
"FR_INT_ERR",
"FR_INT_ERR",
"FR_NOT_READY",
"FR_NO_FILE",
"FR_NO_PATH",
"FR_INVALID_NAME",
"FR_DENIED",
"FR_EXIST",
"FR_INVALID_OBJECT",
"FR_WRITE_PROTECTED",
"FR_INVALID_DRIVE",
"FR_NOT_ENABLED",
"FR_NO_FILESYSTEM",
"FR_MKFS_ABORTED",
"FR_TIMEOUT"
};
/* display error message and stop */
void error(FRESULT res)
{
if ((res>=FR_DISK_ERR) && (res<=FR_TIMEOUT))
sprintf(lcd_buf,"%p",error_msg[res]);
lcd_clear();
lcd_puts(lcd_buf);
delay_ms(2000);
}
interrupt [TIM1_OVF] void timer_comp_isr(void)
{
/* re-initialize Timer1 */
TCNT1H=T1_INIT>>8;
TCNT1L=T1_INIT&0xFF;
/* card access low level timing function */
disk_timerproc();
}
void main(void)
{
TCCR1A=0x00;
TCCR1B=(1<<CS12)|(1<<CS10);
TCNT1H=T1_INIT>>8;
TCNT1L=T1_INIT&0xFF;
TIMSK=1<<TOIE1;
delay_ms(1000);
#asm("sei"
// Alphanumeric LCD initialization
// RS - PORTA Bit 0
// RD - PORTA Bit 6
// EN - PORTA Bit 1
// D4 - PORTA Bit 2
// D5 - PORTA Bit 3
// D6 - PORTA Bit 4
// D7 - PORTA Bit 5
// Characters/line: 16
lcd_init(16);
lcd_clear();
if ((res=f_mount(0,&drive))==FR_OK)
lcd_putsf("FAT mounted = OK"
;
else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_open(&file,path1,FA_READ))==FR_OK)
lcd_putsf("File open hamid"
;
else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_read(&file,buffer,14,&nbytes))==FR _OK)
{
lcd_putsf("Reading Data"
;
delay_ms(2000);
lcd_clear();
lcd_puts(buffer);
}
else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_close(&file))==FR_OK)
lcd_putsf("File closed"
;
else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_open(&file,path2,FA_WRITE))==FR_OK)
lcd_putsf("File opened test"
;
else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_write(&file,buffer_1,15,&nbytes))= =FR_OK)
lcd_putsf("Writing Data"
;
else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_close(&file))==FR_OK)
lcd_putsf("File closed"
;
else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_open(&file,path2,FA_READ))==FR_OK)
lcd_putsf("File opened test"
;
else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_read(&file,buffer,15,&nbytes))==FR _OK)
{
lcd_putsf("Reading Data"
;
delay_ms(2000);
lcd_clear();
lcd_puts(buffer);
}
else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_close(&file))==FR_OK)
lcd_putsf("File closed"
;
else error(res);
delay_ms(2000);
lcd_clear();
lcd_putsf("....End...."
;
while(1);
}
برنامه بالا تو پروتیوس جواب میده ولی رو مدار اون اخطار هایی که گفتم رو میگیرم
این اپدیت کتابخونه های جدید mmc تو سایت http://elm-chan.org رو کجا اضافه کنم خیلی فایل های جدید توش داره با پسوند.h . .c اینها با هم چه فرقی دارن و چطوری تو کدویژن بزارمشون
تو رو خدا هر کی بلده کمک کنه......
با تشکر از دوستان
من یک حافظه mmc 512 مگابایتی رو از طریق ماژول آماده مستقیم به میکرو اتمگا 32 وصل کردم و یک ال سی دی هم برای نمایش خروجی روی میکرو بستم از کدویژن نسخه 3.12 برای کامپایل استفاده میکنم خود حافظه رو هم با فرمت fat32 با حجم 512 بایت فرمت کردم بعد یه برنامه تو سایت بود که فکر کنم مثال هفتم اقای حامد بود تو برنامه خود ایشون اصلا spi رو فعال نکرده فقط تو تنظیمات mmc پایه پورت b رو تنظیم کرده از کتابخونه ff.h هم استفاده کرده برنامه ایشون تو پروتیوس جواب میده ولی وقتی من رو میکرو میریزم جواب نمیگیرم بعد از fmount=ok اخطار fr_int_err بعد fr_exist همین طوری اینا رو میده پشت سرهم تا برسه به end نمیدونم مشکل از کجاست من تو پروژم شدیدا نیاز دارم برنامه نویسی mmc رو یاد بگیرم خواهش کمک کنید تو سایت chan رفتم دیدم کتابخونه جدید گذاشته یه ff.h گذاشته و ff.c و fconfig و discko و غیره اینا رو چطوری تو کد ویژن قرار بدم کسی میدونه من چطوری از این کتابخونه های جدید استفاده کنم این برنامه اون دوست عزیز
راستی چرا spi فعال نکرده خود کتابخونه فعالش میکنه..
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Author : Hamid Mohammad GHasemi
Chip type : ATmega32A
Program type : Application
AVR Core Clock frequency: 8 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
************************************************** ***/
#include <mega32a.h>
#include <alcd.h>
#include <ff.h>
#include <stdio.h>
#include <delay.h>
#define T1_OVF_FREQ 100
#define T1_PRESC 1024L
#define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))
FRESULT res;
unsigned int nbytes;
FATFS drive;
FIL file;
char path1[]="0:/hamid.txt";
char path2[]="0:/test.txt";
unsigned char buffer_1[15]="ha is BEST..";
unsigned char buffer[15];
unsigned char lcd_buf[15];
/* error message list */
flash char * flash error_msg[]=
{
"", /* not used */
"FR_DISK_ERR",
"FR_INT_ERR",
"FR_INT_ERR",
"FR_NOT_READY",
"FR_NO_FILE",
"FR_NO_PATH",
"FR_INVALID_NAME",
"FR_DENIED",
"FR_EXIST",
"FR_INVALID_OBJECT",
"FR_WRITE_PROTECTED",
"FR_INVALID_DRIVE",
"FR_NOT_ENABLED",
"FR_NO_FILESYSTEM",
"FR_MKFS_ABORTED",
"FR_TIMEOUT"
};
/* display error message and stop */
void error(FRESULT res)
{
if ((res>=FR_DISK_ERR) && (res<=FR_TIMEOUT))
sprintf(lcd_buf,"%p",error_msg[res]);
lcd_clear();
lcd_puts(lcd_buf);
delay_ms(2000);
}
interrupt [TIM1_OVF] void timer_comp_isr(void)
{
/* re-initialize Timer1 */
TCNT1H=T1_INIT>>8;
TCNT1L=T1_INIT&0xFF;
/* card access low level timing function */
disk_timerproc();
}
void main(void)
{
TCCR1A=0x00;
TCCR1B=(1<<CS12)|(1<<CS10);
TCNT1H=T1_INIT>>8;
TCNT1L=T1_INIT&0xFF;
TIMSK=1<<TOIE1;
delay_ms(1000);
#asm("sei"

// Alphanumeric LCD initialization
// RS - PORTA Bit 0
// RD - PORTA Bit 6
// EN - PORTA Bit 1
// D4 - PORTA Bit 2
// D5 - PORTA Bit 3
// D6 - PORTA Bit 4
// D7 - PORTA Bit 5
// Characters/line: 16
lcd_init(16);
lcd_clear();
if ((res=f_mount(0,&drive))==FR_OK)
lcd_putsf("FAT mounted = OK"

else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_open(&file,path1,FA_READ))==FR_OK)
lcd_putsf("File open hamid"

else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_read(&file,buffer,14,&nbytes))==FR _OK)
{
lcd_putsf("Reading Data"

delay_ms(2000);
lcd_clear();
lcd_puts(buffer);
}
else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_close(&file))==FR_OK)
lcd_putsf("File closed"

else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_open(&file,path2,FA_WRITE))==FR_OK)
lcd_putsf("File opened test"

else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_write(&file,buffer_1,15,&nbytes))= =FR_OK)
lcd_putsf("Writing Data"

else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_close(&file))==FR_OK)
lcd_putsf("File closed"

else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_open(&file,path2,FA_READ))==FR_OK)
lcd_putsf("File opened test"

else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_read(&file,buffer,15,&nbytes))==FR _OK)
{
lcd_putsf("Reading Data"

delay_ms(2000);
lcd_clear();
lcd_puts(buffer);
}
else error(res);
delay_ms(2000);
lcd_clear();
if ((res=f_close(&file))==FR_OK)
lcd_putsf("File closed"

else error(res);
delay_ms(2000);
lcd_clear();
lcd_putsf("....End...."

while(1);
}
برنامه بالا تو پروتیوس جواب میده ولی رو مدار اون اخطار هایی که گفتم رو میگیرم
این اپدیت کتابخونه های جدید mmc تو سایت http://elm-chan.org رو کجا اضافه کنم خیلی فایل های جدید توش داره با پسوند.h . .c اینها با هم چه فرقی دارن و چطوری تو کدویژن بزارمشون
تو رو خدا هر کی بلده کمک کنه......
با تشکر از دوستان
دیدگاه