Работа с SD картой безпамятсва
- Сообщения: 244
- Зарегистрирован: Вс апр 17, 2011 21:38:10
ребята коты, что означает если карта после инициализации по SPI вернула 0x03 и где бы можно глянуть таблицу ответов карты?
- Реклама
- Сообщения: 244
- Зарегистрирован: Вс апр 17, 2011 21:38:10
нашел кое где что 0х01 это состояние покоя (idle state), а 0х02 -erase reset - карта рабочая 2gb team inc. - взял другую - transcend она ответила только 0х01
Я запрашиваю у карты программный сброс и 0х03 соответствует прогр сбросу и сост покоя, а другая же карта (transcend) не подчиняется и отвечает что она в состоянии покоя, но не сбрасывается - может ли такое быть что у разных производителей отличается режим "инициализации" и допустим для transcend-овской карты команда программный сброс игнорируется на ответ - но при этом она все равно инициализирует её .. или нечто подобное
Я запрашиваю у карты программный сброс и 0х03 соответствует прогр сбросу и сост покоя, а другая же карта (transcend) не подчиняется и отвечает что она в состоянии покоя, но не сбрасывается - может ли такое быть что у разных производителей отличается режим "инициализации" и допустим для transcend-овской карты команда программный сброс игнорируется на ответ - но при этом она все равно инициализирует её .. или нечто подобное
- Сообщения: 1278
- Зарегистрирован: Пн июн 18, 2007 21:51:20
на форуме это уже обсуждали, поищите по моему логину
и вообще, совет на будущее: ВСЁ НАЧИНАЙТЕ С ЧТЕНИЯ ДАТАШИТА
и вообще, совет на будущее: ВСЁ НАЧИНАЙТЕ С ЧТЕНИЯ ДАТАШИТА
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
Можете ктонибудь скинуть пример работы с FATfs,просто инициализация,чтение разобрался,а вот чтото с FATfs немогу,прям самое простое:
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <string.h>
#include "uart.h"
#include "xitoa.h"
#include "ff.h"
#include "diskio.h"
#include "rtc.h"
#include "sound.h"
int main (void)
{
настройка FATfs
инициализация карты
чтение файла
}
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <string.h>
#include "uart.h"
#include "xitoa.h"
#include "ff.h"
#include "diskio.h"
#include "rtc.h"
#include "sound.h"
int main (void)
{
настройка FATfs
инициализация карты
чтение файла
}
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
Кто работал с FATfs подскажите,почему выдает ошибку?и правильно я читаю файл?
#include <mega48.h>
#include <delay.h>
#include <string.h>
#include <io.h>
#include "pff.h"
#include "diskio.h"
#include "integer.h"
#define SD_DI 3
#define SD_DO 4
#define SD_CLK 5
#define SD_CS 2
BYTE Buff[128];
void main() {
//Фигарим переменные для ФАТ
BYTE res;
FATFS *fs;
DDRB=0b11101111;
// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
//настройка SPI
SPCR=0b01010011;
SPSR=1;
disk_initialize(); // Init drive инициализируем ДИСК
printf("mounting FAT ");
res=pf_mount(&fs); //Монтируем FAT
if (res==0x00) { //Если FAT успешно смонтирован
printf("OK\r\n");
res=f_open(&fil_obj, "lol.txt",FA_READ); //Open newfile for reading читаем файл lol.txt
if (res==0x00) { printf("OK\r\n"};
printf("XREN!!");
res=f_read(&fil_obj,Buff,128,128) ;
}
}
Спойлер
#include <stdio.h>#include <mega48.h>
#include <delay.h>
#include <string.h>
#include <io.h>
#include "pff.h"
#include "diskio.h"
#include "integer.h"
#define SD_DI 3
#define SD_DO 4
#define SD_CLK 5
#define SD_CS 2
BYTE Buff[128];
void main() {
//Фигарим переменные для ФАТ
BYTE res;
FATFS *fs;
DDRB=0b11101111;
// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
//настройка SPI
SPCR=0b01010011;
SPSR=1;
disk_initialize(); // Init drive инициализируем ДИСК
printf("mounting FAT ");
res=pf_mount(&fs); //Монтируем FAT
if (res==0x00) { //Если FAT успешно смонтирован
printf("OK\r\n");
res=f_open(&fil_obj, "lol.txt",FA_READ); //Open newfile for reading читаем файл lol.txt
if (res==0x00) { printf("OK\r\n"};
printf("XREN!!");
res=f_read(&fil_obj,Buff,128,128) ;
}
}
- Вложения
-
- Безымянный.GIF
- (53.89 КБ) 513 скачиваний
- Реклама
- Сообщения: 547
- Зарегистрирован: Вт фев 09, 2010 17:52:26
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
да ППЦ как так-то, тоесть воще ППЦ, че на КОДЕВИСИОН вообще нечего нет,а че они нсовместимы? я блин месяц настраивался на FATfs а тут на тебе
Как лопатой по яiцам 
Так то в CVAVR можно многое запихать из студии, главное с умом.
В данном случае видно, что у вас не объявлены функции f_open,f_read из библиотеки fatfs.Нужно подключить объявление к проекту.
В данном случае видно, что у вас не объявлены функции f_open,f_read из библиотеки fatfs.Нужно подключить объявление к проекту.
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
По первой же ссылке поиска находится сайт ELM-Chan открываем главную страницу, находим описаниe модуля Fatfs
там же ссылка на архив проекта AVR и других.
Описание функций нашел в файле ff.c его нужно подключить к проекту через меню проекта нужно еще файл ff.h подключить.
там же ссылка на архив проекта AVR и других.
Описание функций нашел в файле ff.c его нужно подключить к проекту через меню проекта нужно еще файл ff.h подключить.
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
Извеняюсь,я уже решил эту проблему,проблема в другом: пишет ошибку
Я даже вставлял даже файл из рабочего проекта, всеравно ошибка,возможно из-за того что это КОДЕНВИСИОН?И вроде кгдето читал что есть встроинная библиотека в коде,но непомню где.
#include <mega48.h>
#include <delay.h>
#include <string.h>
#include <io.h>
#include "integer.h"
#include "diskio.h"
#include "ff.h"
#define SD_DI 3
#define SD_DO 4
#define SD_CLK 5
#define SD_CS 2
BYTE Buff[128];
void main() {
FRESULT f_err_code;
FATFS FATFS_Obj;
FIL fil_obj;
DDRB=0b11101111;
// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
//????????? SPI
SPCR=0b01010011;
SPSR=1;
disk_initialize(0); // Init drive
printf("mounting FAT ");
f_err_code=f_mount(0,&FATFS_Obj); //
if (f_err_code==0x00) { //
printf("OK\r\n");
f_err_code=f_open(&fil_obj,"lol.txt",FA_READ); //Open newfile for reading
if (f_err_code==0x00) { printf("OK\r\n"};
printf("XREN!!");
f_err_code=f_read(&fil_obj,Buff,128,128) ;
}
}
Я даже вставлял даже файл из рабочего проекта, всеравно ошибка,возможно из-за того что это КОДЕНВИСИОН?И вроде кгдето читал что есть встроинная библиотека в коде,но непомню где.
Спойлер
#include <stdio.h>#include <mega48.h>
#include <delay.h>
#include <string.h>
#include <io.h>
#include "integer.h"
#include "diskio.h"
#include "ff.h"
#define SD_DI 3
#define SD_DO 4
#define SD_CLK 5
#define SD_CS 2
BYTE Buff[128];
void main() {
FRESULT f_err_code;
FATFS FATFS_Obj;
FIL fil_obj;
DDRB=0b11101111;
// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
//????????? SPI
SPCR=0b01010011;
SPSR=1;
disk_initialize(0); // Init drive
printf("mounting FAT ");
f_err_code=f_mount(0,&FATFS_Obj); //
if (f_err_code==0x00) { //
printf("OK\r\n");
f_err_code=f_open(&fil_obj,"lol.txt",FA_READ); //Open newfile for reading
if (f_err_code==0x00) { printf("OK\r\n"};
printf("XREN!!");
f_err_code=f_read(&fil_obj,Buff,128,128) ;
}
}
- Вложения
-
- Безымянный.GIF
- (58.79 КБ) 462 скачивания
Так пробовали?
Либо так
PS Может проще в студии все сделать?Пример то для нее и много #IF #ELSE под нее в библиотеке заточено.
Код: Выделить всё
f_err_code=f_open(&fil_obj,(unsigned char*)"lol.txt",FA_READ); //Open newfile for reading
Код: Выделить всё
unsigned char text[]="lol.txt";
f_err_code=f_open(&fil_obj,text,FA_READ); //Open newfile for reading
Там же видно что синтаксическая ошибка. Скобочку пропустили. И уберите "flash" из объявления переменной.спящий писал(а):пишет ошибку
Нельзя всё знать, достаточно понимать.
Так там же вторым параметром строковая константа,а не переменная.
В функцию получается предается указатель на строку с нуль-терминатором.
Если эта строка во флешь, то так и будет считать, что указатель на флешь.Или не так?
В функцию получается предается указатель на строку с нуль-терминатором.
Если эта строка во флешь, то так и будет считать, что указатель на флешь.Или не так?


