Страница 1 из 1

Проблема с FatFS в CodeVision AVR

Добавлено: Чт июл 21, 2022 14:07:07
dk_spb
когда-то давно я написал программку для 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

Куда копать?