Перейти к содержанию
    

VaaG

Участник*
  • Постов

    13
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о VaaG

  • День рождения 02.08.1991

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Для winAVR Если без FAT, то я использовал стандартные атмеловские библиотеки: avrlib.rar Вот для установки библиотеки Работает стабильно, без проблем с SD 1ГБ Apacer 60x (объём меньше-больше не пробовал) Пишет и читает секторами по 512 б. Результат удобно смотреть в winhex. В корневой папке найдёте mmc.c тут разберёте функции. Там же найдёте mmc.h тут описано подключение к CPU. Пример основной программы в avrlib/examples/mmc. Не забудьте ввести изменения в global.h и makefile (частота и камень) Изначально отформатировал SD под FAT16 P.S. недели 2 назад попал в Вашу ситуацию, долго ковырялся, тем особо не нашёл, но в итоге всё заработало, может вам поможет, сэкономите время... Удачи
  2. нет. Меня смутило то, что после включения кнопки (держим её...) контроллер перезагружается, проходит алгоритм заново и затем только реагировал на кнопку... Спасибо, haker fox, это как раз то, что мне нужно!! Проблема наверняка заключается в синтаксесе, обязательно попробую!!!
  3. ключ на порт

    Доброго времени суток... Наткнулся на странную проблему: ... DDRD=0xff; //конфигурация выводов порта D как выходы для светодиода DDRA=0x00; //конфигурация выводов порта A как входы PORTA=0xFF; Порт настроен вроде верно. Как проверить состояние порта A0 ? PIN ? Можно небольшой пример? компилятор winAVR p.s. почти доделал проект, оступился на этой глупости! Спасибо
  4. Да... от нуля до 0x201 , будет 513...не заметил Первый байт -0 конечный 511 Неа, не сработало При попытке записать 0x34 u32 sector=300; u08 buffer[0x200]; for (q=0x0;q<=0x1FF;q++) { buffer[q]=0x34; } В итоге получилось (с 0-ого) 34 9A 4D 26 93 49 A4 D2 69 и так повторяется до 512 бит на сектор...
  5. Ещё один маленький вопрос... u32 sector=300; u08 buffer[0x200]; //буфер размера 512, в каждом байте значение 0xAA for (q=0x0;q<0x201;q++) { buffer[q]=0xAA; } Блок нормально пишется, в winHEXе 300 сектор полностью в AA u32 sector=300; u08 buffer[0x200]; //буфер размера 512, в каждом байте значение 0x1A for (q=0x0;q<0x201;q++) { buffer[q]=0x1A; } Тут проблема, сектор не полностью 0x1A Нормально пишет (AA,BB,CC,DD,EE,FF,A1,B1...) Кажется я неправильно число задаю. Никак во всём секторе не получу например (11, ...34) Как правильно пишутся эти значения hex чисел??? Спасибо!
  6. Здравствуйте. Присоединяюсь к вопросу! Тоже организовал последовательно через AVR Использовал библиотеку avrlib Пишет\читает\инициализирует без ошибок В библиотеке сектор и буфер определены так: u32 sector=300; //здесь понятно, номер сектора u08 buffer[0x200]; //размер буфера 512 б. Но что представляет из себя буфер??? строку? или что? Что такое 0x200 ??? процедуры записи\чтения соответственно mmcWrite(sector, buffer); mmcRead(sector, buffer); Спасибо!
  7. Я поборол лень и прочитал полностью. В принципе я согласен с Вами... Что понял я: 1) файлы tff.h и ff.h отвечают за настройки компилятора (его вида #define_MCU_ENDIAN 1)winAVR туда же входят настройки для включения некоторых функций, там же выбирается режим tinyFatfs и Fatfs 2)diskio.c - основной файл, в нем описаны функции инициализации, статуса диска, чтения сектора, запись сектора, и Miscellaneous Functions (что это я не понял) в diskio.c case ATA : result = ATA_disk_write(buff, sector, count); // translate the reslut code here return res; case MMC : result = MMC_disk_write(buff, sector, count); // translate the reslut code here return res; case USB : result = USB_disk_write(buff, sector, count); // translate the reslut code here return res; ---тут как я понял для каждого своё...в моём случае использую MMC, только вот интересно, а с SD проблем не будет ??? ---и соответственно я удаляю лишнее (USB и ATA) Тут всё ясно! Теперь главные два вопроса: 1) Я создаю файл проекта и включаю в него все библиотеки? или только diskio.c ??? 2)Как тогда подключать SD карту к микроконтроллеру??? так?
  8. Я посмотрел...в этой библиотеке много лишнего и не нужного мне... В efsl чётко описывалось как действует, и для чего рассчитана библиотека. Да как сказал kurtis реальный размер около 25кб. Влезет на 32 мегу. Хорошо, вариант А: ---купить 32-ую и работать с ней. Только хотелось бы быть 100% уверенным в этом варианте!! вариант В: по FatFS я не уверен, чёткого описания не вижу => вопросов будет много...
  9. Вот я тоже не знаю как... Неужели нет версий Efsl другой? Или другую файловую систему использовать? поиск особо чего не дал...
  10. Конечно осознавал! Я нашёл все ошибки и генерировал hex!!!! Спасибо большое Petka и Вам Сергей! Но тут оказалось, что размер hex-68кб!!!! именно для 128 меги Народ, подскажите, а можно как-либо преобразовать для Atmega16 ??? Просто 128-ая у меня для других более сложных схем, она там больше нужна... Эта библиотека просто напросто огромная... Есть вообще проверенный спрособ записи и чтения SD для atmega16 ??? Пробовал сайт капитана Не инициализирует SD...
  11. Создал, директорию, поместил туда libefsl.a и avrtest.c (сама программа) Через командную стороку зашёл в эту директорию и запустил команду компиляции avr-gcc -Ic:\efsl\inc -Ic:\efsl\conf -ffreestanding -mmcu=atmega128 -Os -o avrtest.o avrtest.c -L.\ -lefsl В итоге ошибка... Вот содержимое avrtest.c \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ #include <efs.h> void hang(void); void main(void) { EmbeddedFileSystem efs; EmbeddedFile file_r, file_w; unsigned short i,e; char buf[512]; debug_init(); DBG((TXT("Hello :-)"))); if(efs_init(&efs,0)!=0){ hang(); } if(file_fopen(&file_r,&efs.myFs,"orig.txt",'r')!=0){ hang(); } if(file_fopen(&file_w,&efs.myFs,"copy.txt",'w')!=0){ hang(); } while(e=file_read(&file_r,512,buf)){ file_write(&file_w,e,buf); } file_fclose(&file_r); file_fclose(&file_w); fs_umount(&efs.myFs); hang(); } void hang(void) { while((1)) _NOP(); } \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Как я понял, компилятор не видит какие-то дополнительные библиотеки, ресурсы... efs.h ??? В чем я ошибся?
  12. Всем Доброго Времени суток!!! Пытаюсь подключить SD карту canon 32мб к ATmega16 ЦЕЛЬ: Инициализация SD, запись, чтение на МК Решил рациональнее действовать и использовать "проверенные" источники В коде используется библиотека EFSL Алгоритм запуска тест-программы: (библиотеку я скомпилировал!!!) 1. Make sure that your directory contains both the example from above called avrtest.c and the library libefsl.a . 2. Compile the program: • On Linux (with avr-gcc): avr-gcc -I/home/user/efsl/inc/ -I/home/user/efsl/conf -ffreestanding -mmcu=atmega128 -Os -o avrtest.o avrtest.c -L./ -lefsl • On Windows (with WinAVR): avr-gcc -Ic:\efsl\inc -Ic:\efsl\conf - ffreestanding -mmcu=atmega128 -Os -o avrtest.o avrtest.c -L.\ -lefsl 3. Generate a hexfile (avr-objcopy -j .text -j .data -O ihex avrtest.o avrtest.hex) (Проблема всплыла здесь...не могу понять что делать с подчёркнутой директивой) Далее всё просто и понятно! 4. Connect an SD-card to your Atmega128 with a file called orig.txt on it. 5. Flash the hex file into your μC. • On Linux: avrdude -P /dev/ttyUSB0 -c stk500 -p m128 -Uflash:w:avrtest.hex • On Windows: use Atmel AVR-Studio 6. Reset your μC and wait some time (depending on how big the file orig.txt is). 7. Disconnect the SD-card, so you can put it in your card reader and find out if the file orig.txt is copied to copy.txt . Помогите разобраться с созданием (hex) по этой директиве (выше)... Если эта тест-программа заработает, то дальше точно сам разберусь!!!! С Уважением
×
×
  • Создать...