Compact Flash +AVR

hej czy ktos z Was bawil sie w podlaczanei CF do AVR? dla uproszczenia sobie robotki powielilem rozwiazanie z Yampp7 CF pracuje w IO mode, jedyna zmiana to uzycie ATMEGA128 zamaist ATMEGA161. przekompilowalem bibliteki w asm na atmega128 (chociaz nie powinno byc roznicy) soft z Yamp'a uproscilem ,wywalajac wszystko nie zwiazane z karta, kompiluje sie bez bledow, zachowalem oryginalny makefile, dodajac do neigo tylko obsluge AVRDUDE karta przechodzi inicjalizacje, funkcja CARD_Read(0) zwraca 0, jednakze bufor jest zapelniany wartosciami 0x8F. zwarc w ukladzie nie ma, na wszystkich sygnalach cos sie dzieje (oprocz -CE1) Nie mam czasu ani ochoty wnikac dokladnie w specyfikacje CF potrzebuje na szybko skopiowac pliczek 128MB z karty CF do pamieci SDRAM, w ten sposob tworzac zrodlo danych do testowania mojego algorytmu w FPGA. Prostsze to niz za kazdym razem slac ten pliczek przez UART do ukladu:-) do tego ustrojstwo ma byc przenosne.. Mam nadzieje ze ktos przerabial ten problem i mi pomoze. Pozdr Greg

oto listing

void main(void) { MCUCR = 0xC0; // enable external SRAM 1 waitstate XMCRA = 0; XMCRB = 0; USART1_Init( 12 ); SectorBuffer = (u08 *) card_sbuf; // 512 bytes

ATA_SetDrive(0); _delay_ms(10); // Init and wait for CARD ready WriteBYTE(ATA_SectorCount, SLEEP_TIME); // CF standby time * 5 milisecond (0=disable) WriteBYTE(ATAPI_Cmd, 0xE3); // set CF standby timer and execute IDLE ATA_WaitBusy();

// Boot Sector struct YADL_ROOT_SECTOR *pRoot; // Boot Sector struct pRoot = (YADL_ROOT_SECTOR *) SectorBuffer; // Allocate room from the temp buffer

while (CARD_Read(0)) // read root sector CARD_SW_Reset2();

u08 temp,data; u16 index;

for(index =0; index <512; index++) { //data =pRoot->buffer_ata[index]; data =card_sbuf[index]; temp = (data >>4) & 0x0f; if (temp > 9 ) temp += 0x7; USART1_Transmit(0x30+temp); temp = data & 0x0f; if (temp > 9 ) temp += 0x7; USART1_Transmit(0x30+temp); USART1_Transmit(' '); }

for(;;) { }

}
Reply to
Greg(G.Kasprowicz
Loading thread data ...

nie wiem jak szybko chcesz to kopiować ale lepsza jest pamięć SD/MMC, mniej nóżek, tańsze gniazdko, widziałem w necie gotowe funkcje do FATu , np. tu:

formatting link

Reply to
szlovak
Reply to
Greg(G.Kasprowicz

Greg(G.Kasprowicz) napisał(a):

A czy SD nie jest wymienialne z MMC? Tj., MMC stanowi podzbiór SD, AFAIK.

Reply to
Filip Ozimek

SD po spi gada tak samo jak MMC. Różnice pojawiają się dopiero w tym drugim trybie, gdzie jest używane więcej nóg. U mnie SD działa na bez problemu na bibliotece z yammpa (z jedną małą poprawką, bo w orginale jest miejsce, gdzie program może się zapętlić na amen).

pozdrawiam

majek

Reply to
Marek Wodzinski
Reply to
Greg(G.Kasprowicz
Reply to
Greg(G.Kasprowicz

sam sobie odpowiem, moze komus sie przyda odpalilem zarowno CF jak i MMC

okazalo sie ze w zrodlach ASM ata.h byl zle zdefiniowany adres rejestru #define ATAPI_RepData , powinno byc 0x18, bylo 0x10 po zmianie i przekompilowaniu bibliotek ASM uklad ruszyl. w przypadku kart MMC, po wlozeniu SD w gniazdo MMC nie dziala ona w trybie kompatybilnosci (pomijajac fakt ze ciezko wchodzi), widac potrzebne jest zlacze SD/MMC ktore widac zwiera jakis pin - nie wnikalem. po wlozeniu MMC ruszylo od razu. Pzodrawiam Greg

Reply to
Greg(G.Kasprowicz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.