Jump to content

    

paskal

Свой
  • Content Count

    350
  • Joined

  • Last visited

Community Reputation

0 Обычный

About paskal

  • Rank
    Местный
  • Birthday 12/31/1969

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. А можно подробнее как завершать поток с использованием WaitForMultipleObjects ?
  2. Ну я и посылал через SetEvent. Ничего не произошло. И я поискал информацию - выходит и не должно. Пока поток спит в WaitForSingleObject, сигнальное состояние нельзя установить. Заколдованный круг.
  3. Добрый день! Пишу программу для асинхронного приема в ком порт. Прием в целом идет успешно, но возникает глюк при смене порта. То есть при асинхронном ожидании приема, порт закрывается, открывается другой, создается новый поток. Ну в общем все действия которые были с предыдущим портом. В этот момент и возникает дефект. Эксперименты и отладка показали что проблема возникла от того что поток висит в несигнальном состоянии после вызова WaitForSingleObject. Из за этого поток не завершается, и по цепочке идут другие ошибки. Итак вопрос. Как можно принудительно завершить ожидание по WaitForSingleObject?
  4. Нашелся на сабж даташит на инглише https://github.com/Blinkinlabs/ch554_sdcc/tree/master/documentation
  5. Очень хорошо! Попробуйте, например, через бесплатный хостинг https://ru.files.fm/ Заранее спасибо :)
  6. Нет, не должны. С 7-й версии сильно поменялся синтаксис. Те исходники которые у нас есть, эта версия не компилирует.
  7. Я именно оттуда взял пятый. Шестого там нет.
  8. На работе возникла потребность поднять старый проект, который писали другие люди, давно уволившиеся. Проект 2002 года, в наличии только исходники и прошивка. Написан как удалось выяснить в IAR EW8051, версия предположительно до 7-й. Удалось найти EW8051-552B, но по дате это более старый, нужен шестой. Если у кого завалялся, поделитесь. Сойдет с любыми ограничениями, по коду по времени. Или где искать намекните.
  9. Занимаюсь моделированием устройства которое обменивается с ПК по определенному протоколу. Устройство на МК атмега128, но это в данном случае не важно. Еще есть прикладная программа для ПК которая обменивается с "железным устройством". Чтоб задействовать эту программу в симуляции, создаю виртуальную пару COM портов, у которых приемники и передатчики попарно соединены. В Протеусе вывожу uart на COMPIM, назначаю COMPIM на один виртуальный COM, а другой виртуальный COM открываю в программе. Теперь мой МК и программа виртуально соединены. Но работает это только на один раз запуска симуляции. Если остановить симуляцию и запустить снова, связи не будет. Если выйти из Протеуса и зайти снова - опять заработает на один раз. Что можно сделать?
  10. Ну попробую на 921600, если смогу хитрый кварц найти.
  11. Вообще то я все достаточно описал. Скорость я устанавливаю 3 Мбит/с (почему вы решили что 921600?). Интервал между байтами с которым я экспериментирую, 25 мкс. Все с большим запасом умещается. Тем более что я все это контролирую осциллографом. Ладно, похоже Genadi Zawidowski дело подсказал, буду в этом направлении двигаться.
  12. Семерка. А откуда для виртуального порта ограничение 128k? Ничего такого не слышал.
  13. Клон это или нет, но он работает если чуть снизить скорость. И потом, клоны делали на FT232R, а у меня FT232B на который клонов не замечено.
  14. Нужно от МК передавать большие объемы данных в ПК. Скорость - 1 байт с интервалами от 10 до 20 мкс. Направление только от устройства в ПК. Для связи настраиваю UART микроконтроллера на передачу со скоростью 3 Мбит. Далее переходник UART-USB (FT232) для ввода в компьютер, а там софт работает через виртуальный COM порт. Уже при интервале 25 мкс теряется примерно 0.1% данных. При интервале 30 мкс все стабильно. То есть компьютер не успевает обрабатывать всего 40 кБ/с! Пробовал увеличивать размер приемного буфера - не помогло. Какие будут идеи?
  15. Пытался сделать сабж, работая с командной строки: void f() { } void (*pf)() = &f; int main() { pf(); } Компилирую. Ввожу с командной строки: arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -c main.cpp - все ОК Затем линкую: arm-none-eabi-ld -Ttext=0x8000000 -Tdata=0x20000000 -o main.elf startup.o main.o - сообщает Другие программы у меня таим способом нормально компилируются. Проблема только когда вызываю функцию через указатель. Что это значит? Как этого избежать?