когда-то давно я написал программку для atmega644. На текущей железке она работает (открывает файл с SD карты и отправляет его по хитрому интерфейсу). Но надо мне в интерфейсе кое-что поменять, а исходники утеряны. Пробую восстановить, но не получается открыть файл.
Для начала пробую простое: disk_read. 1) инициализирую SPI (SPCR=0x53; SPSR=0x00; ) 2) делаю disk_initialize(0); - получаю OK 3) disk_read(0, buf, 1UL, 1); - получаю RES_ERROR
Пробую так: 1) инициализирую SPI (SPCR=0x53; SPSR=0x00; ) 2) disk_initialize(0); 3) снова инициализирую SPI (SPCR=0x53; SPSR=0x00; ) 4) disk_read(0, buf, 1UL, 1); Так всё-работает.
Более чем странно, но дальше пробую с файлами: 1) SPI init (SPCR=0x53; SPSR=0x00; ) 2) disk_initialize(0); 3) SPI init (SPCR=0x53; SPSR=0x00; ) 4) disk_read(0, buf, 1UL, 1); 5) disk_read(0, buf, 100UL, 1); 6) disk_read(0, buf, 5UL, 1); 7) delay 10000 ms ; это добавил чтобы проверить что с прерываниями для disk_timerproc() всё хорошо 8 ) disk_read(0, buf, 20UL, 1); 9) f_mount(0,&fat) 10) disk_read(0, buf, 1UL, 1); Всё работает, получаю на всё OK
Но дальше вообще чудеса, добавляю открытие файла: 1) SPI init (SPCR=0x53; SPSR=0x00; ) 2) disk_initialize(0); 3) SPI init (SPCR=0x53; SPSR=0x00; ) 4) disk_read(0, buf, 1UL, 1); 5) disk_read(0, buf, 100UL, 1); 6) disk_read(0, buf, 5UL, 1); 7) delay 10000 ms 8 ) disk_read(0, buf, 20UL, 1); 9) f_mount(0,&fat) 10) f_open(&file,path,FA_OPEN_EXISTING | FA_READ | FA_WRITE) 11) disk_read(0, buf, 1UL, 1); И получаю FR_DISK_ERR на f_open() и даже RES_ERROR на disk_read после f_open
Куда копать?
|