سلام یک برنامه نوشتم که دیتا های پورت سریال و روی mmc ذخیره کنه اما متاسفانه داده ها ذخیره نمیشن کسی میتونه ایرادشو بگه؟؟؟؟!!!
کد:
#include <mega32a.h>
#define xtal 1000000
#include <alcd.h>
#include <sdcard.h>
#include <ff.h>
#include <delay.h>
#include <stdio.h>
FRESULT res;
char path[]="0:/sepehr.txt";
char text[]="I like CodeVisionAVR!";
char textt[];
char rx_buffer[24];
unsigned char rx_index;
unsigned int nbytes;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xB2;
disk_timerproc();
}
interrupt [USART_RXC] void usart_rx_isr(void)
{
char data;
data=UDR;
rx_buffer[rx_index]=data;
if(++rx_index==24) rx_index=0;
}
void main(void)
{
FATFS drive;
FIL file;
int i;
//unsigned char status;
char buffer[50];
// Timer Period: 9.984 ms
TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (1<<CS02) | (0<<CS01) | (1<<CS00);
TCNT0=0xb2;
OCR0=0x00;
TIMSK=0x01;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 2400
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0xCF;
#asm("sei")
while (1)
{
lcd_init(20);
lcd_clear();
lcd_puts(rx_buffer);
delay_ms(100);
lcd_putsf("Init fat");
while(f_mount(0,&drive)!=FR_OK) delay_ms(100);
lcd_putsf(" OK");
delay_ms(2000);
lcd_clear();
lcd_putsf("open file");
delay_ms(1000);
lcd_clear();
if ((res=f_open(&file,"0:/sepehr2.txt",FA_CREATE_ALWAYS | FA_WRITE))==FR_OK)
lcd_putsf("File created OK");
else
lcd_putsf("File created ERROR");
delay_ms(1000);
lcd_clear();
if ((res=f_write(&file,rx_buffer,sizeof(rx_buffer)-1,&nbytes))==FR_OK)
lcd_putsf(" bytes written ok ");
else
lcd_putsf(" ERROR");
delay_ms(1000);
lcd_clear();
f_close(&file);
while ((f_open(&file,"sepehr2.txt", FA_READ ))!=FR_OK) ;
lcd_putsf(" OK");
delay_ms(2000);
lcd_clear();
lcd_putsf("read file");
while (f_read(&file, buffer, 20, &i)!=FR_OK) ;
lcd_putsf(" OK");
delay_ms(100);
lcd_clear();
lcd_puts(buffer);
f_close(&file);
}
}

