123
Fork of LG by
develop.txt@78:0ea9d02b7b46, 2016-03-06 (annotated)
- 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?
User | Revision | Line number | New 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. Буфер передачи целесообразно организовать как линейный с размером, достаточным для хранения самого длинного ответа. |