Jump to content

    
syoma

Простой протокол для UART на 8051 чтобы послать/принять 10 переменных

Recommended Posts

2 hours ago, Arlleex said:

А у ТС с памятью напряг (с ПЗУ, а учитывая это, предполагаю, с ОЗУ еще хуже дела).

Народ, какой буфер? Это 8051-ый - у меня от силы 500 байт ПЗУ, да пара байт ОЗУ на это дело дело осталось. Да и то в стеке. 

Наверное, не буду много придумывать - первый байт 0x80, как идентификатор начала пакета, да и все. А остальные байты буду в 7 бит ограничивать.

Share this post


Link to post
Share on other sites
24 минуты назад, syoma сказал:

Народ, какой буфер? Это 8051-ый - у меня от силы 500 байт ПЗУ, да пара байт ОЗУ на это дело дело осталось. Да и то в стеке. 

Неужто программа из десятка строк не влезет в 500 байт???  :unknw:

Share this post


Link to post
Share on other sites
2 hours ago, jcxz said:

Неужто программа из десятка строк не влезет в 500 байт???  :unknw:

Надеюсь, что влезет, конечно.

Но десятком строк точно не ограничится - пока полазил по коду, оказалось, что не все переменные так легко достать. Это тоже надо будет переделывать.

Share this post


Link to post
Share on other sites

Уж всяко в 500 байтов можно засунуть обработчик запроса чтения памяти с произвольного адреса произвольной длины и передачу ответа.

Share this post


Link to post
Share on other sites

для передачи 10 байт = 80 бит, без всяких протоколов можно 6 старших бит отвести под "адрес", 2 младших под данные и с диким оверхэдом по количеству передаваемых данных (в 4 раза) слать по два бита в байте, но зато каждый отдельный байт получается вполне "самодостаточным" без каких-либо протоколов.

для передачи массива до 16 байт: for (char i = 0; i < 16*4; i++) uart_send((i<<2) | ((data[i>>4]>>((i<<1)&6)) & 3));

для приёма data[rxbyte>>4] = data[rxbyte>>4] & (~(3 << ((rxbyte>>1)&6))) | ((rxbyte&3) << ((rxbyte>>1)&6));

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.