Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Cетевые протоколы и технологии

Cетевые протоколы и технологии TCP/IP стек

Ответ
 
Опции темы Опции просмотра
Старый 08.01.2021, 01:51   #1
yagger
Senior Member
 
Регистрация: 24.02.2008
Сообщений: 133
Вес репутации: 126/50
yagger will become famous soon enoughyagger will become famous soon enough
По умолчанию Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Всех с Рождеством.
Поиски и анализ инфы по сети дал несколько сумбурный результат, посему решил "родить" эту тему. Преследую 2 цели:
- собственно создать рабочий экземпляр (на основе демо-платы, простейшего проекта...)
- разобраться по шагам как ЭТО работает от простого к сложному, от результата к пониманию...


Буду крайне признателен любой помощи в данном направлении.
Основная задача - максимально быстро получить результат, а потом "обрастать" знаниями и расширять диапазон.


Имеется оборудование:
Explorer 16/32, WINC1500 PICtail с платой расширения (PICtail Plus Expansion Board). Дебагер PicKit 4. С ним работается значительно быстрее чем с встроенным дебагером на демо-плате.


Использую на данный момент MPLAB X IDE v5.35, компилятор XC32 (v2.30), Harmony 3.


Предварительная "конечная" цель запустить сие чудо на минимальных затратах, передача файла (скажем текстового) с ПК на микроконтроллер и в обратном направлении, посредством WiFi, используя самый простой пример, любого из уровней стека на процессоре (т.е. используя WINC1500 в bypass режиме).


Те примеры, что нашел в сети, имеют ряд недостатков для понимания, не объясняют некоторые, возникающе по мере работы, вопросы. Помогите разбить задачу на подзадачи практического толка. (задачу "изучите, как устроен TCP" стек, желательно поставить на последнее место, именно потому, что это проще учить и понимать на конкретном рабочем примере)
Надеюсь тема станет интересным обучающим материалом. ))



С чего начать проект? ))) самый простой вопрос для начала.

Последний раз редактировалось yagger; 08.01.2021 в 01:58.
yagger вне форума   Ответить с цитированием
Старый 08.01.2021, 11:27   #2
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

ну... я начал с примера от микрочиповского стека... UDP пакеты который передаёт...
и там остался
для моих целей этого хватило... добавил ещё приём и анализ принятых пакетов..
сам стек не "улучшал"... там всё повязано, поэтому ничего не удалял... просто в конфиге стека отключил не нужные фишки..
сложного ничего нет... открываем сокет и шлём в него данные.. всё остальное( формирование заголовка, чексуммы...) на себя стек берёт...

короче- ничем не отличается от программирования под винды... даже функции так же называются

если под рукой есть программер под винды и будете использовать стек, то он вам всё обьяснит (напишет)

там от железа всё абстрагировано...

ещё мне мне пригодился сетевой снифер, чтобы смотреть как пакеты мои гуляют в сети и собственная прога для отладки, которая шлёт-принимает пакеты на стороне компа...

методом тыка, я обмен по UDP - за неделю сделал... при этом никогда с сетью не работал и из помощников только тырнет...

и самое западло- в поле данных INT переворачивать надо.... т.е. если массив из int передать, а потом принять и прочитать, то старший байт с младшим местами поменятые будут...
я по этим граблям погулял, когда данные с ацп передавал... вот тут снифер и помог- я эту хню увидел, а потом и в инете про это прочитал..

Последний раз редактировалось SergP01; 08.01.2021 в 11:38.
SergP01 вне форума   Ответить с цитированием
Старый 08.01.2021, 18:45   #3
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 57
Сообщений: 1,124
Вес репутации: 2803/84
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Как сами написали : от простого к сложному.

1.Запускаем примеры микрочипа на демоборде .
2.Модернизация и доработка стека под свои задачи.
Для первого пункта все легко находится.
А второй дается только изучением и внедрением в технологию. На втором этапе появляются личные наработки, которыми не всегда готовы делиться.

Да и время у специалистов к сожалению в дефиците.
По конкретным вопросам могу ответить , но только если они мне известны и я уже находил решения.
smart_pic вне форума   Ответить с цитированием
Старый 08.01.2021, 21:47   #4
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,613
Вес репутации: 4968/123
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Давно не изучал тему, стек от микрочипа когда нибудь обзаведется кэшем для arp? Как куда-то идти так сначала резолвит. Даже если только что резолвил. Можно подумать, мак все время меняется.
ampersant вне форума   Ответить с цитированием
Старый 09.01.2021, 09:49   #5
yagger
Senior Member
 
Регистрация: 24.02.2008
Сообщений: 133
Вес репутации: 126/50
yagger will become famous soon enoughyagger will become famous soon enough
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от SergP01 Посмотреть сообщение
сам стек не "улучшал"... там всё повязано, поэтому ничего не удалял... просто в конфиге стека отключил не нужные фишки..
это как раз "важный" пункт для начала


Цитата:
Сообщение от SergP01 Посмотреть сообщение
короче- ничем не отличается от программирования под винды... даже функции так же называются

если под рукой есть программер под винды и будете использовать стек, то он вам всё обьяснит (напишет)
под винды я с стеком тоже никогда не баловался.


Цитата:
Сообщение от SergP01 Посмотреть сообщение
методом тыка, я обмен по UDP - за неделю сделал... при этом никогда с сетью не работал и из помощников только тырнет...
это вдохновляет, и спасибо за СОучастие.
Цитата:
Сообщение от smart_pic Посмотреть сообщение
Как сами написали : от простого к сложному.

1.Запускаем примеры микрочипа на демоборде .
с этого начинал уже раз и споткнулся, именно поэтому и завел тему о помощи неучам, как я. ))


Начну еще раз и при первых же вопросах выложу сюда.
yagger вне форума   Ответить с цитированием
Старый 09.01.2021, 10:24   #6
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

дык.... на чём споткнулся...?

самое простое пример который шлёт UPD пакеты....
надо его запустить и убедиться. что он работает... запустить снифер и посмотреть , что пакеты пошли...
потом. втыкать в него свои данные... по таймеру их отсылать...

дальше освоить приём(светодиодом поморгать по сети)...
SergP01 вне форума   Ответить с цитированием
Старый 09.01.2021, 11:19   #7
alexem
Senior Member
 
Аватар для alexem
 
Регистрация: 08.03.2008
Адрес: Самара
Возраст: 48
Сообщений: 518
Вес репутации: 443/57
alexem is just really nicealexem is just really nicealexem is just really nicealexem is just really nicealexem is just really nice
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32MZ + WINC1500)

Цитата:
Сообщение от yagger Посмотреть сообщение
задачу "изучите, как устроен TCP" стек, желательно поставить на последнее место
А вот это напрасно.
alexem вне форума   Ответить с цитированием
Старый 09.01.2021, 11:33   #8
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

вот , нашёл где стек демонстрирует передачу UDP пакетов... и под себя переделал чутка...

Код:
char buf[20]={".....Privet Medved"};

DWORD mIP=192ul | 168ul<<8ul |0ul<<16ul | 255ul<<24ul; // некоторые Линухи не понимают широковещательного 255.255.255.255

void UDPPerformanceTask(void)
{
	UDP_SOCKET	MySocket;
	NODE_INFO	Remote;


	if(!MACIsLinked())return; // если кабель не подключен




memcpy((BYTE*)&Remote,(BYTE*)&mIP, sizeof(mIP)); //  IP адрес получателя	

MySocket = UDPOpen(44444, &Remote, 55555);//  создаем сокет ...шлём из порта 44444 в порт 55555

	if(MySocket == INVALID_UDP_SOCKET)return; // если трабл с сокетом

	if(!UDPIsPutReady(MySocket))
	{
		UDPClose(MySocket); // сокет не может принять данные
		return;
	}
  UDPPutArray((BYTE*)&buf,20);// кладём данные в пакет

	UDPFlush();// посылаем
	
	// Close the socket so it can be used by other modules
	UDPClose(MySocket);// закрываем сокет
}

#endif //#if defined(STACK_USE_UDP_PERFORMANCE_TEST)
и результат работы

SergP01 вне форума   Ответить с цитированием
Старый 09.01.2021, 11:48   #9
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

как видно- никаких заморочек на уровне хардварной части...
остались только программерские заморочки
даже чек сумму стек сам считает...
SergP01 вне форума   Ответить с цитированием
Старый 09.01.2021, 12:03   #10
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 57
Сообщений: 1,124
Вес репутации: 2803/84
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

освоить передачу по ТСР или передачу UDP пакетов обычно проблем не вызывает.
Берем из примера микрочипа ТСР-UART мост , там все предельно просто. потом добавляем свою обработку принятых пакетов , и получаем работающий вариант.
Это достаточно хорошо работает как на pic1867(97)j60 так и на pic32.
А вот когда начнете делать нормальный веб интерфейс для устройства, вот тут и пойдут проблемы - придется допиливать HTTP сервер и MPFS файловую систему.
Так как у pic18, pic32 нет классической eeprom памяти для хранения настроечных данных, то придется использовать программную память. Предложенные микрочипом методы решают эту проблему , но и создают новые в виде тормозов и расхода памяти.

Короче , если это простенькая задача - то готовые примеры помогают это освоить, а если уровень сложности выше среднего - то только значительная переработка и осмысленное решение задачи.
Потом постороение самой либы тср стека вызывает некоторые проблемы. Проблема заключается в том, что все файлы общие , для всех проектов, и начав править под свои задачи один из файлов - делаем остальные свои проекты неработоспособными.
Короче для начала нужно создать проект , где этой зависимости не будет. Сделав это - лишаемся автоматического конфигурирования при помощи утилит. Но переходим на новый уровень.


файловая система и механизм работы MPFS как в памяти пика , так и во внешней памяти не позволяют раздельно работать ВЕБ программисту дизайнеру и PIC программисту. На простых проектах - все устраивает , а на сложных , когда начинаешь работать командой - проблемы.
smart_pic вне форума   Ответить с цитированием
Старый 09.01.2021, 12:09   #11
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 57
Сообщений: 1,124
Вес репутации: 2803/84
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от SergP01 Посмотреть сообщение
вот , нашёл где стек демонстрирует передачу UDP пакетов... и под себя переделал чутка...

[CODE]char buf[20]={".....Privet Medved"};


MySocket = UDPOpen(44444, &Remote, 55555);// создаем сокет ...шлём из порта 44444 в порт 55555

Пока на таком уровне используем стек - то как уже писал , проблем не возникает. А как только появится задача изменения настроек , конфигурирование под свои задачи - вот тогда и начнется настоящее программирование.
smart_pic вне форума   Ответить с цитированием
Старый 09.01.2021, 12:18   #12
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от smart_pic Посмотреть сообщение
Пока на таком уровне используем стек - то как уже писал , проблем не возникает. А как только появится задача изменения настроек , конфигурирование под свои задачи - вот тогда и начнется настоящее программирование.
ну. дык, топикастер пока и такой уровень поднять не может....

я сейчас с вебмордой бьюсь.... имхо, у микрочипа, она как то странно сделана...

а бьюсь потому, что в веб я невзубногой пока...

Последний раз редактировалось SergP01; 09.01.2021 в 12:31.
SergP01 вне форума   Ответить с цитированием
Старый 09.01.2021, 12:29   #13
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от smart_pic Посмотреть сообщение


файловая система и механизм работы MPFS как в памяти пика , так и во внешней памяти не позволяют раздельно работать ВЕБ программисту дизайнеру и PIC программисту. На простых проектах - все устраивает , а на сложных , когда начинаешь работать командой - проблемы.
это какой проект должен быть?

имхо, есть набор данных, которые веб программер может как угодно по морде распихивать... задача PIC программера их принять или нужные отослать...
это сколько нужно настроечных переменных, чтобы заморочки начинались ?

тогда может проще- одноплатный комп прицепить ?
SergP01 вне форума   Ответить с цитированием
Старый 09.01.2021, 14:00   #14
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 57
Сообщений: 1,124
Вес репутации: 2803/84
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Проекты разные от 100 до 300 с лишним настроечных параметров.


Если взять простой случай мост ТСР-UART.
1.IP контролллера
2.Маска контроллера
3.МАС контроллера
4.DHCP включен или нет
5.Шлюз
6.Адрес сервера
7.Порт сервера
8. Клиент серверное подключение
8.Скорость порта
10.Контроль четности
11. 7,8,9 бит код


Вот реально дернул кусок кода из проекта.
Проект по управлению ADAU1701(1452) с веб интерфейса
и это только переменные, чтобы сделать веб управление ADAU.
к этим переменным еще два таких списка системных настроек .




Код:
struct
    {
        unsigned char    __attribute__ ((aligned(4)))    Fcentr[4][16][8];
        unsigned char    __attribute__ ((aligned(4)))    Qfactor[4][16][8];
        unsigned char    __attribute__ ((aligned(4)))    Boost[4][16][8];
        unsigned char    __attribute__ ((aligned(4)))    Filter_Tipe[4][16];
        unsigned char    __attribute__ ((aligned(4)))    Bypass[4][16];
        unsigned char     __attribute__ ((aligned(4)))    fqaktiv[4][16];                    // показывать или нет точку фильтра на графике

        unsigned char     __attribute__ ((aligned(4)))    Hi_Pass_Tipe[4];
        unsigned char     __attribute__ ((aligned(4)))    Hi_PassBypass[4];
        unsigned char     __attribute__ ((aligned(4)))    Hi_PassFq[4][8];
        unsigned char     __attribute__ ((aligned(4)))    hiactiv[4];                        // показывать или нет обрезной для выбранного выхода

        unsigned char     __attribute__ ((aligned(4)))    Low_Pass_Tipe[4];
        unsigned char     __attribute__ ((aligned(4)))    Low_PassBypass[4];
        unsigned char     __attribute__ ((aligned(4)))    Low_PassFq[4][8];
        unsigned char     __attribute__ ((aligned(4)))    lowactiv[4];                    // показывать или нет обрезной для выбранного выхода

        unsigned char     __attribute__ ((aligned(4)))    fqByPOne[4];                    // включение байпас для выбранного выхода
        unsigned char     __attribute__ ((aligned(4)))    filtrmode[4];                        // ~fqmode~ Режим показа фильтров 8+обрезные или 16 фильтров
        unsigned char     __attribute__ ((aligned(4)))    fqSort[4][40];                    //[~fqSort~] отсортированный список номеров фильтров 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 
        unsigned char     __attribute__ ((aligned(4)))    fqByPAll;                        // включение байпас для всех фильтров
        unsigned char     __attribute__ ((aligned(4)))    fillfq[12];

// раздел INPUT MIXER
        unsigned char     __attribute__ ((aligned(4)))    inp_lev[8];                        // положение входных регуляторов уровня 
        unsigned char     __attribute__ ((aligned(4)))    inpmute[8];                        // mute входного микшера
        unsigned char     __attribute__ ((aligned(4)))    inp_max[8];                        // максимальное положение входных регуляторов уровня 
        unsigned char     __attribute__ ((aligned(4)))    inp_blc[4];                        // сцепка входных регуляторов уровня
        unsigned char     __attribute__ ((aligned(4)))    mixoutA;                        // ~mixoutA~ уровень аттеньюатора после микшера
        unsigned char     __attribute__ ((aligned(4)))    mixoutB;                        // ~mixoutB~ уровень аттеньюатора после микшера
        unsigned char     __attribute__ ((aligned(4)))    phaseA;                            // ~phaseA~ фаза сигнала  после микшера
        unsigned char     __attribute__ ((aligned(4)))    phaseB;                            // ~phaseB~ фаза сигнала  после микшера
        unsigned char     __attribute__ ((aligned(4)))    phantom;                        // ~phantom~ включение фантомного питания микрофона
        unsigned char     __attribute__ ((aligned(4)))    extpan;                            // ~extpan~ включение питания внешней панели
        unsigned char     __attribute__ ((aligned(4)))    fillinp[12];

// раздел MATRIX ROUTING
        unsigned char     __attribute__ ((aligned(4)))    InputA_sel[4];                     // ~inpsA~ Управление селектором для канала А
        unsigned char     __attribute__ ((aligned(4)))    InputA_val[4];                     // ~inpvA~ Значение уровня сигнала канала А на выход
        unsigned char     __attribute__ ((aligned(4)))    InputB_sel[4];                    // ~inpsB~ Управление селектором для канала В
        unsigned char     __attribute__ ((aligned(4)))    InputB_val[4];                    // ~inpvB~ Значение уровня сигнала канала В на выход
        unsigned char     __attribute__ ((aligned(4)))    fillrouting[16];

// раздел OUTPUT VOLUME CONTROL
        unsigned char     __attribute__ ((aligned(4)))    out_lev[4];                        // ~~ положение выходных регуляторов уровня 
        unsigned char     __attribute__ ((aligned(4)))    outmute[4];                        // ~~ mute выходов усилителя
        unsigned char     __attribute__ ((aligned(4)))    out_max[4];                        // ~~ максимальное положение выходных регуляторов уровня 
        unsigned char     __attribute__ ((aligned(4)))    out_blc[4];                        // ~~ сцепка выходных регуляторов уровня
        unsigned char     __attribute__ ((aligned(4)))    outphase[4];                    // ~~ фаза сигнала на выходе
        unsigned char     __attribute__ ((aligned(4)))    out_spd[4];                        // ~~ скорость изменения громкости
        unsigned char     __attribute__ ((aligned(4)))    out_br;                            // ~out_br~ режим выходных усилителей
        unsigned char     __attribute__ ((aligned(4)))    filloutput[4];

// раздел SETUP
        int              __attribute__ ((aligned(4)))    Fan_min_speed;                    // минимальная скорость вентилятора , при которой он работает
        int              __attribute__ ((aligned(4)))    Fan_max_speed;                    // максимальная скорость вентилятора
        unsigned char     __attribute__ ((aligned(4)))    Fan_Controlmode;                // режим работы вентилятора постоянный или по датчику температуры
        int              __attribute__ ((aligned(4)))    Fan_const_speed;                // Значение скорости вентилятора при постоянном включении

        int              __attribute__ ((aligned(4)))    Fan_min_temp_dt1;                // минимальное значение Т датчика 1
        int              __attribute__ ((aligned(4)))    Fan_max_temp_dt1;                // максимальное значение Т датчика 1, в этом диапазоне Т изменяется скорость вентилятора
        int              __attribute__ ((aligned(4)))    Fan_min_temp_dt2;                // минимальное значение Т датчика 2
        int              __attribute__ ((aligned(4)))    Fan_max_temp_dt2;                // максимальное значение Т датчика 2, в этом диапазоне Т изменяется скорость вентилятора
        int              __attribute__ ((aligned(4)))    Fan_min_temp_dt3;                // минимальное значение Т датчика 3
        int              __attribute__ ((aligned(4)))    Fan_max_temp_dt3;                // максимальное значение Т датчика 3, в этом диапазоне Т изменяется скорость вентилятора

        unsigned char     __attribute__ ((aligned(4)))    Fan_step_speed;                    // количество шагов изменения скорости вентилятора 1-9
        unsigned char     __attribute__ ((aligned(4)))    EnableDT1;                        // разрешение анализа датчика 1
        unsigned char     __attribute__ ((aligned(4)))    EnableDT2;                        // разрешение анализа датчика 2
        unsigned char     __attribute__ ((aligned(4)))    EnableDT3;                        // разрешение анализа датчика 3
        unsigned char     __attribute__ ((aligned(4)))    EnableStandby;                    // разрешение анализа датчика 3 в режиме Standby

        unsigned char     __attribute__ ((aligned(4)))    EnableSceneALL;                    // Разрешение запуска сценария по датчикам температуры
        unsigned char     __attribute__ ((aligned(4)))    EnableSceneDT1;                    // Разрешение запуска сценария по датчику температуры 1
        unsigned char     __attribute__ ((aligned(4)))    EnableSceneDT2;                    // Разрешение запуска сценария по датчику температуры 2
        unsigned char     __attribute__ ((aligned(4)))    EnableSceneDT3;                    // Разрешение запуска сценария по датчику температуры 3

        int              __attribute__ ((aligned(4)))    DT1_temp;                        // значение температуры при которой запустится сценарий для датчика 1
        int              __attribute__ ((aligned(4)))    DT2_temp;                        // значение температуры при которой запустится сценарий для датчика 2
        int              __attribute__ ((aligned(4)))    DT3_temp;                        // значение температуры при которой запустится сценарий для датчика 3

        unsigned char     __attribute__ ((aligned(4)))    EnableLevelDT1;                    // снижать громкость при превышении температуры усилителя 1
        unsigned char     __attribute__ ((aligned(4)))    EnableLevelDT2;                    // снижать громкость при превышении температуры усилителя 2
        int              __attribute__ ((aligned(4)))    TempLevelDT1;                    // значение температуры усилителя 1 при которой снижать громкость
        int              __attribute__ ((aligned(4)))    TempLevelDT2;                    // значение температуры усилителя 2 при которой снижать громкость
        int              __attribute__ ((aligned(4)))    LevelDT1;                        // значение уровня громкости при превышении температуры усилителя 1
        int              __attribute__ ((aligned(4)))    LevelDT2;                        // значение уровня громкости при превышении температуры усилителя 

        int              __attribute__ ((aligned(4)))    StepLevelDT1[16];                // расчитанные интервалы температуры для датчика 1
        int              __attribute__ ((aligned(4)))    StepLevelDT2[16];                // расчитанные интервалы температуры для датчика 2
        int              __attribute__ ((aligned(4)))    StepLevelDT3[16];                // расчитанные интервалы температуры для датчика 3
        int              __attribute__ ((aligned(4)))    FanStepLevel[16];                // расчитанные интервалы скорости вращения вентилятора

        unsigned char     __attribute__ ((aligned(4)))    autoOffA;                        // ~autoOffA~ автоматически выключать усилитель при отсутствии сигнала на входе А
        unsigned char     __attribute__ ((aligned(4)))    autoOffB;                        // ~autoOffB~ автоматически выключать усилитель при отсутствии сигнала на входе В
        unsigned char     __attribute__ ((aligned(4)))    levelMinOff;                    // ~LMinOff~ уровень сигнала, ниже которого выключать усилитель
        unsigned char     __attribute__ ((aligned(4)))    timeLevelOff;                    // ~TLOff~  Время после которого отключаем усилитель при отсутствии сигнала
        unsigned char     __attribute__ ((aligned(4)))    AMPShutdown;                    // включен или нет выходной усилитель 
        unsigned char     __attribute__ ((aligned(4)))    autoOnA;                        // ~autoOnA~ автоматически включать усилитель при наличии сигнала на входе А
        unsigned char     __attribute__ ((aligned(4)))    autoOnB;                        // ~autoOnB~ автоматически включать усилитель при наличии сигнала на входе В
        unsigned char     __attribute__ ((aligned(4)))    levelInp;                        // ~levelInp~ уровень выше которого включать усилитель 
        unsigned char     __attribute__ ((aligned(4)))    defOut[4];                        // поведение при нажатии на кнопку ресет    
        unsigned char     __attribute__ ((aligned(4)))    setupXX[12];                    // выравнивание памяти

// раздел PRIORITY SETUP
        unsigned char     __attribute__ ((aligned(4)))    priorOn;                        // включение отключение системы приоритета звука
        unsigned char     __attribute__ ((aligned(4)))    priorCh;                        // канал анализа уровня сигнала А или В (0,1)
        unsigned char     __attribute__ ((aligned(4)))    priorInp;                        // вход активации системы
        unsigned char     __attribute__ ((aligned(4)))    PriorLev;                        // уровень активации системы
        unsigned char     __attribute__ ((aligned(4)))    dspInpA;                        // уровень фейдера на входе ДСП
        unsigned char     __attribute__ ((aligned(4)))    dspInpB;                        // уровень фейдера на входе ДСП
        unsigned char     __attribute__ ((aligned(4)))    priorMixA[4];                    // положение регуляторов матричного микшера канал А
        unsigned char     __attribute__ ((aligned(4)))    priorMixB[4];                    // положение регуляторов матричного микшера канал В
        unsigned char     __attribute__ ((aligned(4)))    priorMuteA[4];                    // Управление селектором для канала А
        unsigned char     __attribute__ ((aligned(4)))    priorMuteB[4];                    // Управление селектором для канала В
        unsigned char     __attribute__ ((aligned(4)))    zoneVal[4];                        // положение регуляторов уровня выходных фейдеров
        unsigned char     __attribute__ ((aligned(4)))    priorvol[8];                    // положение регуляторов уровня входного микшера
        unsigned char     __attribute__ ((aligned(4)))    del_on;                            // задержка включения системы приоритетов
        unsigned char     __attribute__ ((aligned(4)))    del_off;                        // задержка выключения системы приоритетов
        unsigned char     __attribute__ ((aligned(4)))    fillprior[4];                    // выравнивание памяти

// раздел GLOBAL USER PRESETS
        unsigned char     __attribute__ ((aligned(4)))    GUPname[21][16];
        unsigned char     __attribute__ ((aligned(4)))    Filter_Preset_Name[21][16];
        unsigned char     __attribute__ ((aligned(4)))    outname[11][16];
        unsigned char     __attribute__ ((aligned(4)))    inpname[11][16];
        unsigned char     __attribute__ ((aligned(4)))    routname[11][16];
        unsigned char     __attribute__ ((aligned(4)))    priorname[11][16];
        unsigned char     __attribute__ ((aligned(4)))    Filter_Preset_atr[21][4];        // На какие выходы влияет кнопка ресет
        unsigned char     __attribute__ ((aligned(4)))    Rezerv[4096-0xFE4];                //Остаток заполняем для выравнивания по длине страницы 4096

    }inRAM3 ;

// *******************************************************************************************************************
smart_pic вне форума   Ответить с цитированием
Старый 09.01.2021, 14:39   #15
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от smart_pic Посмотреть сообщение
Проекты разные от 100 до 300 с лишним настроечных параметров.


Если взять простой случай мост ТСР-UART.
1.IP контролллера
и чего?

у вас что на каждый байт идёт сразу POST(GET) ?

у вас что - динамическая система, что вы настройки одним массивом передать не можете?

веб программеров пинайте, чтобы они вам массив передавали.... да и получали - тоже...

пакет IP-шный может более 1000 байт слать.... если на сетку- пофиг, то можно динамический обмен массивами сделать с бешеной скоростью...
SergP01 вне форума   Ответить с цитированием
Старый 09.01.2021, 15:46   #16
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 57
Сообщений: 1,124
Вес репутации: 2803/84
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32MZ + WINC1500)

Цитата:
Сообщение от yagger Посмотреть сообщение
Преследую 2 цели:
- собственно создать рабочий экземпляр (на основе демо-платы, простейшего проекта...)
- разобраться по шагам как ЭТО работает от простого к сложному, от результата к пониманию...


самый простой вопрос для начала.
Если собираетесь делать устройство с ВЕБ управлением (читай настройками) то делаете следующие шаги.
1. Учитесь выводить на ВЕБ динамические переменные. Для этого есть в стеке вывод через HTTPPrin_(имя переменной).
2. Осваиваиваете сохранение переменных в памяти и отображение их на веб посредством П1.
3. Осваиваете ввод данных используя методы GET POST.

После этого вы будете уметь выводить на ВЕБ и принимать данные с ВЕБ
4. Пишите логику работы вашего устройства.

При создании любого устройства с ВЕБ управлением проходим через эти 4 простых шага.


Но самый важный это 0 шаг , на котором составляется ТЗ, описывается какие настройки должен иметь девайс и логика его работы. А последующие шаги даются достаточно легко.

Последний раз редактировалось smart_pic; 09.01.2021 в 15:47. Причина: заметил , что перед этим было 1111 сообщение
smart_pic вне форума   Ответить с цитированием
Старый 09.01.2021, 18:35   #17
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 57
Сообщений: 1,124
Вес репутации: 2803/84
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от SergP01 Посмотреть сообщение

у вас что на каждый байт идёт сразу POST(GET) ?

у вас что - динамическая система, что вы настройки одним массивом передать не можете?
Вот пример веб интерфейса управления световым оборудованием по DMX512. Что прикажите при каждом движении фейдера весь массив гнать?
Конечно динамическая система. Внутренняя логика также может двигать фейдеры. Все это отображается на веб в реальном времени.
Выгрузка в (загрузка из ) файл(а) настроек конечно передается одним массивом POSTзапросом MD5. Поэтому и переменные в структуре, что бы все правильно после загрузки улеглось.



Миниатюры
дмх512.JPG  

Последний раз редактировалось smart_pic; 09.01.2021 в 18:40. Причина: добавил скан интерфейса
smart_pic вне форума   Ответить с цитированием
Старый 09.01.2021, 18:57   #18
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от smart_pic Посмотреть сообщение
Вот пример веб интерфейса управления световым оборудованием по DMX512.
это другая песня... и там не 100500 параметров...
изначально говорили про настройки , и страшную структуру привели...
SergP01 вне форума   Ответить с цитированием
Старый 09.01.2021, 19:06   #19
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

когда научитесь передавать пакеты UDP, и будет затык с приёмом- вышлю рабочий тестовый кусок...
я так честного приёма через UDP сокет и не добился.... плюнул, и сделал приём через МАС...
принимает все пакеты, потрошит, а потом по признаку- UDP и нужный порт- можно с полученными данными работать
SergP01 вне форума   Ответить с цитированием
Старый 09.01.2021, 20:20   #20
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 57
Сообщений: 1,124
Вес репутации: 2803/84
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от SergP01 Посмотреть сообщение
это другая песня... и там не 100500 параметров...
изначально говорили про настройки , и страшную структуру привели...
так это примерно одна двадцатая часть интерфейса устройства.
smart_pic вне форума   Ответить с цитированием
Старый 09.01.2021, 20:33   #21
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от smart_pic Посмотреть сообщение
так это примерно одна двадцатая часть интерфейса устройства.
ну...и..?

для того чтобы не было заметно отклика- достаточно 20мс
для эзернета- это вообще - ниочём....
шлите весь буфер раз в 20мс... и получайте...
а веб дезайнеры пускай крысоту наводят...

хуман интерфейс не подразумевает высоких скоростей...
SergP01 вне форума   Ответить с цитированием
Старый 10.01.2021, 10:32   #22
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 7,086
Вес репутации: 6158/182
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от yagger Посмотреть сообщение
Те примеры, что нашел в сети, имеют ряд недостатков для понимания, не объясняют некоторые, возникающе по мере работы, вопросы. Помогите разбить задачу на подзадачи практического толка. (задачу "изучите, как устроен TCP" стек, желательно поставить на последнее место, именно потому, что это проще учить и понимать на конкретном рабочем примере)
Надеюсь тема станет интересным обучающим материалом. ))
С чего начать проект? ))) самый простой вопрос для начала.

очень правильно написали про "0-й шаг", в смысле зачем это всё нужно. Если тупо заменить ком порт (выстрелил и забыл) - то да, UDP пакет наше всё...
Если же планируется отдавать устройство на растерзание и в публичную сеть, да с настройками через веб морду и без индикатора - то сложно становится всё, вообще не в формате вопроса-ответа одной темы (этой) конференции...
несомненным достоинством микрочиповского стека является интеграция файловой системы, но она же станет непреодолимой преградой при копании вглубь.
был тут сильный совет от гуру - забить на микрочип и попробовать что-то полегче, тот же визнет.
Greg вне форума   Ответить с цитированием
Старый 10.01.2021, 10:48   #23
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от Greg Посмотреть сообщение
очень правильно написали про "0-й шаг", в смысле зачем это всё нужно.
иногда это нужно для общего понимания проблемы...
нормальному технарю- всё нужно в руках подержать...

я, в своё время, пытался MFC изучить(понять)... не пошло... а вот QT- легко влетело...

и тут так же- изучение с перспективой -применения.. или- нуегонах...
SergP01 вне форума   Ответить с цитированием
Старый 10.01.2021, 13:25   #24
smart_pic
Senior Member
 
Регистрация: 08.12.2008
Адрес: Ставрополь
Возраст: 57
Сообщений: 1,124
Вес репутации: 2803/84
smart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond reputesmart_pic has a reputation beyond repute
Отправить сообщение для smart_pic с помощью Skype™
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

Цитата:
Сообщение от Greg Посмотреть сообщение
несомненным достоинством микрочиповского стека является интеграция файловой системы, но она же станет непреодолимой преградой при копании вглубь..
Для интеграции со своей файловой системой проблем не особо много . Я например использовал файловую систему, которая была для Радио-86РК для ROM диска, которую я хорошо знал.

для этого нужно подкорректировать несколько функций MPFS:

MPFS_HANDLE MPFSOpen(BYTE* cFile)
BOOL MPFSGetFilenameID(WORD hFatID, BYTE* cName)
BOOL LoadFATRecord(WORD fatID)
количество файлов на диске известно , оно находится по определенному адресу, который легко вычисляется.
Если не нашли файл в основной файловой системе , которая находится в программной памяти пика, начинаем искать в нашей системе. А дальше все работает по номеру файла. если номер файла больше кроичества файлов , хранящихся в памяти пика - работаем с дополнительной файловой системой.
Файловая система оперирует с номером файла, начальным адресом где хранятся данные для нашего файла, длиной файла , именем файла , флагами которые определяют с какими признаками отдавать файл по HTTP. По номеру файла можно извлечь всю остальную инфу.

Фактически , при открытии файла , мы ищем номер этого файла , а потом по номеру файла делаем все остальное.

Вот все . Нет сложностей в файловой системе.
Можно интегрировать любую удобную файловую систему.
Я выбрал свою , которая работает быстро и не затратная по ресурсам.
smart_pic вне форума   Ответить с цитированием
Старый 10.01.2021, 13:54   #25
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 2,404
Вес репутации: 1047/64
SergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud ofSergP01 has much to be proud of
По умолчанию Re: Научите работать с Ethernet и WiFi (PIC32 + WINC1500)

это вы, господа, уже глубоко копать начали...

я так понял, что топикастер пока вообще из стека ничего запустить не может...

кстати
Цитата:
количество файлов на диске известно , оно находится по определенному адресу, который легко вычисляется.
а нах тогда вообще файловая система, если всё известно?

Последний раз редактировалось SergP01; 10.01.2021 в 14:00.
SergP01 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC32 Ethernet Starter Kit Серый К Продукция MICROCHIP 6 26.07.2013 17:49
PIC32 Ethernet Starter Kit - как не убить? slavik01 Продукция MICROCHIP 3 10.11.2010 21:31
PIC32 Ethernet Starter Kit gazpr1bor Продукция MICROCHIP 1 01.09.2010 15:24


Часовой пояс GMT +3, время: 01:14.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot