AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
21.07.2022, 14:54
|
|
Прохожий
Регистрация: 22.01.2010
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Проблема с FatFS в CodeVision AVR
когда-то давно я написал программку для 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
Куда копать?
|
|
|
|
21.07.2022, 16:07
|
|
Временная регистрация
Регистрация: 10.11.2016
Сообщений: 53
Сказал спасибо: 6
Сказали Спасибо 16 раз(а) в 13 сообщении(ях)
|
Re: Проблема с FatFS в CodeVision AVR
Формат команды f _mount вроде другой: f_mount(&FATFS_Obj, "0", 1);
FRESULT f_mount (
FATFS* fs, /* [IN] Filesystem object */
const TCHAR* path, /* [IN] Logical drive number */
BYTE opt /* [IN] Initialization option */
);
Initialization option обычно устанавливаю в 1. Вариант монтажа. 0: Не монтирует сейчас (для монтирования при первом доступе к тому), 1: Принудительно смонтирует том, чтобы проверить, готов ли он к работе.
Последний раз редактировалось sanya; 21.07.2022 в 16:15.
|
|
|
|
21.07.2022, 16:21
|
|
Прохожий
Регистрация: 22.01.2010
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проблема с FatFS в CodeVision AVR
Сообщение от sanya
|
Формат команды f _mount
|
Нет, в примерах в комплекте с CV он именно такой.
Тут же вопрос не вообще в библиотеке FatFS, а именно в том её варианта что идет к CV.
Тем более при компиляции ругани нет и возвращает оно OK
|
|
|
|
21.07.2022, 18:37
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,258
Сказал спасибо: 11,170
Сказали Спасибо 3,859 раз(а) в 2,929 сообщении(ях)
|
Re: Проблема с FatFS в CodeVision AVR
dk_spb, а проверить работу с задержками до и после disk_initialize ?
Аналогично с задержкой после f_mount…
Надо читать в документации на конкретную реализацию, но там ЕМНИП были синхронные и асинхронные реализации…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
21.07.2022, 20:17
|
|
Прохожий
Регистрация: 22.01.2010
Сообщений: 9
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проблема с FatFS в CodeVision AVR
Всё, я разобрался, спасибо.
Проблема в высокой тактовой, а FatFS без доработки "не есть" выше 20Мгц
А CV и доработать нельзя вроде как. Перешел на WinAVR
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:26.
|
|