Jump to content

    

Donker

Участник
  • Content Count

    90
  • Joined

  • Last visited

Everything posted by Donker


  1. А как объяснить что редактор кода Кейла видит что вызов функции с ошибкой, и если я исправлю вызов или реализацию функции, то ошибка пропадает, но перейти к ней он не может?
  2. Было переполнение стэка, он был задан 1кб (размер по умолчанию), поставил 4кб, глюк исчез. Это только у меня такая проблема, всем остальным хватает 1кб для FatFs на STM32 ?! При каких обстоятельствах мне ждать от FatFs переполнения уже 4кб? Я нашёл где прячется этот самый массив на 512 байт минимум (см. win BYTE win[FF_MAX_SS];): причём структурных переменных "FATFS" может быть много, они что при прерываниях тоже в стек лезут?
  3. Давно не заходил в эту тему, спасибо всем ответившим!
  4. Почему может не работать контекстное меню (горячие клавиши тоже не работают) для перемещения по коду и файлам к реализациям функций, их объявлений п т.п. ( go to definition например) в Keil 5.26 на С/С++ ?
  5. Новый вопрос, при каком минимальном количестве оперативной памяти в микроконтроллере у вас нормально работал FatFs не урезанный (с поддержкой длинных имён и юникодом c русской кодовой страницей)?
  6. Нашёл ошибку, в функции чтения и записи секторов (spi_SD_Write_Block и spi_SD_Read_Block) они корректно работали только при чтении одного сектора, иначе адрес котцался, так правильно: но исправление на вышеописанную проблему никак не повлияло. Кстати, я беру некоторый код отсюда: https://eax.me/stm32-fatfs/ вам тут ничего не кажется подозрительным?
  7. Вот весь проект: https://yadi.sk/d/w98_y4E7kJN6Eg Уточнение, перераспределение памяти для отладки в RAM - 44кб под прошивку 20кб оставшаяся оперативная память память. Сейчас появилась такая проблема, в fileWork.cpp в функции ff_test есть строка: res = f_open(&logFile, "log.txt", FA_OPEN_APPEND | FA_WRITE); если выходить из функции до неё, то всо нормально, выполнение этой строки, в какой то момент(не пойму что я сделал), начало приводить к зависанию МК, до этого проблема была только с f_close (код ошибки 1), и ведь строки в log.txt успешно добавлялись! Карта подключена к J10 (схема в проекте), к J2 подключен экран 20x4, lines[NumLines][20] массив для хранения строк отладочного экрана строки крутятся энкодером, пробовал подавать питание на J1 убирая перемычку J4, на проблему это не повлияло.
  8. Новые вопросы: Есть некоторые успехи, в этой тестовой функции: все функции до f_close нормально работают (как минимум возвращают 0, а не код ошибки, и делают ожидаемые вещи), а вот f_close возвращает 1, почему такое может быть? Нужно ли настраивать таймер на 10ms и вызывать в нём disk_timerproc (я вообще не нашёл такой функции в FatFs)? Каким образом и где FatFs создаёт буферы для чтения и записи сектров, указатели которых передаются в функции disk_write и disk_read, если они создаются динамически, можно ли их заставить создаваться в стеке без потери функциональности библиотеки?
  9. jcxz спасибо, я что то думал что unsigned char и просто char в данном случае одно и тоже. Остальные вопросы в силе, (скоро новые возникнут).
  10. Уточнение, если поставить такую заглушку: код компилируется, т.е. компилятору не нравиться передача указателя на буфер, но почему?! BYTE это обычный unsigned char, после подключения FatFs я могу в своём коде поменять unsigned char или uint8_t на BYTE и ничего не изменится.
  11. Пытаюсь подключить FatFs (http://elm-chan.org/fsw/ff/00index_e.html) к STM32F105RBT6 + карта SDHC (поддержка старых SD не требуется), проект в Keil 5.26, отладка в оперативной памяти (из 64кб - 40кб под прошивку 24кб оставшаяся оперативная память) Создал проект с тремя основными функциями - инициализация SDHC (предполагается работа только с одной картой), чтение N секторов в буфер начиная со стартового адреса, запись N секторов из буфера начиная со стартового адреса, проверял на буферах размером до 8 секторов, всё надежно работает. Пытаюсь подключить библиотеку, нужно написать функцию disk_read: получаю ошибку: моя функция: Что не так? Второй вопрос: я саму библиотеку правильно скачал http://elm-chan.org/fsw/ff/arc/ff13c.zip ? Третий вопрос: мой проект написан на C++ а библиотека FatFs на C, как правильно, в этом случае, её подключать?
  12. А это разве сработает на подключении по 8 битной шине (на 16 битной я бы так и сделал), ведь контроллер будет всё время считывать младший байт и цвет исказится ?
  13. Там 400 заказов 200 отзывов , по поводу подмены чипа претензий нет.
  14. Как задать на ili9341 вертикальную область для заливки цветом шириной в один пиксель, что бы таким образом максимально быстро рисовать вертикальные линии? этот код рисует нормально прямоугольники высотой в 1 пиксель (горизонтальные линии) и любые другие прямоугольники шириной минимум 2 пикселя, а при попытке нарисовать вертикальную линию, рисует её горизонтально.
  15. Это будет разгон SPI интерфейса экрана в 5 раз.
  16. По моему вы не понимаете, что Serial Clock Cycle(Write) это максимальная частота передачи бита а не байта или 16 битного цвета. Т.е. если задать прямоугольник во весь экран и заливать его двумя байтами на пиксель: 480*320*2*8*0,000'000'066= 0,162'201'6 секунд на кадр по SPI 480*320*1*0,000'000'050=0,007'68 секунд на кадр по 16 битной шине (или в 21 раз быстрее (130 кадров в секунду(кажется матрица из видеопамяти обновляется медленнее)))
  17. AVI-crak спасибо, но инициализация тоже интересна, с ней обычно больше всего проблем.
  18. Zeal0t спасибо. Я хотел уточнить вопрос, насколько быстро ili9486 может заполнить экран пикселями в наиболее тяжёлом варианте алгоритма, в случайном порядке их вывода по координатам, случайного цвета, т.е. когда приходится указывать координаты каждого пикселя?
  19. AVI-crak это теоретическое предположение или он у вас и правда с такой скоростью заполнялся? Можете выложить код по передаче пикселя? У меня пиксель сейчас выводится так:
  20. Присмотрел такой экранчик: http://ali.onl/1dtP TFT 3.5" 320x480, вроде как на ili9486 Вопросы: Что означает ili9486/ili9488 в описании у продавца (это какое то мошенничество, пришлют более дешевую модель)? С за сколько времени можно попиксельно заполнить весь экран, при использовании 16 битной шины данных, на максимуме скорости интерфейса, без разгона, по датащиту. Например, для передачи произвольного пикселя TFT 320x240 на ili9341 в варианте 8 битной шины данных и двухбайтового цвета, надо отправить 13 байт на экранчик(!), (на STM32F105RBT6 удалось выжать около 0,4 сек на заполнение экрана, пичалька), тут как этим? Если вы реально работали с таким экранчиком, можете выложить код инициализации и самой работы, а то по датащиту я не разберусь? Какие ещё есть интересные варианты покупки этого экранчика?
  21. Спасибо Integro! Только сейчас смог проверить, если прописать в свойствах проекта HSE_VALUE=8000000 (частота кварца), всё начинает работать.