123

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Diletant
Date:
Sun Mar 06 19:09:51 2016 +0000
Revision:
78:0ea9d02b7b46
Parent:
71:7835a18110bd
Child:
80:7eb5dbb80c81
Device&Settings&Protocol&UART update. Not final!!!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Diletant 78:0ea9d02b7b46 1 06.03.2016 Dile Tant
Diletant 78:0ea9d02b7b46 2 Прием команд может быть организован через прерывание: DeviceUART.h/DeviceUART.c.
Diletant 78:0ea9d02b7b46 3 Заполнение программного кольцевого буфера приема в прерывании независимо от чтения из него и выполнения команд в основном цикле.
Diletant 78:0ea9d02b7b46 4
Diletant 71:7835a18110bd 5 23.02.2016 Dile Tant
Diletant 71:7835a18110bd 6 % - деление по модулю (остаток от деления)
Diletant 71:7835a18110bd 7 int length = (start > end) ? (end + InputBufferSize - start) : (end - start);
Diletant 71:7835a18110bd 8 Если (start > end), то length = (end + InputBufferSize - start), иначе length = (end - start)
Diletant 71:7835a18110bd 9 Выздоравливай
Diletant 71:7835a18110bd 10
igor_v 70:9cc252048c59 11 22,02,2013 Апухтин
igor_v 70:9cc252048c59 12 Про очеред запрсов!
igor_v 70:9cc252048c59 13 1 я не знаю, но думаю что не надо, в гороскопе нет я процесов, которые должны чегото ждать, или не так?
igor_v 70:9cc252048c59 14 запросили счетчик вот получай, выставили напряжении вот тебе, => все команды должны быть выполненны сразу, я так думаю.
igor_v 70:9cc252048c59 15 естественно должно быть запрос и сразу ответ, гирос всегда ведомый, если запрос широковешателный, то пускай ждут ответа какоето время
igor_v 70:9cc252048c59 16 лишняя путаница
igor_v 70:9cc252048c59 17
igor_v 70:9cc252048c59 18 чтобы получать сразу несколко команд, можно их хранить в буфере приема (считывать не стирая).
igor_v 70:9cc252048c59 19
igor_v 70:9cc252048c59 20 1. Буфер приема должен иметь возможность содержать очередь запросов. Все запросы должны быть обработаны в порядке приема.
igor_v 70:9cc252048c59 21 2. Новый запрос отменяет отправку ответа на предыдущий запрос, если ответ еще не отправлен. -- ок
igor_v 70:9cc252048c59 22 3. Буфер передачи должен содержать только один ответ одновременно. -- ок
igor_v 70:9cc252048c59 23 4. Буфер приема целесообразно организовать как кольцевой с размером, достаточным для 10 команд.
igor_v 70:9cc252048c59 24 5. Буфер передачи целесообразно организовать как линейный с размером, достаточным для хранения самого длинного ответа.
igor_v 70:9cc252048c59 25
igor_v 70:9cc252048c59 26 по остальному не знаю, наверно очеред на команды не нужна
igor_v 70:9cc252048c59 27
igor_v 70:9cc252048c59 28
igor_v 70:9cc252048c59 29 при этом все данные зранятся в буфере приема (нераскодированные) они уже сделанны, я их сейчас переписываю
igor_v 70:9cc252048c59 30 с тебя просто обработчик команды и потом его мне (строкой) и с задержкой. приболел я
igor_v 70:9cc252048c59 31
igor_v 70:9cc252048c59 32
igor_v 70:9cc252048c59 33 завтра позвоню
igor_v 70:9cc252048c59 34
igor_v 70:9cc252048c59 35 чо значит (b->buffer[(start + 1) % InputBufferSize]) знак %
igor_v 70:9cc252048c59 36 int length = (start > end) ? (end + InputBufferSize - start) : (end - start); и вот это
igor_v 70:9cc252048c59 37
igor_v 70:9cc252048c59 38
igor_v 70:9cc252048c59 39
igor_v 70:9cc252048c59 40
igor_v 70:9cc252048c59 41 мистер Л
Diletant 69:70849751d98e 42 *** Обработка запросов ***
Diletant 69:70849751d98e 43 1. Нужно ли предусматривать возможность программного буфера передачи UART1 содержать ответ более чем на 1 запрос?
Diletant 69:70849751d98e 44 1.1. В старой программе буфер содержит 1 ответ. Запросы поступают с достаточным интервалом для передачи ответа.
Diletant 69:70849751d98e 45 1.2. Для разных запросов могут быть разными: время задержки ответа при широковещательном запросе, период ответа,
Diletant 69:70849751d98e 46 скорость ответа и скорость ожидаемого запроса. Значит нужно хранить не ответы, а запросы, причем для каждого запроса
Diletant 69:70849751d98e 47 нужен свой счетчик задержки или периода.
Diletant 69:70849751d98e 48 Если поступают два широковещательных запроса без достаточного интервала, устанавливать разные задержки ответа?
Diletant 69:70849751d98e 49 В какой момент переключать ожидаемую скорость запроса и скорость ответа?
Diletant 69:70849751d98e 50 Требуется сценарий использования.
Diletant 69:70849751d98e 51 2. Нужно ли предусматривать возможность программного буфера приема UART1 содержать более 1 запроса?
Diletant 69:70849751d98e 52 2.1. Если не нужен ответ на каждый из запросов к прибору, то имеет смысл отправлять эти запросы без интервала ожидания.
Diletant 69:70849751d98e 53 Каждый новый запрос отменяет ответ на предыдущий запрос.
Diletant 69:70849751d98e 54
Diletant 69:70849751d98e 55 Выводы:
Diletant 69:70849751d98e 56 1. Буфер приема должен иметь возможность содержать очередь запросов. Все запросы должны быть обработаны в порядке приема.
Diletant 69:70849751d98e 57 2. Новый запрос отменяет отправку ответа на предыдущий запрос, если ответ еще не отправлен.
Diletant 69:70849751d98e 58 3. Буфер передачи должен содержать только один ответ одновременно.
Diletant 69:70849751d98e 59 4. Буфер приема целесообразно организовать как кольцевой с размером, достаточным для 10 команд.
Diletant 69:70849751d98e 60 5. Буфер передачи целесообразно организовать как линейный с размером, достаточным для хранения самого длинного ответа.