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

ruhi

Members
  • Постов

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

  • Посещение

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

  1. файлы которые начинаются Makefile не надо наверно трогать, зачем вы их открываете? Они вроде как автоматически генерятся! Вот они у вас и перегенирировались, стерлись ваши изменения в них и все стало хорошо (наверно).
  2. это наверно где то в настройках проекта у вас процессор не тот выбран, для которого этот регистр не существует, ищите тип процессора в настройках проэкта (среды разработки)
  3. это должно быть перед while! А в МК вы тоже можете менять загрузчик? тогда не понятно в чем проблема, две программы должны соответствовать друг другу только одна передает данные, а вторая принимает, соответствие должно быть по анализу этих передаваемых/принимаемых данных. Передавайте длину в байтах и читайте это кол-во байтов из принятых данных не зависимо от того сколько пришло "лишних" байтов в блоке если надо передавать блоками.
  4. Тот кому не надо измерять температуру, видимо, горячий вы наш .
  5. Это в каком это МК СРС считается аппаратно интересно, хотелось бы марку увидеть! Я штук 15 знаю, и могу гарантировать что не в одном НЕТ такой аппаратной функции! (Правда я не знаю что такое DS18x20, но маркировка как то не тянет на звание МК, по моему.) И я знаю как реализовать подсчет СРС штатными средствами любого МК так чтобы оно не создавало сколько нибудь ощутимых задержек основной программе. Собственно поэтому там и нет такой специальной аппаратной функции считать СРС, потому что СРС бывают разные, и для их расчета фоном достаточно ресурсов в любом МК.
  6. можно в конец вашей программы в исходниках добавить-определить масив констант 0хFF размером 255 байт (надо смотреть на чем у вас исходники написаны, и есть ли исходники), и тогда вы сможете не добавлять байты к файлу, а наоборот округлять размер файла до значения кратного 256! потому что будет обрезаться этот дополнительный масив констант который в программе не используется (не должен использоваться)! на том же С# можно написать программу на 10 строчек которая будет дописывать файл ФФ-ами до длинны кратной 256, А программу которая загрузчик в КОМ порт вы не можете менять? Вообще бы там это делать! Можно еще передавать длину прошивки в байтах, но это опять надо загрузчик менять, но возможностей море, зависит от того что вам доступно для изменений- редактирования.
  7. дык хорошо, так по вашей логике: зачем так сложно то городить - тянуть два провода, скручивать их, можно и один как нибудь бросить и землю по месту прицепить, я вижу здесь вы не согласитесь, потому что похоже разбираетесь ! А вот зачем нужно правильно контрольную сумму считать вам видимо лень разбираться, проще охаять то во что вникать не хочется, получается. Не хорошо это, как то, с вашей стороны! Про С# вы же тоже ничего не знаете и не понимаете, и зачем то эту вашу неграмотность по теме демонстративно продвигаете.
  8. Вот интересно, как в шумных условиях помогает CAN? С помощью протокольной контрольной суммы которая считается по таблице? CAN ведь вроде не на дифференциальных линиях строится? А по вашей логике и дифференциальные линии тоже, наверно, какая то усложняющая ерунда непонятная, так ведь?
  9. так оно еще от обвязки наверно зависит. Но я давно не занимался с таймерами, вам наверно виднее.
  10. возможно это проблема с чтением из уарта, в этом коде while(!USART1->SR & USART_SR_RXNE); data35[y]=USART1->DR; Как будто у вас флаг принятого байта не сбрасывается! (он вроде как должен чтением сбрасываться, СКОРЕЕ ВСЕГО вы не тот флаг здесь проверяете!) Поэтому один и тот же байт записывается пока не придет новый байт! Это просто версия которую надо проверить.
  11. наверно дело в том что прежде чем писать во флеш вы должны стереть флеш!, флеш стирается блоками, поэтому и писать лучше (но зависит от контекста) тоже блоками. В общем перед записью во флеш надо убедиться что вы пишете в свободное место (в стертые байты, обычно это 0xFF) во флеш.
  12. SAMV71_Xplained_Ultra Самые быстрые из всех которые знаю, 300МГц, Я помню когда то Windows работал на процессорах с частотой 66МГц.
  13. я бы оставил только "с помощью аппаратного таймера." выбор режима и ног и дополнительной обвязки зависит от способа интеграции с остальной программой, с остальной схемотехникой и заданными функциями управления генерацией + разрешение по управлению. Неплохо так набегает :).
  14. да я расстроился только по поводу собственного склероза и/или невнимательности! Коментарий у меня получился корявый в своей неоднозначности :), но рассматривайте его исключительно с положительной по отношению к вам стороны! Я действительно удивлен встретить на этом форуме человека который способен самостоятельно и по делу(!) разобраться с применением указателя на функцию!
  15. и вам принципиально нужно использовать функцию sprintf() ??? Может вам простым С-кодом подготовить строку которую вы хотите вывести? Си-шные библиотеки на контроллерах это такая вещь в себе и работают они в любом случае до поры до времени и тянут за собой кучу проблем.
  16. а я уж забыл что в goto нельзя метку произвольную написать! Докопаться до указателя на функцию - это уже очень высокая компетенция, удачи!
  17. напишите: goto <начальный адрес памяти программ> Это и будет программный ресет, без ресета аппаратного. Все что нужно там должно коректно повторно инициализироваться после такого перехода, так что должно сработать с точки зрения программирования, с точки зрения управления котлами я вам ничего не могу посоветовать. <начальный адрес памяти программ> равен нулю на АВР-ах насколько я помню.
  18. Что за края, откуда у тебя эти края, зачем они тебе, почему речь идет именно о двух каналах (а не о 5-ти, об одном), как все это связано? Ты считаешь кто то в состоянии угадать-прочитать твои мысли и решить задачу которую ты не можешь сформулировать? То есть ты обращаешься к некоторым высшим существам, которые на такое способны (на чтение мыслей). Мне кажется при обращении к высшим существам надо какой то более уважительный стиль использовать, что ли, я уж не говорю об использовании разных ритуалов. Иначе как можно расчитывать на помощь? Мне, например, совершенно не понятно!
  19. Если я вам скажу что это возможно, вы мне поверите на слово? Вам все равно это придется практически проверять, если вы собираетесь это использовать. А если не собираетесь использовать то зачем спрашивать? А когда вы начнете это практически проверять, то есть попытаетесь выдать в порт последовательность байт (например чередующиеся 0x00 и 0xFF и померить частоту полученного меандра), то вы скорее всего выясните, что максималная частота обновления данных на ногах процессора это не единственный параметр ограничивающий скорость взаимодействия через порт процессора. И вопрос потеряет актуальность скорее всего!
  20. Но объяснять лучше на сотнях, как вы показали выше! Вы написали самое наглядное объяснение какое можно придумать! Людям надо объяснять на человеческих числах, для машины использовать машинные, одно другому не противоречит.
  21. так это ошибка в дробной части, а дробная часть все равно отбрасывается. Дело в том что точнее не нужно! Поэтому рассуждать о том что можно точнее (тщательнЕе- Жванецкий) смысла нет. Бояться не надо, надо избегать :)!
  22. если много точек надо считать то можно еще оптимизировать, перепишем: 37 * 100 * 50 / 150 = 1233. как 37 * (50 * 100 / 150) = 1233 вот это частное в скобках можно один раз посчитать в переменную, и потом ее использовать для всех точек. вместо 100 будет 256 намного лучше, потому как точность константы повышается. Х * (50 * 100 / 150) = 1233 или Х * (CONST) = 1233 Х1 * (CONST) = Y1
  23. Я действительно пропустил один момент, но не этот. Я не обратил внимание что переменная "а" сохраняется между вызовами функции поскольку статическая, конструкция очень не стандартная поэтому я даже не пытался ее анализировать, потому что безапеляционно решил что это ошибка, так бывает у всех - не все в состоянии это признать. С учетом этого моего упущения смысл, действительно, появляется. Похоже ваша улыбка простимулировала понимание, или более дружелюбные коментарии ... ! А вообще такие трюки нестандартные обязательно пояснять надо тщательно - вы через месяц сами замучались бы вспоминать о чем это написано, если б не это обсуждение
  24. но лучше все таки в 256 раз больше взять как написал @Yurkin2015 выше, тогда от результата надо просто последний байт отбросить, вся дробь в нем останется! Но это последнее пояснение наиболее наглядно, конечно! Да, и достаточно один раз на 100 (на 256) умножить: 37 * 100 * 50 / 150 = 1233.
  25. Я рад что вы это освоили, вам осталось только найти где у вас используется 8-ми битная переменная, а где переменная типа int. Ну и разобраться в чем между ними разница. А насчет моих замечаний вы зря так расстраиваетесь, я, действительно, пытаюсь помочь, хоть и с некоторой долей сарказма. И мне кажется мой сарказм оправдан в ответ на ваш безапеляционный тон ни к чему не привязанных, не обоснованных заявлений.
×
×
  • Создать...