سلام یک برنامه نوشتم که دیتا های پورت سریال و روی 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); } }