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

ArcherVZ

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

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

  • Посещение

Весь контент ArcherVZ


  1. Уважаемые коллеги! Подключил к своему проекту библиотеку FatFS, написал процедуры инициализации, чтения и записи. Все работает. Карта инициализируется, данные записываются и читаются. Но при попытке прочитать существующий файл с карты памяти типа SD Объемом 2 Гб вызывает ошибку (код возврата - FR_NO_FILESYSTEM). При этом такая ситуация возникает со всеми картами памяти данного объема. Карты типа SDHC Объемом 4 и 8Гб работают нормально. Быть может, кто-то встречался с такой проблемой? Заранее благодарен за любые идеи и подсказки!
  2. Спасибо вам! Я внес исправления, и все стало как надо!
  3. Добрый день, коллеги! Работаю в среде IAR for ARM 7.5 - программа под микроконтроллер STM32F103 На этот раз я столкнулся с такой проблемой: есть описание некоторой структуры typedef __packed struct { unsigned int Type:4; // код типа операции unsigned int Pause:1; // разрешение паузы до выполнения шага unsigned int DrainGate1:1; // разрешение клапана 1 unsigned int DrainGate2:1; // разрешение клапана 2 unsigned int ReservedBits:9; // зарезервированные биты unsigned int DrumSpeed; // скорость вращения unsigned char Time; // время вращения unsigned char Reserved[11]; // зарезервированные байты } WPC_SPIN_t; я ожидаю получить размер структуры 16 байт и следующее размещение данных: xx xx sl sh tt xx xx xx xx xx xx xx xx xx xx xx где xx - просто байт sl - младший байт скорости sh - старший байт скорости tt - время вращения На деле же я получаю размер структуры 18 байт и размещение байт, как показано ниже: xx xx sl sh 00 xx tt xx xx xx xx xx xx xx xx xx т.е. байт с временем перемещается на две позиции... а вместо него пишутся нули склыдывается ощущение, что параметр DrumSpeed стал 4-байтовым, потому что при его изменении в последующие два байта пишутся нули. Как мне заставить компилятор правильно размещать данные?
  4. Спасибо большое вам за комментарии и разъяснения! Нет, пожалуй, первая конструкция мне понятнее :)
  5. Winavr такое проглатывает..... другой разработчик давно написал этот код. Работало и работало. Пока не появилась необходимость что-то поменять. Спасибо огромное! Заработало! Только... теперь я не понимаю, как эта конструкция построена. Так сложно на первый взгляд. Спасибо еще раз! Почему-то без приведения типа компилятор тоже выдает ошибку... меня это тоже смущает.
  6. Да нет, проверил, в настройках стоит С. C dialect C99
  7. Добрый день, коллеги! Переношу проект, написанный в AVR Studio 4 под WinAvr, в среду IAR Столкнулся с тем, что IAR ругается на такую конструкцию (ошибка Pe513): ssp.spiHwInit=(void *)atmega_spi_init; где объявления даны следующим образом: euint8 atmega_spi_init(atmegaSpiInterface *iface); и struct SdSpiProtocol { void *spiHwInterface; euint8 (*spiHwInit)(void* spiHwInterface); euint8 (*spiSendByte)(void* spiHwInterface,euint8 data); }; typedef struct SdSpiProtocol SdSpiProtocol; Подскажите, пожалуйста, как ее правильно описать в IAR?
  8. STemWin

    Добрый день, коллеги! Некоторое время назад подключил к проекту библиотеку STemWin. И потихоньку стал рисовать экраны графического меню. На текущий момент нарисовано пять экранов. И я столкнулся с такой проблемой. При переключении на любой экран отрисовка изображения происходит достаточно быстро, но затем возникает какая-то пауза... нажимаешь на кнопку - и ждешь... через 5-7 секунд происходит реакция... После этого экран начинает работать с нормальной скоростью... кнопки нажимаются, списки прокручиваются и т.д. В чем может быть причина? На что мне обратить внимание? ОЗУ выделено библиотеке 20кБ. Тактовая частота 36МГц. Микроконтроллер STM32F101RC. По всей видимости, если я дальше буду добавлять экраны - вот эта пауза будет только возрастать. Заранее благодарен, если кто-то сталкивался с подобным и сможет помочь. С уважением.
  9. Большое спасибо за совет! Обращу на это внимание! Спасибо! Заработало!
  10. STM32CUBE и плата STM32VLDISCOVERY

    Добрый вечер, коллеги! В попытках разобраться с библиотекой CUBE наткнулся на проблемку. Создал проект в STM32CubeMX. Выбрал тип микроконтроллера ST32F100RB, установленного на плате STM32VLDISCOVERY. Сконфигурировал выводы. Сконфигурировал тактовый генератор. Получил готовый код. Добавил простейший код моргания светодиодом с задержкой. Залил в плату. Все заработало. Но - пропала связь с программатором! Программатор ST-LINK, установленный прямо на демо-плате. С трудом получилось войти в режим программирования, нажимая кнопку ресет перед соединением. Если заливать родной пример от платки, который также взят с сайта ST - то все работает нормально. Я проверил взглядом неопытного человека код инициализации. Есть инициализация модуля тактирования и инициализация портов. Порт, на котором сидит светодиод. И порт, на котором сидит низкочастотный кварцевый резонатор. Вроде, больше ничего лишнего нет... Никто не сталкивался с такой проблемой? Т.е., еще раз - программа исполняется, светодиод моргает, а связь с программатором теряется фатально.
  11. STemWin

    Добрый день, коллеги! Обращаюсь к тем, кто имеет опыт работы с графической библиотекой STemWin. В новом проекте заложился на STM32. Опыта работы с STM32 пока никакого. Стоит задача подключить и использовать графическую библиотеку STemWin. Вопрос возник в том, как сконфигурировать ее под мой проект. Контроллер у индикатора SSD1963, шина 8-ми-битная. Индикатор просто подключен к порту А. Вы можете дать практические советы по последовательности действий? Какие функции и как написать? На первый момент я подключил библиотеку. Прописал все пути. Возникает ошибка - нет функции GUI_X_init(). И я не совсем понимаю, что должно быть в этой функции. Где она должна быть. Насколько я понимаю - нужно работать над файлами LCDConf и GUIConf. Может, есть шаблоны с примером кода? Нужен код работы с портами. С уважением.
  12. Добрый день, коллеги! Прошу помощи. На индикаторе TFT установлен разъем. Прилагаю его фото. Шаг контактов 2,5мм. Остальные размеры на картинке. Может, кто-нибудь знает, что это за разъем? С уважением Похоже, я сам докопался, что это за разъем. Molex Spox 2.5mm
  13. Режим MON08

    Обычно так происходит, если не выполняется какое-н. из условий входа в режим MON08. В даташите на микроконтроллер есть соответствующий раздел, в нем приведена табличка с указанием, на каком выводе какой сигнал должен присутствовать. Программатор от P&E во время соединения отображает различные фазы процесса - можно начать разбираться исходя из этой информации. Я могу больше подсказать, если увижу схему и тип микроконтроллера.
  14. Добрый день всем! Вкратце: монтажницы вручную дозатором наносят паяльную пасту на контактные площадки. Также вручную устанавливают компоненты на плату. Все это отправляется в печь. В результате - частенько под микросхемами появляются шарики припоя. Не всегда они приводят к неработоспособности устройства - как повезет. Но все же, это потенциальный дефект. Ниже прилагаю фотографию, как это выглядит, если отпаять микросхему с платы: Изображение Вопрос в том - появление этих шариков зависит только лишь от небрежности монтажниц? Или есть другие причины? И как можно избежать этого в дальнейшем? Заранее благодарен за ответы! Я имею в виду - организационные меры, а не приобретение автоматического оборудования :)
  15. Спасибо. Вчера так и сделал - отдельный проект для данных EEPROM. И общее описание структуры данных для двух проектов.
  16. Добрый день, коллеги! Прошу помощи в очередном вопросе с размещением данных в EEPROM. Речь идет о внешней памяти EEPROM по отношению к микроконтроллеру. 1) Я описываю в программе структуру данных. Допустим, я ее размещаю в сегменте __eeprom. В этом случае я получаю от компилятора сообщение о том, что я вышел за допустимый объем объявленного сегмента (объем внешней EEPROM больше, чем внутренней EEPROM микроконтроллера). Как поступают в подобных случаях: готовят файл прошивки для EEPROM как-то по-другому? В сторонней программе? Объявляют дополнительный сегмент с нужным размером? 2) Если я размещаю данные во внутренней EEPROM микроконтроллера, то при обращении программы к структуре данных компилятор автоматически вставляет процедуры доступа к внутренней EEPROM. Если же я данные размещаю во внешней памяти - то как мне подменить процедуры доступа своими?
  17. Простите, забыл указать: да, IAR EWAVR 4.3. Т.е., речь идет о том, чтобы создать свой файл конфигурации линкера - *.XCL?
  18. Уважаемые коллеги! Столкнулся сегодня с одним явлением... прошу помощи. В опциях IAR стоит авторасчет контрольной суммы CRC (Linker/Processing/Generate checksum). В программе также производится расчет контрольной суммы (по диапазону адресов памяти FLASH). Все работает. Сегодня появилась необходимость хранить данные в памяти EEPROM. Создал структуру, разместил ее в EEPROM, сконфигурировал линкер для создания дополнительного файла прошивки для EEPROM. Тоже все замечательно работает. Файл создается, внутри лежит то, что должно лежать. Но при запуске программы перестала проходить проверка контрольной суммы. Такое ощущение, что линкер в контрольную сумму включает диапазон адресов памяти EEPROM. Как можно обойти этот нюанс? Если это действительно так....
  19. Такие и я видел. И даже имею. А вот чтобы в конструктиве с креплением на панель...
  20. Существуют ли в природе отдельные кард-ридеры для SD-card? Не совмещенные с прочими типами карт. Требуется для встраивания в лицевую панель оборудования. Или хотя бы фальш-панели со слотом?
  21. У каждого производителя печатных плат есть свои технологические требования, которым должен соответствовать рисунок вашей печатной платы. Как то - минимальный зазор между проводниками, минимальная толщина проводника и.т.п. Все что угодно не сделают. Не в деньгах дело. Или в деньгах, но к другому производителю. При заказе Вы должны указать те требования, которые Вам важны. Например, в вашем файле указаны конечные диаметры отверстий или диаметры сверел (это важно при производстве двухсторонних ПП). Нужна маска или нет. Закрывать маской переходные отверстия или нет. Допуски на размеры ПП. Чем покрывать контактные площадки (иммерсионное олово, горячее лужение, никель, и т.д.) Ну, и т.д. Т.е. если Вы хотите получить что-то конкретное, пишите все, не отдавайте это на откуп производителю. А по поводу маски - этот зазор выставляет производитель. Если вы не оговорите иного, наверное.Чем меньше этот зазор, тем сложнее совместить маску с изображением на печатной плате. Появляется риск наползания маски на контактные площадки. Если зазор слишком большой, будут открыты соседние проводники.
  22. Совсем недавно проводил аналогичный информационный поиск. Мы остановились на Виксинте. В интернете можно найти много информации. Доступны несколько марок Виксинта. С разными свойствами, на любой вкус и цвет, можно сказать :) Утверждение, что виксинт долго сохнет немного не соответствует действительности. Это зависит от пропорции, в которой виксинт смешивается с отвердителем. И от температуры окружающй среды. Может и за 10 минут застынуть. Но тут надо учитывать, что чем выше скорость застывания, тем меньше шансов у пузырьков воздуха выйти наружу. А пузырьки будут обязательно. Есть способ избавления от пузырьков воздуха вакуумированием. Попробуйте. Где купить - тоже можно найти в интернете - с привязкой к месту Вашего проживания. По-крайней мере, у нас в Екатеринбурге это заняло 10 минут. Один звонок. И полуторалитровая бутыль с виксинтом на следующий день на столе.
×
×
  • Создать...