Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Re: Котуинко

Пн янв 14, 2019 11:51:28

Слабовато. Получается действительно Коитунко.
Задаёте частоту на каком нибудь пине и всё. Ну и ещё частоту SPI.

Re: Котуинко

Пн янв 14, 2019 12:06:50

OKF писал(а):Слабовато. Получается действительно Коитунко.
Задаёте частоту на каком нибудь пине и всё. Ну и ещё частоту SPI.

Это о чем и для чего собственно - то?
:shock:
В принципе любой программатор основан на "ногодрыге"...
Только вот тот "ногодрыг" в правильном исполнении еще надо организовать.
Или в ПК оболочку под соответствующий порт написать или аппаратный расширитель под чего-то стандартного соорудить.
В наилучшем случае - и то и другое вместе. Но таковых - не слишком уж и много.
8)

И еще один малый штришок...
:roll:
Есть много публикаций, где прописано добавление в arduinoIDE различных дополнительных программаторов (в том числе и весьма понавороченных https://www.radiokot.ru/circuit/digital/pcmod/72/... к примеру)...
ДЫК...
Пока была версия 1.6.... мне удавалось поставить/прописать даже STK200 на LPT и проблем особо не имелось.
Однако повторить такое на 1.8...-1.8.8 не удалось. Прописать в файле - получается, а вот использование... УВЫ...
:(
Посему и был реализован вариант arduinoISP, который состоит в "штатном комплекте" и не требует дополнительных "плясок с бубном" без детальной информации об особенностях устройства ПО IDE.
Ну а имея даташит на протокол, время и интерес можно и самому на "подручных средствах" что угодно соорудить.
Торлько вот то больше "для души" и не ограиченных временных рамок.
:beer:

Re: Котуинко

Пн янв 14, 2019 15:42:20

применимо в основном ДЛЯ АРДУИНО IDE, а не для работ с иными софт-оболочками.
Хотя возможно и может быть интегрировано с оными.

никогда такого не было, и вот опять(с). Матчасть, настойчиво овладевай ею!
в среде arduino IDE нет какого-то собственного способа общения с программаторами, там используется обыкновенный avrdude. Собственно arduino isp можно использовать как с голым avrdude, так и с различными мордами для него.

Re: Котуинко

Пн янв 14, 2019 23:34:24

Так ведь и сказано
"...возможно и может быть интегрировано с оными..."
поскольку готовых примеров в данный момент НЕ НАБЛЮДАЕТСЯ,
а самостоятельно "прописывать" в софт-оболочку... как-то НЕОХОТА...
8)
Да и делался этот вариант специально под адуринью.
Помимо прочего для непосредственной загрузки кода без бутлоадера (несколько разновидностей "сторонних авторов" весьма внешне привлекательных набором примененных МК, но... требующим детальной перепроверки как на вопрос каества, так и на вопрос совместимости с разными версиями IDE)...
:write:

Re: Котуинко

Вт янв 15, 2019 00:26:01

поскольку готовых примеров в данный момент НЕ НАБЛЮДАЕТСЯ

можт я чего-то не понимаю, что именно считать "готовым примером", но arduinoisp и avrdude:
Код:
avrdude -p m328p -P /dev/ttyACM0 -c avrisp -b 19200 -U flash:w:filename.hex

просто указываем модель программатора и бодрейт - и оно работает.

Re: Котуинко

Вт янв 15, 2019 10:00:48

Так то РАЗНЫЕ железяки...
железко, сделанное из адуринки-наны (прошиваем штатный скотч из "примеров" ArduinoISP)
в самой IDE обзывается как
Arduino as ISP
в случае же применения в сторонней софт-оболочке с той же дудкой такого меню (Arduino as ISP) НЕТУ
а с вариантами
arduino
или AT ISP
данная железяка НЕ РАБОТАЕТ.
Там, как я понимаю, из/в IDE идет поток по СОМ каналу, а сама нанка внутренним софтом обеспечивает работу ISP с прикладным МК.
Хотя - то надо в содержимое СКОТча вникать...
:dont_know:
А пока его и не вычитывал.
:roll:
Ну да не суть и важно - для "стандартных" вариантов с авр студио 4.19 (ассемблер и/или Си) есть и stk200 и модифицированный SiProg.
Гораздо интереснее то, чот имеется ряд расширений, позволяющих утилизовать "завалявшиеся неликвиды".
Для работ с дополнительными возможностями под arduino IDE 1.8.8 (именно с данной версиее проверялось - в иных могут наблюдаться отличия в работе) для "рабочего минимума" можно использовать следующее:

MiniCore by MCUdude версия 2.0.1
строчка в окне ссылок менеджера плат
Код:
https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json


DIY ATtiny by James Sleeman, http://sparks.gogo.co.nz/ версия 2018.9.9
строчка в окне ссылок менеджера плат
Код:
https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json


DIY ATmega8,ATmega48,ATmega88,ATmega168,ATmega328 by James Sleeman, http://sparks.gogo.co.nz/ версия 2018.9.9
строчка в окне ссылок менеджера плат
Код:
https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_atmega8_series_index.json

и весьма интересный вариант с МК
"ATTiny Core - 1634, x313, x4, x41, x5, x61, x7, x8 and 828 for Arduino 1.6.5 and later (1.8.x recommended)"
от
ATTinyCore by Spence Konde
и
ATtiny Modern(deprecated, use ATTinyCore instead) by Spence Konde
строчка в окне ссылок менеджера плат
Код:
http://drazzy.com/package_drazzy.com_index.json

Однако в моей версии IDE попытка скомпилировать "пустышку" для Аттини2313 в этой подгруппе устойчиво выбрасывает ошибку компиляции, а "расширенного набора" МК, заложенного там в ближайшее время не предвидится - посему оставил только как ознакомительно - учебный вариант (на самом сайте https://github.com/SpenceKonde/ATTinyCore весьма неплохое описание "новинок").
:beer:

Подправил тексты ссылей для менеджера плат по условию, чтоб их можно было использовать для "копировать-вставить" , а не переход по ним получать.
:write:

Re: Котуинко

Вт янв 15, 2019 14:58:35

железко, сделанное из адуринки-наны (прошиваем штатный скотч из "примеров" ArduinoISP)
в самой IDE обзывается как
Arduino as ISP
в случае же применения в сторонней софт-оболочке с той же дудкой такого меню (Arduino as ISP) НЕТУ
мало ли как оно там обзывается в IDE. Вариант avrisp работает. И бодрейт критичен.
а с вариантами
arduino
или AT ISP
данная железяка НЕ РАБОТАЕТ.
arduino - это для заливки кода в саму непосредственно подключенную к компу плату, через загрузчик.
Подправил тексты ссылей для менеджера плат по условию, чтоб их можно было использовать для "копировать-вставить" , а не переход по ним получать
н-да, видно настоящего ассемблерщика :))) зачем?

Re: Котуинко

Вт янв 15, 2019 15:17:34

Когда ссыль в обычном виде - может прыгнуть случайно "не туда".
А так - только под копировать-вставить (дабы не иметь лишних проблем и народ не матюкался).
8)
С командной строки программатор запускать, да ешшо и с всякоопциями...
:facepalm:
Еще ту "дудку" досконально изучать - проще свой соорудить!
ФЕЕЕЕ....
:(
Ежли ужшш в ПК свою оболочку создать не удастся так хош интерактив и посылка команд...
А так .... НЕЕЕ... ЛЕЕЕНЬЬЬ!!!
:sleep:

Re: Котуинко

Вт янв 15, 2019 17:33:34

А кто-нибудь видел пример медианного фильтра для float?

Обычно приводится только для целых чисел. Вот это:
Могу ли я тупо изменить тип данных int на float?

Код:
// функция считывает аналоговый вход заданное количество раз
// и возвращает медианное отфильтрованное значение
int readMedian (int pin, int samples){
  // массив для хранения данных
  int raw[samples];
  // считываем вход и помещаем величину в ячейки массива
  for (int i = 0; i < samples; i++){
    raw[i] = analogRead(pin);
  }
  // сортируем массив по возрастанию значений в ячейках
  int temp = 0; // временная переменная

  for (int i = 0; i < samples; i++){
    for (int j = 0; j < samples - 1; j++){
      if (raw[j] > raw[j + 1]){
        temp = raw[j];
        raw[j] = raw[j + 1];
        raw[j + 1] = temp;
      }
    }
  }
  // возвращаем значение средней ячейки массива
  return raw[samples/2];

Re: Котуинко

Вт янв 15, 2019 18:11:54

Это к нашим СИшным мэтрам вопрос...
:(
Как вариант - или предварительное округление или сначала приведение к другой величине - не в целых, а в десятых/сотых/тысячных считать и полученные значения обработать как целые.
:dont_know:

Re: Котуинко

Вт янв 15, 2019 18:14:47

Хе. Умножить на 100, а потом поделить на 100? А почему бы и нет... :solder:

А нет. Не пойдет, потому что бывают и минусовые значения. :?
Последний раз редактировалось Upgrader Вт янв 15, 2019 18:16:28, всего редактировалось 2 раз(а).

Re: Котуинко

Вт янв 15, 2019 18:16:10

По-моему, простое изменение типа даст нужный результат, но зачем это делать?! ничего, кроме потери производительности от перехода к float в данном случае не получится... имхо

Re: Котуинко

Вт янв 15, 2019 18:18:05

Нужна фильтрация с датчика температуры попсового 18B20. Там от -30,00 до +100,00. Точность с запятой нужна. Без фильтрации там прыгает всё на пол градуса, а с фильтрацией удается застабилизировать десятые и даже сотые градуса.

Re: Котуинко

Вт янв 15, 2019 18:44:31

Нужна фильтрация с датчика температуры попсового 18B20. Там от -30,00 до +100,00. Точность с запятой нужна. Без фильтрации там прыгает всё на пол градуса, а с фильтрацией удается застабилизировать десятые и даже сотые градуса.

DS18B20 возвращает 16-ти битные числа, работаешь с ними как с обычными целыми, просто в самом конце нужно учитывать, что это все в 1/16-х градуса, если максимальная точность выбрана.

Re: Котуинко

Вт янв 15, 2019 19:00:21

Так для ds18b20 самое оптимальное решение -
"Смещенная цифровая ось" -
переносим 0 в точку соответствующую минимальной температуре и проводим вычисления в положительных числах.
Так в моих последних терморегуляторах сделано.
Значительно упрощает отработку как для нагревателя так и для холодильника
причём как выше нуля, так и при нуле и при минусовой температуре.
Единственно предварительно обрабатывается величина с учётом дробной части и округления до целого.
:beer:

Да и точность хотя-бы в пол-градуса там еще куда ни шло (ежли ставить максимальную разрешающую способность и замер раз в почти секунду) все равно округление до одного знака после запятой...
А смена информации разок в три секунды вполне приемлема (на практике и то медленнее).
Но... то были прожки под ассемблером.
:hunger:
Адуринкин вариант ставил только с целыми при выводе на индикатор...
В то же время при выводе полного значения на терминал действительно сотые и тысячные "мельтешат"...
Как там организован процесс в библиотеке - не вникал...
Но для повышения стабильности все же проще кажется округление до десятков проводить.
:dont_know:

Re: Котуинко

Вт янв 15, 2019 20:45:43

Точность с запятой нужна
ну так и считать с фиксированной запятой, в целых числах т.е.

Re: Котуинко

Вт янв 15, 2019 21:33:10

Просмотрел свой ранний разбор с далласом под адуринко-терморегулятор...
Там основная часть работает с byte или uint8_t
а float появляется как результат :
Код:
int term=(data[rg_tmdh]<<8) | data[rg_tmdl]; // сводим целую и дробную части из копии блокнота в int
float termc=(float)term/16.0; // а вот это termc дальше идет на индикацию посредством serial.println(termc,DEC)

но никто ж не мешает использовать как собственно тот int term так и байтовые части результата из массива блокнота...
Тем более, что библиотека OneWire позволяет обращаться к датчику в побайтовом режиме как захочется.
:dont_know:

Re: Котуинко

Вт янв 15, 2019 21:57:42

все равно округление до одного знака после запятой...
Два знака после запятой это реально при правильной фильтрации, сразу видно минимальные изменения температуры. Это уже работает. Но алгоритм фильтрации сам по себе сейчас глючный и работает не всегда как надо. Вот ищу правильный и лучший.

Re: Котуинко

Ср янв 16, 2019 06:59:13

если ресурсов МК достаточно (памяти и быстродействия), делайте все во float, и не парьте мозг: на то и железяка, чтобы делать, как нравится человеку.

Re: Котуинко

Ср янв 16, 2019 09:51:58

ГЫММ...
Вариант miniCore предлагает в примерах версию работы под GCC без использования "стандартных функций" референса (или с их минимумом)...
Тем самым по факту тот же редактор GCC что и для АВР студии...
ARV на заметку...
:roll:
Ну и ежли честно... два знака за запятой с учетом термоинерционности корпуса датчика и возможных отклонений в калибровке...
Разве что с точки зрения "эстетичности показаний на табло"...
:dont_know:

И малость "дёгтю"...
Пришло "обновление JAWA"...
А там ХРЕНОВОСТЬ -
с "послеапреля" вроде собираются его сделать платно-лицензионным...
:(
Ответить