Генератор прямоугоьного сигнала, ацп и связь по USB
- Войдите на сайт для отправки комментариев
Добрый день, форумчане!
Надо запрограммировать Ардуино, чтобы проверить прототип.
Прототип представляет собой прибор с 16 входами и одним выходом. Управляется он частотой. Собственно арадруина и должна им управлять.
Управлять означает подавать прямоугольный сигнал с какой-то заранее заданной фиксированной частотой на эти 16 каналов. Частота одинаковая для всех каналов, в ходе работы не меняется. Значения могут быть в диапазоне от 20 до 400 kHz. Засада в том, что на разных каналах может требоваться разная фаза сигнала. Другими словами фронт сигналов по каналам может быть не синхронным а с задержкой.
Кроме управления, надо оцифровывать аналоговый сигнал с частотой дискретизации 100 kHz и отдавать его и прочую телеметрию по USB.
Т.е. грубо говоря нужен многоканальный генератор прямоугольного сигнала с задержкой фазы + ацп в USB.
Если планы совсем нереальные, то хотелки можно и урезать.. Раза в полтора.
Детали в первом коментарии.
Что надо:
Программа и тесты к ней.
Почему Ардуино:
потому что просто, по идее.
но вообще нет уверенности, что оно справится с этой задачей.
Mega? Due? Два Due?
Что за прибор:
Эксперементальный прототип. Если на практике все окажется близко к теории, получится очень интересно. Если нет, ну тоже интересно. Подвигаем науку, короче:)
Сколько денег:
Я не знаю. Называйте за сколько готовы взяться. Деньги мои, не государственные: у института на такое бюджета нет.
Время:
Тоже не знаю. Называйте. Неделя? месяц? Как я понимаю это индивидуально и зависит от занятости, квалификации... Оплата не по часовая, а за продукт.
Код:
Это не коммерческий проект, даже наоборот:)
Так что open source, код по мере разработки сразу выкладывается на гитхабе, доступен всем. В публикации ссылка и благодарность. Не знаю, насколько это важно в здешьней тусовке, но как пример в портфолио будет как минимум полезно. Код покрыт тестами на 85%, читаем.
Детали реализации:
Основной цикл программы выглядит так:
0. Старт по команде из USB.
1. Вызов управляющей функции (про нее думать не надо, логику ее я опишу). Она возвращает следующие параметры:
{
double[] dt; // массив с задержками для каждого канала
unsigned long t_start; // время в микросекундах, когда надо начать генерцию. такая точность не нужна, но для уменьшения веротности ошибиться все времена в одном масштабе.
unsigned int t_stop; // время, когда надо остановить генерцию и опять вызвать управляющую функцию.
}
например, если у нас 3 канала и надо через 0.1сек начать процесс длительностью 1 сек, каналы вступают в работу с задержкой в 20 мкс, то выглядеть эта структура будет так:
{
[0, 20, 40]
now+100
now+1100
}
2. Если now() >= t_start: начать гернерацию
3. Если now() >= t_stop: закончить гернерацию, вызвать управляющую функцию.
1а. (Выполняется всё это время) оцифровка выходного канала, отсылка данных, проверка сигнала отбой.
макс. частота оцифровки ардуино uno, mega etc - 18 кГц, да еще плюс (в реале - минус) костыли ардуины. Либо ограничиваем хотелки на макс. частоте 18 кГц, либо берем страршие ардуино сестры.
Остальное - легко реализуется на честном С, но не очень на ардуино Ide. В частности, если вам нужны четкие временные/ фазовые соотношения, то с ардуино Ide вы их не получите, только на С со вставками на асме. Но если вам не шашечки, а ехать, пишите ydom coбaкa mail.ru . Могу и на ардуино Ide, но фаза может плыть. На С будет все четко с точностью до джиттера.
По usb - реализуем vcp? Да, вызов надо почетче описать - нет данных по частоте и фазовым сдвигам. Нужно также учитывать дискретность фазовых сдвигов, квант - 1/F , F- частота cpu.
пы сы работы дня на 2-3, если будет четкое описание команд (протокола). Сделать могу на atmega328 (с учетом вышеуказанного ограничения - 18 кГц ацп при 8 битах разрешении), также на STM32F103C8T6 (временное разрешение ацп 1 мкс, 12 бит) или на Atmel SAM3X8E ARM Cortex-M3 (временное разрешение ацп 1 мкс, 12 бит ).
Добрый день!
>макс. частота оцифровки ардуино uno, mega etc - 18 кГц,
Печаль.
>легко реализуется на честном С, но не очень на ардуино Ide
Да, конечно же православный С.
>vcp Пришлось гуглить что это:) На первый взгляд почему нет. такие объемы данных он вроде легко прокачивает.
>Да, вызов надо почетче описать - нет данных по частоте и фазовым сдвигам.
Несущая частота фиксиованная, но пока неизвесная, будет подбираться в процессе эксперементов. т.е. её не надо менять часто. для прототипа достаточно даже чтобы требовалась перекомпиляция для её смены. Ну или уж так же читать из USB, совсем приятно будет. Теоретические её оценки лежат в нескольких интервалах, наиболее интересные значения вблизи 42, 181, 313 и 479 kHz.
>Нужно также учитывать дискретность фазовых сдвигов, квант - 1/F , F- частота cpu.
Дискретности должно хватить. Частота процессора десятки мегагерц, частоты рабочего сигнала как минимум на два порядка меньше. Невозможность задать 1.001, а только 1.0005 или 1.0015 должно быть не критично.
>макс. частота оцифровки ардуино uno, mega etc - 18 кГц,
Печаль.
Говорят 77 можно. Это говорят например тут: http://yaab-arduino.blogspot.com/2015/02/fast-sampling-from-analog-input....
Ооо, а вот тут Брюс Л.:) делает 500kHz: https://hackaday.io/project/425-arduino-oscilloscope-688000-samplessec И там в каментах есть ссылки на "10 долларовый осциллограф" на STM32. Но это ладно. Интереснее другое. Я не уверен, что при такой скорости чтения останется время ещё и на генерацию. Может две ардуины? одна отвечает за вход, другая за выход? Только как их синхронизовать тогда? Синхронизовать надо для того, что бы передавать на компьютер отсчёты в относительном времени от начала генерации.
Вот и смекните, что он вам на "чистом си" наклепает :)
на stm32 можно сделать и мегасэмпл, но это на stm32- там любое программирование дороже на порядок. Я кстати указал, что можно сделать на stm32 от fo до f4 и на аtmel arm cortex 3, у меня платы есть, но это будет уже плохочитаемо новичками.
про 78 килосэмплов на ардуине- откровенный треш.
генерация на порядки проще обработки данных.
Вы определитесь - дешево и 18 килосэмплов или дорого и мегасэмпл, а там можно будет выбирать из stm32 и atmel arm cortex3, ну или может кто еще предложит что, в частности можно на тинси делать, можно на кубиках, это у кого к чему душа лежит.
Вот и смекните, что он вам на "чистом си" наклепает :)
вам если нечего сказать лучше бы помолчать, учите матчасть и не позорьтесь, выказывая своё невежество и некомпетентность. Вы ведь тот самый бедолага, у которого 2000 мкс =2 с?
Ооо, а вот тут Брюс Л.:) делает 500kHz: https://hackaday.io/project/425-arduino-oscilloscope-688000-samplessec И там в каментах есть ссылки на "10 долларовый осциллограф" на STM32. Но это ладно. Интереснее другое. Я не уверен, что при такой скорости чтения останется время ещё и на генерацию. Может две ардуины? одна отвечает за вход, другая за выход? Только как их синхронизовать тогда? Синхронизовать надо для того, что бы передавать на компьютер отсчёты в относительном времени от начала генерации.
это на Атмел АРМ Кортекс3.
Кстати, там и пример- ардуино Ide дает 13 килосэмплов в секунду, а код на С дает почтии 700 килосэмплов, это разница (которую некоторые тутошние злопыхатели, по совместительству балбесы не видят, ибо глупы) между программами, написанными на ардуино ide и на С, тут даже сильнее - фрагмент на С, а полностью на С код дает мегасэмпл. Почувствуйте разницу и не обращайте внимание на болванов.
Вы мне на почту ydom coбaкa mail. ru напишите, по почте можно более предметно обсудить.
Мне не устройство, мне прототип нужен, идею проверить. Это даже не мелкосерийное производство. Второго экземпляра у меня никогда не будет. Повторять его будут если ничего не выйдет (наиболее вероятный результат) или же такие же как я энтузиасты, которые решат "аа, а что если ..." или "он забыл ...." либо же специально для этого созданное малое предприятее (наукоемкое, как иначе), если вдруг результат будет обнадеживающий.
Вы определитесь - дешево и 18 килосэмплов или дорого и мегасэмпл, а там можно будет выбирать из stm32f1 и atmel arm cortex3, ну или может кто еще предложит что, в частности можно на тинси делать, можно на кубиках, это у кого к чему душа лежит.
Но я не спорю, просто что нагуглилось за это время. Тяжело разбиваются мечты:) В принципе, я прикинул, что-то совсем грубое можно будет посчитать и при 40kHz. Ну хотя уж совсем грубое и при 20, да.. внешнее АЦП подцепить проблем много добавит?
1 Боюсь я этого. Им программатор надо, а самое главное, переферию распаивать, кварцевый генератор подбирать. А у меня руки из жопы. Не осилю... Заказывать всё устройство я тоже не осилю:) Как было сказано, деньги совсем другие:)
Мне не устройство, мне прототип нужен, идею проверить. Это даже не мелкосерийное производство. Второго экземпляра у меня никогда не будет. Повторять его будут если ничего не выйдет (наиболее вероятный результат) или же такие же как я энтузиасты, которые решат "аа, а что если ..." или "он забыл ...." либо же специально для этого созданное малое предприятее (наукоемкое, как иначе), если вдруг результат будет обнадеживающий.
2 Вроде народ делает что-то. Вот по ссылкам ещё нашлось как раз как на Дуо делали: http://www.djerickson.com/arduino/
3 Но я не спорю, просто что нагуглилось за это время. Тяжело разбиваются мечты:) В принципе, я прикинул, что-то совсем грубое можно будет посчитать и при 40kHz. Ну хотя уж совсем грубое и при 20,
4 да.. внешнее АЦП подцепить проблем много добавит?
1 Платы уже готовые, с usb, никаких программаторов, можно будет даже с ide ардуины заливать.
2 Дуо - это то же, что я указал, ARM Cortex-M3
3 Частота дискретизации должна быть по крайней мере в два раза выше самой высокой частоты сигнала, иначе можно погрязнуть в цифровых артефактах
4 Можно, но ограничение будет уже на шине (а это spi или i2c), реально можно будет 100 килосэмплов (вряд ли больше) получить.
Да, кстати - а какое разрешение нужно? 8, 10, 12 бит?
Может мерять эффект косвенно, не обязательно на таких частотах? Что за опыт, электрохимия?
макс. частота оцифровки ардуино uno, mega etc - 18 кГц, да еще плюс (в реале - минус) костыли ардуины. Либо ограничиваем хотелки на макс. частоте 18 кГц, либо берем страршие ардуино сестры.
Ну, если максимальное разрешение не обязательно, то надо смотреть какое реально разрешение нужно. Так-то в даташите сказано "Up to 76.9kSPS (Up to 15kSPS at Maximum Resolution)"
Ну, если максимальное разрешение не обязательно, то надо смотреть какое реально разрешение нужно. Так-то в даташите сказано "Up to 76.9kSPS (Up to 15kSPS at Maximum Resolution)"
up to то оно up to, но для достижения up to вам придется весь рабочий код выполнять во время ожиданий готовности adc, мой опыт показывает что уже при 20 килосэмплах начинает тормозить код входы/выхода из функции прерывания. Надо же не просто измерить и выдать, надо по прерыванию переписать данные из регистров в переменные, а при отработке прерывания нужно регистры алу загнать в стек, а при выходе из подпрограммы прерывания регистры достать из стека в алу, ну и много прочей мелочевки, вроде устаканивания напряжения на кондере увх (а это может и до сотни тактов), так что реально 8 бит 20 килосэмплов или 12 бит 15 килосэмплов.
А, все ясно:)
Я не понял, что речь идет о Due и что это совсем другая Ардуино. Я изначально когда оценивал, подойдет ли вообще Ардуино для этой задачи как раз на Due и остановился. Еще Zero показалась интересной, но ее у китайцев пока нет.
Таким образом получается, что выбора нет и Due так Due. Когда нет выбора, это хорошо:)
Скажите цену пожалуйста, а то может все усилия зря. Или тут не принято цену обсуждать вслух? Я что-то не нашел где приватные сообщения.
Вот еще уточнее по обмену данными с большим компьютером:
Железка в постоянном режиме пишет в USB <время, значение ацп>. Время в микросекундах, отсчитывается от команды синхронизации (см. ниже).
Управлющие сигнал для нее может быть всего двух видов:
- Сброс времени. После получения этой команды поле "время" в отчетах начинает бежать с нуля. До передачи этой команды в первой раз значение поля "время" может быть каким угодно.
- Значения {t_start, t_stop, delays[]}
У меня нет понимания, как (и можно ли) организовать чтение-запись паралельно. Т.е. может ли железяка в постоянно режиме отправлять телеметрию и при этом проверять, если новые команды. Так же не знаю какая пропускная способность. У USB вроде гиганская, но поверх нее же будет делаться эмуляция виртуального порта. Будет ли этот обмен органичивать максимально возможную частоту оцифровки входного сигнала?
Вот еще раз алгоритм. (да, я уже понял, что настоящего параллелизма нет, но мне проще разделить задачи на потоки)
1 первый поток постоянно читает АЦП и передает данные на большую землю.
2 поток читает управляющий сигнал.
3 поток отвечает за генерацию: now < t_start => на всех выходах логический 0 иначе если now < t_stop начинает изменять значения на 16ти выходных ногах с 0 на 1 и обратно с заданной частотой F.
При этом задержка фронтов сигнала берется из массива delays[]. задержка в микросекундах, может быть числом от 0 до T (период для данной частоты F). Например, период 2 микросекунды, delays = [1.1, 0.1, 1.1, 0]. Это означает, что в момент
t_start на выходе №4 появляется "1",
t_start+0.1 на выходе №2 появляется "1",
t_start+1.0 (T/2) значение на выходе №4 становится "0",
t_start+1.1 выход №2 => "0", №1 и №3 => "1",
t_start+2.0 (T) №4 => "1"
.....
значения t_start, t_stop, delays устанавливаются либо управляющей функцией, либо приходят из шнурка. Управляющая функция вызывается после завершения генерации.
Due так Due, я про нее тоже как вариант писал.
---Т.е. может ли железяка в постоянно режиме отправлять телеметрию и при этом проверять, если новые команды
Может.
---Будет ли этот обмен органичивать максимально возможную частоту оцифровки входного сигнала?
При грамотной организации нет
---delays = [1.1, 0.1, 1.1, 0].
В реальности точность 0,1 мкс на ардуино в программе на arduino ide вряд ли достижима, потому что для такой точности нужно отключать все прерывания кроме таймеров, а как тогда передавать / принимать? Будет джиттер (неточное попадание) порядка времени отработки других (например, прием/передача байта) прерываний. Но 1 мкс вполне достижима, а вот что там ниже 1 мкс - нужно смотреть.
По цене - точное т.з. мне пришлите пожалуйста, ydom coбaкa mail.ru , я посчитаю. Пока никто Вам по цене не сказал поскольку не только тз, но и платформа была неопределена.
Кто бы мычал :) На форуме ардуинщиков чистый сишник клиентов собирает :) Позор !
Кто бы мычал :) На форуме ардуинщиков чистый сишник клиентов собирает :) Позор !
а это ведь вы тот самый недотепа, у которого 2000 мкс равно 2 секундам? Сочуствую. Да, и если вам нечего сказать по существу, то не стоит и позориться.
Да нет я не я, это вы тот самый мастер светомузыкальных писуаров ? Я вам не сочувствую, ибо ваша болезнь не излечима :)
Письмо написал.
1 мкс для частоты хотя бы в 300 kHz это всего 1/3 периода. Нужно минимум 1/10, желательно - 1/100. А, всё понял. У Due частота 84MHz => такт 0.01 мкс. сограсен, тактов сто на накладные расходы надо как минимум...
Чистый С - это разве не плюс? Особенно если он позволяет получить меньшие задержки.
Чистый С - это разве не плюс? Особенно если он позволяет получить меньшие задержки.
да это местный дурачек, не обращайте внимание. Одна фраза "Да нет я не" чего стоит...
Письмо написал.
1 мкс для частоты хотя бы в 300 kHz это всего 1/3 периода. Нужно минимум 1/10, желательно - 1/100. А, всё понял. У Due частота 84MHz => такт 0.01 мкс. сограсен, тактов сто на накладные расходы надо как минимум...
совершенно верно, при этом большинство элементарных операций занимают пару тактов. Обращение к таблице прерываний, запись регистров в стек, запись программного счетчика, потом выполнение кода прерывания, потом достать из стека регистры и программный счетчик- так несколько десятков тактов и набегает.
Чистый С - это разве не плюс? Особенно если он позволяет получить меньшие задержки.
Это голимый пиар слабого программера :)
Ункель, я прочитал. Смотри табло береги :)
Чистый С - это разве не плюс? Особенно если он позволяет получить меньшие задержки.
"Чистый Си" - это как "Евроремонт". Никто не знает, что это такое.
"Чистый Си" - это как "Евроремонт". Никто не знает, что это такое.
Истина - она всегда конкретна. Напомню:
запись байта в память - 2 такта
запись 2 байтов - 4 такта
запись 4 байтов - 8 тактов
цикл
int
(
long
) - 6 тактов
int
ADD, SUB, MUL - 6-7 тактов
int
DIV - 235-245 тактов
long
ADD, SUB, MUL - 15-17 тактов (22-23)
long
DIV - 670-680 тактов
int
=>
float
- 70-72 тактов
float
ADD, SUB, MUL - 200-220 тактов
float
DIV - 550-560 тактов
sin(
float
) - 2000 тактов / 124 мкс
millis - 2 мкс
micros - 4 мкс
digitalWrite - 6-8 мкс, Mega - 8-9 mcs
digitalRead - 4-6 мкс, Mega - 7 mcs
pinMode - 5 мкс
analogRead - 111-112 мкс
shiftOut - 180-185 мкс, Mega - 210
http://arduino.ru/forum/obshchii/vremya-vypolneniya-otdelnykh-komand-arduino
А какой задержке 1 мкс может идти речь, если время отработки команды digitalWrite 6-8 мкс?
Чистый С - это разве не плюс? Особенно если он позволяет получить меньшие задержки.
"Чистый Си" - это как "Евроремонт". Никто не знает, что это такое.
Говорят, Керниган Ричи знал. Но он наполовину мертв.
Извините за офтоп, но не смог удержаться.
"Чистый Си" - это как "Евроремонт". Никто не знает, что это такое.
Истина - она всегда конкретна. Напомню:
А какой задержке 1 мкс может идти речь, если время отработки команды digitalWrite 6-8 мкс?
Извините, что вмешиваюсь, я как тот прапорщик из анекдота: нихрена не умеет но все знает. Я просто ключевые слова гуглю. Если digitalWrite медленный то очевидное решение его не использовать. Вот обсужалось тут: http://electronics.stackexchange.com/questions/22585/arduino-faster-alternatives-to-digitalread-and-digitalwrite первый ответ выглядит интересным. Вторая ссылка на библиотеку тоже многообещающая. Будет здорово, если получится сделать быстрее, хотя я неуверен, что что-то из этого применимо в нашем случае.
Говорят, Керниган Ричи знал.
Врут. Не знал. Вот Маккарти знал, что такое "чистый Лисп" и дал чёткое определение этому понятию. У Кернигана и Ритчи "чистота С" никак не определяется.
Извините, что вмешиваюсь, я как тот прапорщик из анекдота: нихрена не умеет но все знает. Я просто ключевые слова гуглю. Если digitalWrite медленный то очевидное решение его не использовать. Вот обсужалось тут: http://electronics.stackexchange.com/questions/22585/arduino-faster-alternatives-to-digitalread-and-digitalwrite первый ответ выглядит интересным. Вторая ссылка на библиотеку тоже многообещающая. Будет здорово, если получится сделать быстрее, хотя я неуверен, что что-то из этого применимо в нашем случае.
Это во-первых еще нужно знать, что можно использовать, а что нельзя использовать. Вот если вы напишете кода с digitalRead и Write , а железо (как окажется) не будет работать как надо , как положено - догадаетесь вы о том, что дело в медленных digitalRead/Write? Это один пример, а сколько еще тонкостей, и если какой-нибудь недотепа напишет "правильный", с его точки зрения, код, не зная тонкостей ide arduino, продаст вам код , а прибор работать не будет - кто будет виноват? Он вроде все сделал, вы ему заплатили, а не работает!
Да, можно не использовать digitalRead/Write, но тогда нужно будет использовать асм команды мк, которые различны для разных мк, а для этого уже нужно будет вкуривать даташиты мк и arduino ide превращается в суп из топора. И еще одна тонкость - в ардуине используется разная периферия мк, например таймер 0 для millis(), другие таймеры для analogOutput, различная периферия также используется в библиотеках, так что если вы хотите получить безглючный рабочий код - вам придется разбираться во всех этих тонкостях и тонкостях библиотек, отключая какие-то функции в Ide, а зачем это надо когда можно просто написать код с пониманием, что какая периферия делает? Так что поиграться - arduino Ide самое то, но если делаешь что-то серьезное, например решение вашей задачи - нужно или брать на порядок более быстрое железо (Due) или писать кода на С. А лучше и то, и то.
"Чистый си" для микропроцессора это бла бла бла для привлечения, простите, лохов. Никого конкретно не имею в виду. Просто говорю, что это пустышка и красивое словосочетание. Думаю "сделаю на ассемблере" будет означать для обывателя "еще быстрее", но на деле - фуфло :)
Ну какое мнение должно сложиться у сообщества ? Определение "чистый си" даже тот кто "на нем пишет", дать не сможет.Для меня все это понятно и прозрачно. Характеризуется отним словом - "развод" :)
Вот скажем, возьму и отключу все тормозные фишки arduino. Станет ли мой код в дальнейшем "чистым си" ?
А рассуждение выше вообще поток сознания. "Вот вам продадут нерабочий код , кто виноват ?" - это значит тут все мошенники один Ункель - Д'артаньян.
1 "Чистый си" для микропроцессора это бла бла бла для привлечения, простите, лохов. Никого конкретно не имею в виду. Просто говорю, что это пустышка и красивое словосочетание. Думаю "сделаю на ассемблере" будет означать для обывателя "еще быстрее", но на деле - фуфло :)
2 Ну какое мнение должно сложиться у сообщества ? Определение "чистый си" даже тот кто "на нем пишет", дать не сможет.Для меня все это понятно и прозрачно. Характеризуется отним словом - "развод" :)
3 Вот скажем, возьму и отключу все тормозные фишки arduino. Станет ли мой код в дальнейшем "чистым си" ?
4 А рассуждение выше вообще поток сознания. "Вот вам продадут нерабочий код , кто виноват ?" - это значит тут все мошенники один Ункель - Д'артаньян.
1 Для блинка и arduino ide (далее Аide) годится, для чего -то серьезного нужно учитывать (иногда огромное) время выполнения даже элементарных команд в коде Aide, хотя в С или асме они выполняются за один такт. Это означает что цель АIde- познакомить и научить азам, а не делать приборы для профи. По поводу асма- например, управление ws2811 по протоколу NRZ800 на atmega328 (и одноклассниках) на С сделать не получится, приходится делать код на асме, писать функцию на асме и вставлять эту функцию в программу, сделанную в основном на С. Если кто-то чего-то не понимает, то "фуфлом" называть это не стоит. Кода на С реально работает быстрее, иногда на порядок, а код на асме работает в несколько раз быстрее, что в критических местах жизненно необходимо. Вы напишите код управления ws2812 на Aide? Нет, даже на честном С не напишите (речь про 8 битники, ясное дело. 32 битники на С потянут NRZ800).
2 Я обычно употребляю "честный С", это означает что без ардуиновских костылей, о коих я писал постом выше. "Костыли" , возможно, нужны для знакомства младших школьников с программированием микроконтроллеров, но они мешают в реальных задачах, как приставные колеса к двухколесному велосипеду хороши для обучения, но мешают ездить умеющим ездить. А неумеющие ездить на двухколесном велосипеде могут сколько угодно твердить, что приставные колеса не мешают развивать любые скорости - но вы видели велосипеды с приставными колесами на велогонке? Нет, так что оставим ардуино ide младшим школьникам, а серьезные задачи будем решать на честном С.
3 Для того, чтобы отключить все тормозные фишки,надо знать, какие фишки тормозные. А для этого неплохо бы знать, какие костыли (нужные младшим школьникам) добавлены в ide arduino, и если костыли отключены (кстати еще тот геморой), то какой смысл в Aide? Суп из топора получается, лучше уж сразу брать честный С, их много , от Сode Vision за 200 баксов до keil uVision и iar за десяток килобаксов, и не предлагать потенциальным клиентам суп из топора.
4 Вы еще не заметили, что откровенное хамство меня не заводит, и я на ваше хамство обращаю не больше внимания, чем на тявканье подзаборной шавки. Так что можете не стараться.
Ункель, не заблуждайтесь относительно своей исключительности :) Это выглядит смешно :)
Кстати, хомите в основном вы. А не замечаете этого, поскольку это стиль вашей жизни.
На всякий случай, так эскалируемое вами быстродействие, нужно в 5% проектов. Да и то не факт. То что вы "охмуряете клиента", опуская всех остальных, как раз и говорит о вашем хамстве. Вы уже несколько раз пропиарили свою "исключительность". Которая яйца выеденного не стоит. Ничего вы, лучше чем другие сделать не сможете, просто пурги нагоните :) Так что, хватит уже из себя "чистого насильника" изображать. Читать противно.
Извините, что вмешиваюсь,
Что- то письма перестали к вам приходить, или ящик забился?
В общем ваша задача решается без проблем, целиком и полностью, 223 килосэмплa как с листа c передачей на терминал. Показан результат- данные из терминала сохранены на винт и открыт эл. таблицами, в виде графика.
"Чистый Си" - это как "Евроремонт". Никто не знает, что это такое.
я применяю (и весьма справедливо) термин "честный С" - это С без ардуиновских костылей, которые однотактную операцию (есть конкретные примеры таких операций) превращают в 64- тактную.
я применяю (и весьма справедливо) термин "честный С" - это С без ардуиновских костылей, которые однотактную операцию (есть конкретные примеры таких операций) превращают в 64- тактную.
Ардуиновские костыли позволяют вам абстрагироваться от конкретной модели микроконтроллера, в рамках всего семейства Ардуино (поэтому digitalWrite работает на всех платах одинаково, пусть и одинаково медленно). Плюс простота прошивки. Но главное - эти костыли позволяют вам использовать в своих проектах 90% чужого кода в виде библиотек. Или вы на "чистом Си" (в кавычках - потому что я не могу согласится со справедливостью этого названия, ибо - бред) возьметесь писать клтиенту программу чуть более сложную, чем моргалку светодиода? Проект даталоггера, работающего с сетью и пятью разными датчиками включает в себя до десяти библиотек. Вы-же не дурак, чтобы писать все с нуля? А то, что вы можете генератор импульсов замутить на асме на АТтини ничего вашему клиенту не даст, кроме проблем. Сам спаять не сможет, сам прошить не сможет, в цене не выиграет. В чем цимес?
Или вы на "чистом Си" (в кавычках - потому что я не могу согласится со справедливостью этого названия, ибо - бред)
вот опять вы перевираете - у меня не на "чистом", а на "честном". Да, на "бреде" написано чуть менее 100% профессионального кода. А "чуть менее" написано не на ардуино ide.
Ардуиновские костыли позволяют вам абстрагироваться от конкретной модели микроконтроллера, в рамках всего семейства Ардуино (поэтому digitalWrite работает на всех платах одинаково, пусть и одинаково медленно). Плюс простота прошивки. Но главное - эти костыли позволяют вам использовать в своих проектах 90% чужого кода в виде библиотек.
Костыли нужны инвалидам. Мне они не нужны. Если человек не одноногий, костыли вообще-то мешают.
"семейство" громко сказано. Я и без семейств умею программировать и atmel arm, и stm32, и esp, не говоря уже о atmega и xmega.
Библиотеки для ардуино в большинстве своем чуть сложнее таблицы умножения. Для кого предназначены библиотеки вроде серв и степпера? Ясное дело, что для начинающих, и на бедолаг, у которых 2000 мкс равно 2 с. Я не использую чужие непонятные библиотеки, а при программировании на честном С использую (бывает) фрагменты кода, но обязательно с полным пониманием занимаемых ими ресурсов (периферии - таймеров, портов, прерываний). Зачастую проще написать самому, чем разбираться какой ресурс задействован в какой библиотеке.
Вы-же не дурак, чтобы писать все с нуля?
А ничего, что все профи пишут не на ардуино Ide? ОНи все дураки?
У меня практически все, от atmeg до arm, написано мною. Это мне интересно, и потом я не попаду впросак с каким-нибудь digitalWrite(), который выполняется за 100 тактов вместо 1.
Вы имеете полное право ходить на костылях, а я люблю ходить и даже бегать без костылей. И клиентам предлагаю рабочий продукт, если они хотят точность включения порта 0,1 мкс - примерно такую точность я и дам, а не 6-8 мкс.
Проект даталоггера, работающего с сетью и пятью разными датчиками включает в себя до десяти библиотек.
ну можно и сто библиотек включать, дурное дело нехитрое. А вот как они будут ресурсы делить - вы в курсе? Не проще ли самому написать код для всяких там i2c и spi (один раз) и потом его использовать? Проще конечно, но только для тех, кто умеет. Я умею.
Проект даталоггера, работающего с сетью и пятью разными датчиками включает в себя до десяти библиотек.
ну можно и сто библиотек включать, дурное дело нехитрое. А вот как они будут ресурсы делить - вы в курсе? Не проще ли самому написать код для всяких там i2c и spi (один раз) и потом его использовать? Проще конечно, но только для тех, кто умеет. Я умею.
Странное дело - я тоже умею, но у меня не возникает мысль самому писать код для ds3231, tft-дисплея и как ни странно - для сервы, если существующий меня всем устраивает. Более того - я уверен, что вы лукавите и тоже этот код сами не пишете.
Я-же не заказчик в этой ветке - зачем меня грузить глупостями о "дележе ресурсов"? И писать код никому никогда небыло проще, если код уже написан.
Проект даталоггера, работающего с сетью и пятью разными датчиками включает в себя до десяти библиотек.
ну можно и сто библиотек включать, дурное дело нехитрое. А вот как они будут ресурсы делить - вы в курсе? Не проще ли самому написать код для всяких там i2c и spi (один раз) и потом его использовать? Проще конечно, но только для тех, кто умеет. Я умею.
Конечно аппаратные. Но не plugNplay ведь? Нужно выставлять адреса, у меня в i2c вся обработка пишется в функции прерываниия по завершению, почитайте, например, у DHalt http://easyelectronics.ru/interface-bus-iic-i2c.html
Странное дело - я тоже умею, но у меня не возникает мысль самому писать код для ds3231, tft-дисплея и как ни странно - для сервы, если существующий меня всем устраивает. Более того - я уверен, что вы лукавите и тоже этот код сами не пишете.
Я-же не заказчик в этой ветке - зачем меня грузить глупостями о "дележе ресурсов"? И писать код никому никогда небыло проще, если код уже написан.
ds3231 я не использовал ни разу. Для сервы у меня есть код для 8 серв сразу. А что тут писать? По очереди вызываешь прерывание по таймеру, загружая по очереди переменные из массива - 20 строк кода, зато я уверен, что у меня выдача импульсов на сервы ни с чем ни конфликтует.
И софтовый uart я писал сам. Если умеешь - это несложно, разбираться с конфликтами библиотек сторонних авторов дольше.
Мне не нужно лукавить, если я не пишу код в ардуино (за исключением помощи младей дочке и ответов на вопросы "почему серва дрожит") то я и не использую библиотек. Разделение ресурсов - это не глупость, тем более для такого мелкого мк, как atmega328. Всего-то три таймера.
и как ни странно - для сервы, если существующий меня всем устраивает. Более того - я уверен, что вы лукавите и тоже этот код сами не пишете.
вот я полгода назад для школьного кружка сделал образец, управление сервой, ну чтобы ответить на вопросы "почему моя серва дрыгается", посмотрите, будет очевидно что код я писал сам - потому что он не на ардуине.
http://onkelz.livejournal.com/2243.html
И софтовый uart я писал сам. Если умеешь - это несложно, разбираться с конфликтами библиотек сторонних авторов дольше.
Мне не нужно лукавить, если я не пишу код в ардуино (за исключением помощи младей дочке и ответов на вопросы "почему серва дрожит") то я и не использую библиотек. Разделение ресурсов - это не глупость, тем более для такого мелкого мк, как atmega328. Всего-то три таймера.
С Вами соглашусь
Костыли нужны инвалидам.
"семейство" громко сказано.
Библиотеки для ардуино в большинстве своем чуть сложнее таблицы умножения.
А ничего, что все профи пишут не на ардуино Ide? ОНи все дураки?
У меня практически все, от atmeg до arm, написано мною.
Вы имеете полное право ходить на костылях, а я люблю ходить и даже бегать без костылей. И клиентам предлагаю рабочий продукт, если они хотят точность включения порта 0,1 мкс - примерно такую точность я и дам, а не 6-8 мкс.
Корона не жмёт в ушах? Я вот одного не пойму - ну ок, специалист, не спорю. Но грязью-то зачем идеологию Arduino IDE поливать на этом форуме? В одном месте чешется, что ли? Мне вообще странно непонятен этот момент, если честно. Это похоже на то, как поклонники ASP.NET вовсю чмарят PHP-шников, а те, в ответ - ASP-шников, читаешь эти срачи, и смешно становится - как дети малые.
Каждый инструмент хорош там, для чего он предназначен. Нет ни честного, ни нечестного С - есть один С, который можно применять, а можно - не применять. Который - можно применить с умом, а можно - бездумно. Вы со своим честным С смешиваете тёплое с круглым, ибо то, что предлагает идеология Arduino - к языкам программирования, строго говоря, отношения не имеет, от слова "совсем", понимаете? Это как фреймворк, если вы понимаете, о чём я. Сравнивать фреймворк с языком программирования можно, только сильно-сильно-сильно перекурив кальяна.
Прекращайте.
З.Ы. Безотносительно ваших профессиональных навыков, заметьте. Но постоянно противопоставляя "честный С" и "костыли" - вы сильно теряете в лице, как грамотный специалист, ибо (читай выше).
Мне уже пора беспокоиться?
Пока многое из того, что говорил уважаемый Onkel, мне казалось весьма разумным.
Что- то письма перестали к вам приходить, или ящик забился?
В общем ваша задача решается без проблем, целиком и полностью, 223 килосэмплa как с листа c передачей на
Отличные новости! Спасибо! А вот ящик у меня почему-то пустой:( Совсем пустой. Вообще ни одного письма нет:(
Сейчас напишу с другого.
Отличные новости! Спасибо! А вот ящик у меня почему-то пустой:( Совсем пустой. Вообще ни одного письма нет:(
Сейчас напишу с другого.
Других новостей у меня для вас нет. только отличные.
Повторил пару писем.
Мне уже пора беспокоиться?
Пока многое из того, что говорил уважаемый Onkel, мне казалось весьма разумным.
Тут один местный дурачек Вам по всем сообщениям минусы наставил, как они за Вас бепокоятся и переживают. Ладно меня болваны минусуют, а Вас то за что?