Ви не увійшли.
В связи с чем сделал такое тестовое приложение:
А вот как оно выполняется:
В связи с чем сделал такое тестовое приложение:
#include <stdio.h>
int serial_fputchar( const char ch, FILE *stream ) { Serial.write( ch ); return ch; }
static FILE *serial_stream = fdevopen( serial_fputchar, NULL );
void setup() {
stdout = serial_stream;
Serial.begin( 115200 );
}
void loop() {
while( !Serial.available() );
unsigned len = 0;
while( Serial.available() ) {
int r = Serial.read();
if( r >= '0' && r <='9' )
len = len * 10 + ( r - '0' );
delay( 1 );
}
Serial.println( len, DEC );
printf( "вычисление... ожидайте...\n" );
unsigned long *prev = new unsigned long [ len ],
*next = new unsigned long [ len ];
int i = 0;
do {
prev[ i ] = millis();
while( prev[ i ] == ( next[ i ] = millis() ) );
if( next[ i ] - prev[ i ] > 1 ) i++;
} while( i < len );
for( i = 0; i < len; i++ ) {
printf( "%lu:%lu:%2u", prev[ i ], next[ i ], i ? prev[ i ] - prev[ i - 1 ] : 0 );
printf( "%s", ( 9 == ( i % 10 ) ) ? "\n" : " | " );
}
printf( "\n" );
delete [] prev;
delete [] next;
}Вот любопытные вещи относительно хронометража в Arduino:
При использовании millis() нужно помнить об одной особенности - millis() "тикает" не равномерно.
Возвращаемое значение увеличивается на единицу каждые 1024 мсек. Затем, когда миллис отстанет на 1 мсек, она "подводится" на единицу, т.е. возвращаемое значение перескакивает через один.
При измерении длительных интервалов это не страшно, но при интервалах в несколько мсек это заметно.
Так же (время системного тика чуть меньше 1mc) имеет место во всех процессорных семействах и всех операционных системах (или средах выполнения). Но это в точности соответствует представлениям реального времени и требованиям стандарта POSIX 1003b для реального времени: "фактические значения временных интервалов может быть сколь угодно больше заказанных, но никогда не может оказаться меньше". Или то же самое: единица шкалы измерения времени (1мс.) может быть меньше, но не смеет быть больше.
В вашем изложении период 1mc фактически соответствует 0,9765625mks. Тогда процесс коррекции millis() строго детерминированный, и можно точно вычислить период, с которым ошибка millis() будет накапливать 1ms и будет подлежать коррекции.
В Linux, как всегда, всё гораздо проще и разнообразней по возможностям...
В конечном счёте, мы просто можем пользоваться консольными утилитами Linux без любых промежуточных приложений.
По крайней мере, это очень полезно для тестирования при непонятных нарушениях работоспособности!
И убеждаемся, что UTF-8 передаётся в оба конца без искажений.
А кроме того, в качестве монитора сериального порта можно использовать ещё одни штатный монитор сериального порта (утилиту), во всех существующих операционных системах, допускающий настройку отображения во всех мыслимых в природе кодировках - это Putty, столь глубоко любимая в Windows.
Эти искажённые символы проявляются как в версии 1.6.1 и 1.8.1
Это глюк именно Arduino IDE.
А в 1.8.5 всё работает корректно.
2. Обмен по вводу-выводу через Serial
Обмен через Serial (USB) в Arduino кода UTF-8 корректно шёл всегда.
А вот отображение кодов UTF-8 в мониторе порта Ardoino IDE до самого последнего времени глючило ... что-то, наверное, связанное с задержками поступления байт.
Выглядит это так:
Эти искажённые символы проявляются как в версии 1.6.1 и 1.8.1
Это глюк именно Arduino IDE.
(3 строки там потому, что считанную с Serial строку скетч ретранслирует обратно в Serial 3-мя разными способами)
спасибо большое, почитаю.
Пишут (не помню где), что если для Arduino вы переводите процессор AVR в энергосберегательный режим, то у вас ещё остаётся контроллер последовательного порта (USB) который и съест на себя 50% общего энергопотребления.
P.S. Если доведёте до ума своё энергосбережение на Arduino, да ещё и померяете токи потребления с энергосбереженим и без, для сравнения, то напишите эти цифры сюда?
(потому как без измерения и сравнения это дело - пустое ... по принципу "я таки думаю, что у меня работает энергосбережение")
Ну, почему же? Есть ещё один момент, когда про переполнение нужно помнить. Если например, нужно отсчитать временной интервал (один!) длиной в два месяца - жопа получится.
В принципе, да.
Но и эта потребность достаточно просто решается.
P.S. Но и такая потребность, как мне кажется, решается без учёта что там и как происходит с переполнением - инкрементруйте переменную uint64_t последовательно на значения интервалов получаемых в loop() ... надолго хватит. ![]()
и тут великий страх перед переполнением...
Как-то объяснить нужно бы всем, в 1000001 раз снова и снова спрашивающих про переполнение, что:
- во всех случаях (95%), когда вас интересуют временные интервалы, нужно просто забыть про любые переполнения...
unsigned long prev, next;
...
if( ( next = millis() ) - prev ) > period ) {
prev = next;
...
}(не забыть, что ключевое здесь слово unsigned)
- и только когда вас каким-то образом вас интересуют значения временных меток millis() нужно вспомнить вот про те 50 суток... например, когда нужно время/дату uptime от времени включения;
- удивляет почему так много и часто уделяется преувеличенного внимания в обсуждениях этому переполнению ... кто никогда до того и не слышал про переполнения вообще.
Подскажите, пожалуйста, какие-нибудь аналоги Netduino или возможно Arduino хорошо дружит с c#? в чем суть - хочу из студии и c# начать изучать эту область.
Совершенно дурная затея:
- C# - совершенно бездарная идея использовать для программирования контроллеров с ограниченными ресурсами. C или C++ - совершенно уместны, и ни в чём не уступают C#;
- все эти Netduino, Arduino и еже с ними - это игрушки, это не компьютеры ... они работают по циклической логике программируемых логических компьютеров (PLC) - это небольшая часть всех возможностей использования компьютеров, а поэтому и используемые для них C, C++, C# ... кто-то ещё использовали Python и Lisp - это жалкие ограниченные подмножества этих языков;
- поэтому и для "изучать C#" это не годится - дурная идея.
И возможно ли у нас купить это или заказывать с амазона...
На AliExpress можно всё купить. Только ждать заказа придётся долго ... от 25 до 60 дней.
Лучше китайцев на сегодня никто не продаёт.
это кому?
Это ТС-ру.
Но и тем, кто пытается на такое отвечать-подсказывать, кто не понимает что такое не лечится, что такие подсказки только продляют агонию... - тоже не лишне задуматься...
ув. stels
надеюсь языкового барьера не возникнет?
Я фуею с этих "митцiв вiд програмування"
Шёл бы лучше своим делом заниматься - быкам хвосты крутить...
Для AVR - LE.
Что это было, папа? ![]()
Предварительные исходные данные
1. длина причала до 400 метров
2. длина судна от 100 до 300 метров
3. дальность работы комплекса до 300 метров
Задача хорошая, интересная...
Только, предполагаю, ещё и на 10% не понимаемая самими заказчиками-постановщиками.
Обсуждать, обсуждать, обсуждать ... и уточнять - но это обычная практика в крупных задачах, ничего здесь нет страшного, приложится.
Удивляет (пока, в 1-м приближении): а кто это вам насоветовал ориентироваться на задачу такой сложности, а главное критической надёжности (точнее даже то, что буржуи называют critical mission) делать на игрушках Arduion?
На вскидку предполагаю, что производительности никакого Arduion здесь будет недостаточно ... но дело здесь даже не в производительности, а в архитектурной ограниченности перелопачиванием в loop(), на манер программируемых логических контроллеров (PLC) - в такой архитектуре не все задачи решаются.
Я уже просто не решаюсь говорить о надёжности... ![]()
Писать программы каждый дурак может.. А вот придумать и дать четкое задание на программирование может далеко не каждый.
А вот придумать и дать четкое задание на программирование может далеко не каждый дурак. ![]()
Я не знаю как и что происходит при выжимании газа..
Правая педаль
![]()
спасибо большое, почитаю.
И мне потом расскажите ![]()
помогите с этим делом
С программированием я советом помогу.
С конструктивом - не могу.
Т.е. Увеличение КПД? И на сколько? На сколько получится? Угол зажигания регулировать желательно, но нужно ли так точно? Гоняться за десятыми процента.
Пустые разговоры.
Анонизм-с ... Онанизм-с ... кому как больше нравится.
Вот так и заканчиваются большинство начинаний ... повязнув в трясине пустых разговоров. ![]()
Раньше, насколько я знаю, это делал центробежный регулятор, и неплохо.
Раньше - это было 1/2 века назад ... и даже раньше. И на бензине 66-м когда-то ездили
И даже в то время то же Bosch производил подобные контроллеры для бесконтактных систем зажигания, когда выбрасывался прерыватель с вот тем центробежным регулятором. Те же ВАЗ-2108 были ограниченной партией с таким зажиганием, которые эксплуатационно заметно превосходили стандартные модели.
Да, на некоторых станциях
ТО, когда видели такой двигатель спрашивали: "А как она ездит?". ![]()
Я не знаком с такими режимами и никогда ничего с ними не делал.
AVR - Power management или как правильно спать
Power saving techniques for microprocessors
2-я ссылка - это, пожалуй, самый обстоятельный в природе разбор темы (англ.)
а считать все равно придется. алгоритм надо же чем то корректировать
Зависимости (когда они будут найдены, проверены и отработаны) у вас должны быть зашиты в массивы (индексируемые от числа оборотов ... нормализованных к целочисленным индексам, естественно).
Массивы должны быть, наверное, 2-х мерными - 1-я размерности по виду используемого топлива.
По ходу работы алгоритм не должен уже ничего читать, он должен только выгребать из массива данные для текущего числа оборотов и корректировать регулируемый параметр (угол опережения).
Единственное, что может считать алгоритм по ходу эксплуатации - это интерполировать точное значение регулирующей функции между узлами, заданными в массиве.
Читайте книжки - всё, что связано с Arduino на самом деле очень просто.
Ещё подсказали ... это не книжка, но Интернет ресурс описательный - Уроки программирования Ардуино
Урок 1. Введение. Общие сведения об Ардуино.
...
Урок 60. Интерфейс RS-485.
Урок 61. Аппаратная реализация интерфейса RS-485. Объединение плат Ардуино в локальную сеть RS-485.
Урок 62. Технология клиент-сервер.
Урок 63. Локальная сеть Ethernet. Модуль ENC28J60, его подключение к плате Ардуино.
я ещё в процессе. считаю. скоро выложу таблицу.
Считать здесь - плохо. Считать - это будет чисто теоретическая и чисто голословная модель ... 1-е приближение.
А кривые этих оптимальных зависимостей давно изучены и опубликованы (лет как 30 назад и далее).