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

MrYuran

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    2

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


  1. Есть экранчики с встроенным контроллером, мы к такому приделали MSP430 для пробы, ниччё, работает. Правда, медленно. Экран 320х240 где-то за полсекунды закрашивает (на глаз) Видео, конечно не посмотришь, а текст можно выводить
  2. а почему на си нельзя? В том же Кейле, к примеру? Тогда никаких геморов ни с плавающей арифметикой, ни с преобразованием типов. И флеши намного меньше уйдёт, чем на таблицы
  3. Такое описание у меня есть, действительно, довольно оригинальная интерпретация. А вот на modbus.org действительно всё предельно чётко: Больше 1.5t - таймаут фрейма. Отбрасываем. Меньше 3.5t между фреймами - ошибка начала фрейма. Отбрасываем. Спасибо rezidentу за первоисточник.
  4. MODBUS RTU

    Начал вникать в модбас. Читаю описание: RTU фрейм. В RTU режиме сообщение начинается с интервала тишины равного времени передачи 3.5 символов при данной скорости передачи в сети. Первым полем затем передается адрес устройства. Вслед за последним передаваемым символом также следует интервал тишины продолжительностью не менее 3.5 символов. Новое сообщение может начинаться после этого интервала. Фрейм сообщения передается непрерывно. Если интервал тишины продолжительностью 1.5 возник во время передачи фрейма, принимающее устройство заканчивает прием сообщения и следующий байт будет воспринят как начало следующего сообщения. Таким образом, если новое сообщение начнется раньше 3.5 интервала, принимающее устройство воспримет его как продолжение предыдущего сообщения. В этом случае устанавливается ошибка, так как будет несовпадение контрольных сумм. Какое-то несоответствие. Например, в середине сообщения возникла пауза в 2 интервала. С одной стороны, это больше 1,5 и приёмник должен по идее начать приём нового сообщения. Но с другой стороны, новое сообщение должно начинаться с паузы 3,5 инт., иначе это продолжение старого. Я подозреваю, что этот вопрос 1000 раз разжёван, но чё-то поиском найти не могу (наверно не умею) Кто знает, разъясните. PS: Куда писать вопросы по модбасу? В явном виде я такого раздела не нашёл PPS: Сдаётся мне, это просто опечатка в исходнике, тупо переведённая на все языки. И читать надо так: Таким образом, если новое сообщение начнется раньше (3.5) 1,5 интервала, принимающее устройство воспримет его как продолжение предыдущего сообщения. В этом случае устанавливается ошибка, так как будет несовпадение контрольных сумм.
  5. чего ж непонятного? 0,3В падает на стабилизаторе. ток входной и выходной отличается на микроамперы (ИМХО, точнее см. даташит) итого КПД~Uвых/Uвх
  6. Чё тут гадать-то? Взяли да и кинули схему (лучше структурную), тогда людям виднее будет, что лучше и как. (Если конечно не военная тайна) А насчёт темы - что лучше - это вопрос типа: что лучше - си или паскаль билдер или делфи AVR/PIC/MSP//// Win/Lin
  7. У меня была проблема при переходе с ИАР на MSPGCC (под MSP430) идеальный код, зацепиться не за что. А в девайсе не работает ни в какую. Мучался с неделю, пока один старший товарищ не заметил (опыт не пропьёшь!), что ИАР формирует файл прошивки несколько иначе, чем средства GCC. Проблема была в формате текстового файла (hex,ti-text - не суть) GCC формирует текстовик в линуховом формате - то есть в конце строки ставится только один символ - 0x0D, в то время как в формате MS(DOS,Win - не важно) положено 2 символа - 0A 0D. А прошивал я старыми привычными средствами. В результате загрузчик не находил конца строки (0А), а 0D прошивал в процессор, в результате там оказалась полная лажа. Короче, резюме: при использовании GCC загрузчик должен быть соответствующий, либо нужно преобразовывать формат файла прошивки. Не совсем в тему, конечно, речь-то идёт об AVR, но может кому пригодится, чтобы не страдали как я
  8. Я обычно делаю так: float AnyFloatValue; // char Buffer[32] ; // буфер передачи для UART ... AnyFloatValue=... // присваиваем какое-то значение SendToUART(Buffer,cprintf(Buffer,"Any Comment %f",AnyFloatValue)); Где SendToUART(char *Buffer, int NumOfBytes) - функция, отправляющая NumOfBytes байт из буфера Buffer; cprintf - стандартная функция вывода, формирует в памяти строку символов в соответствии со строкой формата. Any Comment можно не выводить, а можно при желании сделать так, чтобы данные выводились в виде таблицы. В общем, широкое поле для творчества. Главное, всё стандартно, прозрачно и привычно.
  9. А обмен между компами идёт? или между какими-т о железными коробочками? Если между компами, то проще всего поставить с каждой стороны преобразователь Ethernet (какой-нить простой Риалтек) и получится прозрачный канал Ethernet (только по оптике). Иначе - HDLC (канальный уровень) или TCP. А достоверность передачи и перезапросы - на уровне приложений Хотя если точка-точка, то можно любой самопальный протокол придумать, главное, задокументировать как следует.
  10. Вообще, если одна коробка - передатчик, а другая - приёмник, то нет никакой возможности в случае сбоя канала (например, кто-то пересёк своим телом информационный луч) сообщить передающей стороне об этом. Как собираетесь выкручиваться? На приёмной стороне сбой можно определить по CRC, но толку от этого мало, если нельзя переспросить запорченный блок. Манчестер - это не протокол, а способ кодирования информации (кстати очень надёжный и легко реализуемый) MIL STD 1553 - это протокол мультиплексного канала (один хост, много оконечников) ИМХО, не имеет смысла говорить о каком-то протоколе, пока нет обратного канала (или он есть, но я как всегда чего-то не понял?)
  11. Вот, нашёл схему для плавного мигания гирлянды. http://altnet.ru/~radiopro/Everday/Elkgr.htm там используется сдвиг фазы откытия тиристора. Мне кажется, если такую же схему повесить на другое плечо мультивибратора, то можно по очереди мигать двумя гирляндами. Но не уверен. Поправьте, если не прав.
  12. Не нравится PIC, можно взять AVR. Программатор - 3 проводка с LPT. Если задача именно 2-мя светодиодами моргать, можно прямоугольники преобразовать в пилу, а если нагрузка помощнее, всё-таки лучше ШИМ. Проще всего это сделать на контроллере
  13. ??????????????????????? А чем мега8 хуже любого другого контроллера? У нас люди в 8253 такие шедевры запихивали... самим теперь не верится. так что можно и флот, и лонг long -> 0xffff ffff -> 4294967295=4294967,295 км. Должно хватить
  14. ??????????????????? :( интересно, откуда возьмутся 2000В? Какой-то хитрый диодно-емкостной резонанс?
  15. а что компилер говорит? может, после macroc(a) пробел поставить?
  16. а зачем решётки перед if и else? в этом случае а должно быть определено до компиляции и не может быть переменной
  17. Самая большая неприятность - враги могут прошивку слить. Мы для отработки AT17 флешки ставили, а потом уже родную ПЗУ. А про флешные слыхал, что у них прошивки иногда слетают
  18. В общем-то и под вин много бесплатного, я дома уже снёс винрар, фотошоп, корел и тотал командер, равно как неро и каспера. А большинство проектов опенсорс вообще кросплатформенные и практически одинаково смотрятся как в вин, так и в линухе.
  19. электромагнитам и катушкам, я думаю, по барабану, стоит параллельно диод или нет, а вот остальным элементам скорее всего нет.
  20. проблема с АЦП

    А если так попробовать - ADC_w=0; и пустить разок Если покажет 0, то надо померить напряжение между входом и аналоговой землёй, только нормальным цифровым вольтметром Блин, это ж AVR... Вообще по правилам на время преобразования рекомендуется гасить ядро, а по прерыванию от АЦП просыпаться и обрабатывать результат. Хотя 15 это не 1-2 разряда, а все 4. Вряд ли в этом дело.
  21. проблема с АЦП

    А если закоротить вход на землю? Скорее всего просто нету нуля у этого резистора
  22. Кстати, да, я об этом запарил. Скорее всего тут собака и порылась. Функции форматного вывода обычно имеют несколько градаций функционала: нормальный, облегченный и полноприводный.
  23. Если совсем без индуктивностей, то только умножитель. 12х6=72 (минус потери) а потом шим-стабилизатором спускаем до 64. MCU вряд ли пригодится, разве только буковки на экран выводить или светодиодами моргать
  24. а может, так попробовать? sprintf(s,"Test"); уж если это не прокатит, то форматный вывод ни при чём Ещё можно попробовать передать в функцию lcd_... указатель на s, хотя вроде имя массива и так должно быть указателем Можно ещё вот чего: инициализировать массив s какой-нибудь строкой и попытаться вывести. Только в конце строки обязательно должен стоять 0
×
×
  • Создать...