ATmega8 + SD с поддержкой FAT
|
|
HiSER | Дата: Суббота, 14.08.2010, 16:29 | Сообщение # 16 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| если другой код ля sd-шки дам сам разберешься?
|
|
| |
FoX | Дата: Четверг, 03.02.2011, 23:59 | Сообщение # 17 |
 Рядовой
Группа: Пользователи
Сообщений: 9
Статус: Offline
| Здраствуйте. Снова дошли руки до СД карточки хочу в кучу собрать всё что сделал, на макетке с кучей проводов всё работает :). Вопрос №1: если питание МК и СД карты одинаковы (3,3В) то я так понимаю что разделительные резисторы в цепи SPI не нужны? Вопрос №2: Вы работали с ATmega8a, при этом не наблюдались глюки с SPI на пониженых напряжениях? Добавлено (03.02.2011, 23:59) --------------------------------------------- http://www.dharmanitech.com/2009/01/sd-card-interfacing-with-atmega8-fat32.html FAT32 и ATmega8
Сообщение отредактировал FoX - Среда, 02.02.2011, 22:10 |
|
| |
Dominik21 | Дата: Пятница, 14.10.2011, 18:20 | Сообщение # 18 |
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: Offline
| Удаляем flash из библиотек... byte file_open(byte *name);
объявляем массив char next[]="1 ";
вставляем переменную file_open("%s", next[0]);
Сообщение отредактировал Dominik21 - Пятница, 14.10.2011, 18:21 |
|
| |
HiSER | Дата: Пятница, 14.10.2011, 18:26 | Сообщение # 19 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| "%s"- это что такое?
flash char next[]="1 "; //имя должно быть в формате 8:3 в fat.h все написано
file_open(&next);
в fat.c и fat.h тогда ни чего не надо изменять.
|
|
| |
Dominik21 | Дата: Пятница, 14.10.2011, 18:36 | Сообщение # 20 |
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: Offline
| Насчет имени то ясно все. Не в этом проблема. Ему не нравится переменная. %s форматирование, попытка вспомнить обычный си и работу с библиотекой ввода/вывода.
Этот метод опять же не пашет. Ругается, мол: Error: D:\SHUM\ïðîåêò Globus\Globus.c(57): function argument #1 of type 'unsigned char [12] *' is incompatible with required parameter of type 'byte *'
Даже когда объявляешь переменную как флеш чар происходит та же ерунда. З.Ы. переменная next имеет нужный формат.
|
|
| |
HiSER | Дата: Пятница, 14.10.2011, 19:01 | Сообщение # 21 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| причем тут обычный си? в проекте файл _type.h присутствует?
|
|
| |
Dominik21 | Дата: Пятница, 14.10.2011, 20:59 | Сообщение # 22 |
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: Offline
| Нет... Можно сразу список из минимума необходимых библиотек, которые должны быть подключены для работы с картой и файлами, включая их имена
|
|
| |
HiSER | Дата: Пятница, 14.10.2011, 21:44 | Сообщение # 23 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| все кроме 1.c и 1.prj
|
|
| |
demiurg | Дата: Вторник, 01.11.2011, 02:12 | Сообщение # 24 |
Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
| HiSER Здравствуйте Не подскажете как дописать к вашей либе функцию записи в фаил. Чото я даже не знаю как к этому подступить. Не охото просто прикручивать к проекту какуюто тяжёлую либу(типа elm) , а ваша удобная, места мало занимает и легко написана.
|
|
| |
HiSER | Дата: Среда, 02.11.2011, 19:39 | Сообщение # 25 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| С файлами проекта была документация FAT, там описан принцип записи.
|
|
| |
Serg_Greencity | Дата: Четверг, 10.11.2011, 15:48 | Сообщение # 26 |
 Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
| Проект супер ! Спасибо Автору !
Я попробовал подключить SD к mega128 с кварцем 16мГц. В proteuse все работает а в реальсти вешается на инициализации карточки. Может настройка SPI нужна уже другая ?Добавлено (08.11.2011, 20:32) --------------------------------------------- Спасибо ! Сам разобрался Проблема была в неправильно промаркированных выходах на отладочной плате, поменял местами Di и DO и все полетело  Добавлено (09.11.2011, 21:09) --------------------------------------------- Сегодня потестировал с флешкой 2гб. НЕ РАБОТАЕТ ! 4 штуки перепробовал.. максимум с 1гб. картой работает. Вроде Fat16 до 2 гб должен работать, в чем проблема может быть ? Добавлено (10.11.2011, 15:48) --------------------------------------------- HiSER подскажите пожалуйста, как можно читать флешку с нулевого адреса ? Я открыл образ флешки в winhex и обнаружил что файлы хранящиеся в корне флешки хранятся в одном месте.. т.е можно их считать в массив и сделать выбор файлов на меню ЖКИ.. Я хочу сделать МП3 плеер..
|
|
| |
HiSER | Дата: Пятница, 11.11.2011, 04:25 | Сообщение # 27 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| С 2Гб какая ошибка? Функцию поиска фалов не реализовывал, можешь сам написать документация на FAT в проекте есть.
|
|
| |
Dominik21 | Дата: Суббота, 26.11.2011, 10:51 | Сообщение # 28 |
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: Offline
| Доброе время суток HiSER! В протеусе проект работает, а вот на отладке нет. Зависает на инициализации FAT, флешка 2GB, я грешу на неправильный FAT16. Форматировал в Partition Magic 9. Кстати в чем правильно форматировать флешку, в винде только FAT, FAT32 и exFAT...???? Помогите пожалуйста, уже третьи сутки мучаюсь!!!!!!
|
|
| |
HiSER | Дата: Суббота, 26.11.2011, 14:13 | Сообщение # 29 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| У меня под виндой нормально форматировалась, выбери FAT, она и форматнет как FAT16. И на флешке MBR присутствует?
|
|
| |
Dominik21 | Дата: Суббота, 26.11.2011, 14:50 | Сообщение # 30 |
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: Offline
| Ммммм. Я не знаю, как быть, как узнать!? А что это?
Добавлено (26.11.2011, 14:42) --------------------------------------------- Вот решил посмотреть как проходит инициализация SD
#include <mega8.h> #include <delay.h> #include <_sd.h> #include <_fat.h>
void io_init() { byte ok; ok=sd_init(); //Инициализируем карточку switch(ok) { case SD_ERR_SUSSED:PORTD.0=1;break; //OK case SD_ERR_IDLE:PORTD.1=1;break; //ERROR - SD IDLE case SD_ERR_INIT:PORTD.2=1;break; //ERROR - SD INIT case SD_ERR_POWER:PORTD.3=1;break; //ERROR - SD POWER case SD_ERR_TIMEOUT:PORTD.4=1;break; //ERROR - SD TIMEOUT }
}
void main(void) { ACSR=0x80;
// Port D initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In // State7=0 State6=0 State5=0 State4=0 State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0xF0;
io_init();
};
результат PORTD.4=1 то есть ERROR - SD TIMEOUT Добавлено (26.11.2011, 14:45) --------------------------------------------- что это может значить?!? Добавлено (26.11.2011, 14:50) --------------------------------------------- Без карточки выкидывает ERROR - SD IDLE
|
|
| |