Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Nefreemen
2016-08-20 13:52:24

Гы  big_smile . Поскольку по мере возможности ковыряю ARM (STM32) то везде вместо  АВР писал АРМ, поэтому извините big_smile.

Nefreemen
2016-08-20 12:24:07

Ну вот "опять за рыбу деньги". Вы хотите что бы я принимал дискретность выполнения последовательности за "многопоточность"? И еще раз, без организации одновременного (непрерывного) параллельного хотя бы одного потока, процесса ( на аппаратном уровне, а архитектура АVR это не позволяет ) это все г...
Если идет две или три параллельные дороги и Вы будете переходить с одной на другую и при этом идти только вперед то это вовсе не значит что Вы пройдете все три дороги одновременно, неужели не понятно? В тот момент когда Вы будете находится на первой дороге на второй  будем "яма" (произойдет событие) а вернувшись через uint8_t non_stop_program3(uint16_t span) на нее Вы это событие уже не увидите. И для того что бы создать видимость присутствия на обоих дорогах Ваше uint16_t span должно стремится к 0. Что практически опять же не возможно а тем более при увеличении количества дорог  lol. Ограниченное количество прерываний (как внешних так и внутренних и Ваш принципиальный отказ вообще их использовать) AVR сводит на нет всю затею, тем более wiring не дает возможность работы напрямую с чтением и сбросом флагов прерываний (чего то в Ваше коде ASMa я не видел, который присутствует почти во всех библиотеках как Вы выразились "старого стиля" big_smile ). И называть хорошие добротные библиотеки "старым стилем" это один из библейских грехов smile .  Тем более доказывать что "изобретенный самокат" (еще раз, возможно, код и хорош и идея оригинальна, хотя не нова, но пользы 0 ) вместо давно известного велосипеда lol это круто, просто из "сарая" не всем видно lol .

qwone
2016-08-20 11:09:25

Что бы гнуть ложку , надо поверить что Нет никакой ложки.
Ну вот структура дающая "псевдомногопоточность". Но ведь вы не увидете , потому что вы сказали в 8 битовой архитектуре АРМа (без ДМА и пр.) без "оси" пытаться создать "псевдомногопоточность"  lol . "Пупок" в АРМа не развяжется?

uint8_t non_stop_program1(uint16_t span) {
  static uint32_t future = 0;
  if (millis()<future) return 0;
  future += span;
  return 1;
}
uint8_t non_stop_program2(uint16_t span) {
  static uint32_t future = 0;
  if (millis()<future) return 0;
  future += span;
  return 1;
}
uint8_t non_stop_program3(uint16_t span) {
  static uint32_t future = 0;
  if (millis()<future) return 0;
  future += span;
  return 1;
}
void setup() {
  Serial.begin(9600);
}
void loop() {
  if (non_stop_program1(500))  {
// Здесь вы организовываете вывод на экран. Вызывается раз в 0.5 сек
    Serial.println("knok");
 }
  if (non_stop_program2(200))  {
// Здесь вы организовываете ввод с клавиатуры. Вызывается раз в 0.2 сек
  }
  if (non_stop_program3(100))  {
// Здесь сама работа устройства не зависимая от вашего ввода и показа на экран. Вызывается раз в 0.1 сек(может быть по желанию другим)
   }
}
 
Nefreemen
2016-08-20 10:54:49
qwone пише:

"День мы сидим, другой день сидим, а на третий день Орлиный Глаз заметил, что у сарая нет одной стены."
А для тех кто сидит в сарае повторю. Старые библиотеки и старый стиль программирования тут не работает. Здесь немного другой принцип.

Угу тут все сидят не то что в сарае а в танке smile , и я в том числе...Вроде не видел "этот немного другой принцип" который по Вашему мнению должен создать видимость "одновременного" (по крайней мере поочередного опроса) выполнения каких то "структур" какого то "структурированного кода" lol . Ржу не могу lol держите меня трое,  в 8 битовой архитектуре АРМа (без ДМА и пр.) без "оси" и на wiring (а значит без доступа к адресному пространству ОЗУ и флэш) пытаться создать "псевдомногопоточность"  lol . "Пупок" в АРМа не развяжется? И еще раз, без обработчика аппаратного прерывания все это только теоретические изыскания и 0 практического применения.

qwone
2016-08-19 22:57:13

"День мы сидим, другой день сидим, а на третий день Орлиный Глаз заметил, что у сарая нет одной стены."
А для тех кто сидит в сарае повторю. Старые библиотеки и старый стиль программирования тут не работает. Здесь немного другой принцип.

Nefreemen
2016-08-19 22:23:02

Нет слов...бля, бля.... Ну кто ни будь, скажите  qwone что без обработчика прерывания его код  ( за исключением хорошего оформления) яйца выеденного не стоит  sad . Он (код) сам  по себе работать возможно и работает ( возможно прекрасно) но вставить его в другой код, он будет "тупить" или вызывать такое  раздражение (словами не передать), проверил, опыт есть smile работы с энкодером. Вообще то ТС не плохо было прежде чем изобретать "велосипед" посмотреть код библиотеки для энкодера и анотацию к ней lol

Green
2016-08-16 20:32:12

Мне проще. Я знаю.)))

Green
2016-08-16 19:56:38

Жаль что не у всех энкодеры. Как и маленькие хитрости. А варианты всегда есть. С одной кнопкой можно и кодом морзе разговаривать. Всего лишь только выучить нужно...

qwone
2016-08-16 18:59:52

С использование энкодера и маленькой хитрости, можно вообще обойтись без длиного нажатия.

Green
2016-08-16 15:06:56

Мм, neural network... Хорошо бы! Но у нас по старинке. Ещё порядка +10 строк.))

NoName
2016-08-16 14:07:04

Green CODE:

loop()
{
  delay(1);
  if (KeyExe())
    counter++;
}

bool KeyExe()
{
  static bool key_pressed;
  static uint8_t debounce_timer;
  
  if (key_pressed != !digitalRead(KEY)) {
    key_pressed = !key_pressed;
    debounce_timer = DEBOUNCE_TIME;
  }
  else if (debounce_timer && !--debounce_timer && key_pressed)
    return true;
  return false;
}

неплохой пример, но не хватает neural network, для определения, нажатие короткое или длинное  )

Green
2016-08-15 14:26:04

Я где то тут давал пример для кнопки. Обычное нажатие, минимум-минимор. Для Вашего случая додумаете сами.

qwone
2016-08-14 10:59:11

Ну да. Я шизофенией не страдаю. Как знаю, как думаю, так и пишу. Или у вас ваши мысли по алгоритму и ваш код различаются. Хотя если у вас нет кода, тогда и разницы нет. Логично.

Green
2016-08-14 10:13:48

Да уж. Ход Ваших мыслей такой же как и Ваш "рабочий" код.

qwone
2016-08-14 09:32:59
Green пише:

Ох и любит народ из простого делать сложное. Прям, тащатся от собственной заумности!
Обхожусь без millis-ов. Короткое нажатие определяю в момент отжатия, длинное - по продолжительности нажатия, отжатие не волнует.

Ну да. Сказал бы прямо. Для трепа на форуме вам рабочий код не надо. Мол обхожусь без него.

Підвал форуму