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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 17.05.2020, 13:50   #1
Songrim
Junior Member
 
Регистрация: 30.05.2015
Сообщений: 21
Вес репутации: 100/20
Songrim will become famous soon enoughSongrim will become famous soon enough
По умолчанию PIC18F46K22+ENC28J60

Переделываю прошивку для работы ENC28J60 c AVR-GCC на CCS с этого проекта . В принципе большая часть проекта работает, контроллер пингуется и принимает с компа UDP сообщения, но назад не отправлять хоть ты тресни. Ни с UART, ни как зеркало (отправка назад принятого пакета). Кто может глянуть, в чем проблема? Код отправки и обработки пакетов прилагаю.

Код:
// Ответ на UDP-пакет
void udp_reply(eth_frame_t *frame, unsigned int16 len)
{
   ip_packet_t *ip = (void*)(frame->data);
   udp_packet_t *udp = (void*)(ip->data);
   unsigned int16 temp;

   // Рассчитываем длину всего пакета
   len += sizeof(udp_packet_t);

   // Меняем местами порт отправителя и получателя
   temp = udp->from_port;
   udp->from_port = udp->to_port;
   udp->to_port = temp;
   
   // Длина пакета
   udp->len = htons(len);

   // Рассчитываем контрольную сумму от псевдозаголовка + данных
   // Псевдозаголовок = длина пакета+протокол+IP адреса+нормальный udp-заголовок
   // длину пакета+протокол передаём как начальное значение для
   // расчёта контрольной суммы
   // ip адреса берём из заголовка IP-пакета (udp-пакет - 8)
   udp->cksum = 0;
   udp->cksum = ip_cksum(len + IP_PROTOCOL_UDP,
      (unsigned int8*)udp-8, len+8);
   printf("UDP ->\n\r");
   ip_reply(frame, len);

//При приеме UDP-пакета
void udp_packet(eth_frame_t *frame, unsigned int16 len)
{
    ip_packet_t *ip = (void*)(frame->data);
    udp_packet_t *udp = (void*)(ip->data);
    unsigned int8 *data = udp->data;
    unsigned int8 i, count;

    // Отправляем данные в UART
    for(i = 0; i <= len; ++i)
        uart_write(data[i]);
    delay_ms(10);
    udp_reply(frame, len);   

    // Возвращаем компу, то  что на приходило
    // с момента последнего обмена
    //count = uart_rx_count();
    //if(count)
    //{
        //for(i = 0; i < count; ++i)
            //data[i] = uart_read();
        //udp_reply(frame, count);
    //}
}

void main()
{
   unsigned int16 len;
   eth_frame_t *frame = (void*)net_buf;
   set_tris_a(0b00000000);
   set_tris_b(0b00010001);
   set_tris_c(0b00000000);
   set_tris_d(0b10000000);
   
   port_B_pullups(0xFF);
   port_E_pullups(0xFF);
   
   printf("ENC28J60\n\r");
   // Инициализируем ENC28J60
   enc28j60_init(mac_addr);
   
   //Инициализируем UART
   uart_init();

   enable_interrupts(GLOBAL);
   
   while(TRUE)
   {
      if((len = enc28j60_recv_packet(net_buf, sizeof(net_buf)))) eth_filter(frame, len);
   }
}
Судя по логам в функцию udp_reply входит ну и дальше, но до компа сообщение не доходит. Остальное все работает. И пинг и принимает UDP пакеты с компа.

Может кто работал с этим проектом и может подсказать?
Songrim вне форума   Ответить с цитированием
Старый 17.05.2020, 16:11   #2
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,491
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: PIC18F46K22+ENC28J60

я же уже вроде писал....

sizeof(net_buf)

это у вас в байтах.....
как данные хранятся?

char net_buf [64];

скорее всего sizeof(net_buf) вам вернёт 128....

Последний раз редактировалось SergP01; 17.05.2020 в 16:20.
SergP01 на форуме   Ответить с цитированием
Старый 18.05.2020, 10:20   #3
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 41
Сообщений: 4,890
Вес репутации: 4724/137
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от Songrim Посмотреть сообщение
Переделываю прошивку для работы ENC28J60 c AVR-GCC на CCS с этого проекта . В принципе большая часть проекта работает, контроллер пингуется и принимает с компа UDP сообщения, но назад не отправлять хоть ты тресни.
Эти два компилятора сильно отличаются, я с вторым работал много, про переносимость кода на Си в проект с его использованием - сложно, но можно, обратная переносимость - еще сложнее, особенно при использовании его библиотечных функций. Нужно в каждом конкретном случае проверять работу кода, особенно с указателями.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 18.05.2020, 12:17   #4
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 47
Сообщений: 1,816
Вес репутации: 2531/88
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от SergP01 Посмотреть сообщение
я же уже вроде писал....

sizeof(net_buf)

это у вас в байтах.....
как данные хранятся?

char net_buf [64];

скорее всего sizeof(net_buf) вам вернёт 128....

С чего вдруг?!
DimaS вне форума   Ответить с цитированием
Старый 18.05.2020, 13:19   #5
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,491
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от DimaS Посмотреть сообщение
С чего вдруг?!
ну.... какая организация памяти?
скорее всего чары в шортах хранятся....
а значит- вы получите не количество элементов массива... а его размер в байтах...
в два раза больше
sizeof возвращает байты.... а не количество элементов...
SergP01 на форуме   Ответить с цитированием
Старый 18.05.2020, 14:32   #6
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 47
Сообщений: 1,816
Вес репутации: 2531/88
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от SergP01 Посмотреть сообщение
ну.... какая организация памяти?
скорее всего чары в шортах хранятся....
а значит- вы получите не количество элементов массива... а его размер в байтах...
в два раза больше
sizeof возвращает байты.... а не количество элементов...

Понятно.
Спасибо, я учту на будущее.
Надо спрашивать у других.
DimaS вне форума   Ответить с цитированием
Старый 18.05.2020, 17:43   #7
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 41
Сообщений: 4,890
Вес репутации: 4724/137
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от SergP01 Посмотреть сообщение
я же уже вроде писал....
sizeof(net_buf)
это у вас в байтах.....
как данные хранятся?
char net_buf [64];
скорее всего sizeof(net_buf) вам вернёт 128....
Цитата:
Сообщение от DimaS Посмотреть сообщение
С чего вдруг?!
Типы данных этого компилятора. Чары у него однобайтные.
Миниатюры
CCS data types.png  
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 18.05.2020, 18:29   #8
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,491
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Типы данных этого компилятора. Чары у него однобайтные.
дык.... вот и вопрос переносимости...
логика вроде не меняется.... а одна функция- её меняет....
я жду- 128.... раньше работало... а мне выдают 256
а в курчавых процах чар могут в 32 бита запихнуть..... это какой у него размер будет?
SergP01 на форуме   Ответить с цитированием
Старый 18.05.2020, 19:05   #9
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 41
Сообщений: 4,890
Вес репутации: 4724/137
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от SergP01 Посмотреть сообщение
char net_buf [64];
скорее всего sizeof(net_buf) вам вернёт 128....
Цитата:
Сообщение от SergP01 Посмотреть сообщение
а в курчавых процах чар могут в 32 бита запихнуть..... это какой у него размер будет?
А вы проверьте у себя на компьютере, чтобы не гадать. И ссылку на курчавый проц дайте (на компилятор для него), чтобы люди у вас поучились.
Для CCS компилятора char занимает 1 байт. В вашем случае сложнее - нужно из неправильного ответа с дополнением "а вот если...а на Луне..." получить ответ на вопрос.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 18.05.2020, 19:22   #10
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,491
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от Pridnya Посмотреть сообщение
А вы проверьте у себя на компьютере, чтобы не гадать. И ссылку на курчавый проц дайте (на компилятор для него), чтобы люди у вас поучились.
Для CCS компилятора char занимает 1 байт. В вашем случае сложнее - нужно из неправильного ответа с дополнением "а вот если...а на Луне..." получить ответ на вопрос.
я проверял....
и вы проверте
тут.... коротко...
http://www.c-cpp.ru/books/operator-sizeof

а заодно покажите.... как у вас с организацией памяти в 16 бит.... компилятор чары пакует
SergP01 на форуме   Ответить с цитированием
Старый 18.05.2020, 19:50   #11
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 41
Сообщений: 4,890
Вес репутации: 4724/137
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от SergP01 Посмотреть сообщение
я проверял....
и вы проверте
тут.... коротко...
http://www.c-cpp.ru/books/operator-sizeof

а заодно покажите.... как у вас с организацией памяти в 16 бит.... компилятор чары пакует
Те же 64 байта, один байт - один char.
Код:
int main(int argc, char** argv) {
    
    char net_buf [64];
    int Size = sizeof(net_buf);    
    printf("Size = %d",Size);

    return (EXIT_SUCCESS);
 }
Миниатюры
Размер массива из 64 символов.png  
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 18.05.2020, 20:26   #12
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,318
Вес репутации: 4401/96
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

в коде приложения обычно используют stdint.
в коде ядра обычно используют переопределенные короткие типы аля u8, u16, u32 и.т.д.

использование int, char и.т.д. на мой взгляд исключительно плохая практика - люди на ровном месте усложняют жизнь читающим код.
besogon вне форума   Ответить с цитированием
Старый 18.05.2020, 20:32   #13
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 41
Сообщений: 4,890
Вес репутации: 4724/137
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от besogon Посмотреть сообщение
в коде приложения обычно используют stdint.
в коде ядра обычно используют переопределенные короткие типы аля u8, u16, u32 и.т.д.

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

Последний раз редактировалось Pridnya; 18.05.2020 в 20:37.
Pridnya вне форума   Ответить с цитированием
Старый 18.05.2020, 20:45   #14
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,318
Вес репутации: 4401/96
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Pridnya
Я не понимаю к чему Ваша ссылка.

У Вас есть какие-то возражения?
besogon вне форума   Ответить с цитированием
Старый 18.05.2020, 20:55   #15
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 47
Сообщений: 1,816
Вес репутации: 2531/88
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Типы данных этого компилятора. Чары у него однобайтные.

А бывают не однобайтные?


Цитата:
A char in the C programming language is a data type with the size of exactly one byte
DimaS вне форума   Ответить с цитированием
Старый 18.05.2020, 21:00   #16
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 41
Сообщений: 4,890
Вес репутации: 4724/137
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от besogon Посмотреть сообщение
Pridnya
Я не понимаю к чему Ваша ссылка.
У Вас есть какие-то возражения?
К тому, что есть хелп на конкретный компилятор и общие рекомендации "используйте stdint.h..." vмало помогут автору топика. Не усложняйте, человек и так использует новый PIC18 и старый Ethernet PHY, который работает на 10 мегабитах и имеет свои недостатки. Плюс компилятор он выбрал тот, который стек TCP/IP не поддерживал. Не опытный.
Цитата:
Сообщение от DimaS Посмотреть сообщение
А бывают не однобайтные?
Человек из SPB (хоть бы не писал откуда) утверждал:
Цитата:
Сообщение от SergP01 Посмотреть сообщение
а в курчавых процах чар могут в 32 бита запихнуть..... это какой у него размер будет?
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 18.05.2020 в 21:06.
Pridnya вне форума   Ответить с цитированием
Старый 18.05.2020, 21:04   #17
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,318
Вес репутации: 4401/96
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Pridnya
char всегда однобайтный. и никто другого Вам не говорил - это исключительно Ваши выдумки.

Вам SergP01 говорил про число бит в char.
Число бит в char можно узнать по встроенному в компилятор макросу CHAR_BIT.

для большинства платформ byte имеет размер 8бит.
besogon вне форума   Ответить с цитированием
Старый 18.05.2020, 21:10   #18
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 41
Сообщений: 4,890
Вес репутации: 4724/137
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от besogon Посмотреть сообщение
Pridnya
char всегда однобайтный. и никто другого Вам не говорил - это исключительно Ваши выдумки.

Вам SergP01 говорил про число бит в char.
Число бит в char можно узнать по встроенному в компилятор макросу CHAR_BIT.

для большинства платформ byte имеет размер 8бит.
Так я и отвечал: 1 char = 1байт, в этом конкретном случае.
http://www.microchip.su/showpost.php...2&postcount=11
У SerjP01 код должен вернуть 128: Вы с ним оба этот компилятор не используете и беретесь отвечать "общими советами", а SerjP01 еще и пытается угадывать, но ошибается, вот Осьминог Пауль угадывал хорошо.
Код:
int main(int argc, char** argv) 
{          
char net_buf [64];     
int Size = sizeof(net_buf);         
printf("Size = %d",Size);      
return (EXIT_SUCCESS);  
}
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 18.05.2020 в 21:17.
Pridnya вне форума   Ответить с цитированием
Старый 18.05.2020, 21:21   #19
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,318
Вес репутации: 4401/96
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Стар я стал для этого всего. Наверное не могу вникнуть в проблемы, которые обсуждаются в данной теме.

есть проект, как я понял с него делал автор
http://proiot.ru/blog/posts/2017/10/...udp-ntp-chasy/

он заместо переопределения типов переписывает код, а потом удивляется.

был код со стандартными типами приложения - стало говно с типами CСS, в котором разбираются 3 калеки на весь земной шар.
besogon вне форума   Ответить с цитированием
Старый 18.05.2020, 21:29   #20
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 47
Сообщений: 1,816
Вес репутации: 2531/88
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Человек из SPB (хоть бы не писал откуда) утверждал:

А ты думаешь я просто так написал выше:


Цитата:
Спасибо, я учту на будущее.
Надо спрашивать у других.

Или надо расшифровать что имелось ввиду?


(как в анекдоте про зануду и занудливого).
DimaS вне форума   Ответить с цитированием
Старый 18.05.2020, 21:34   #21
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 41
Сообщений: 4,890
Вес репутации: 4724/137
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от besogon Посмотреть сообщение
Стар я стал для этого всего. Наверное не могу вникнуть в проблемы, которые обсуждаются в данной теме.

есть проект, как я понял с него делал автор
http://proiot.ru/blog/posts/2017/10/...udp-ntp-chasy/

он заместо переопределения типов переписывает код, а потом удивляется.

был код со стандартными типами приложения - стало говно с типами CСS, в котором разбираются 3 калеки на весь земной шар.
Не стар. Автор топика зачем-то создает проект под экзотический компилятор CCS, хотя старый микрочиповский стек был заточен под использование MCC18, можно было его использовать с их же TCP/IP стеком. Если сложно, то можно было оставить как есть - допилить в связке с AVR GCC.

PS: Я похожее пробовал делать много лет назад: PIC24HJ128GP502+ENC28J60. Но затем перешел на микрочиповский компилятор C30.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 18.05.2020, 21:42   #22
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 41
Сообщений: 4,890
Вес репутации: 4724/137
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от DimaS Посмотреть сообщение
А ты думаешь я просто так написал выше:
Или надо расшифровать что имелось ввиду?
(как в анекдоте про зануду и занудливого).
Давай разворачивай.
PS: А почему у тебя межстрочный интервал двойной и ограничения по длине строки? Вот давно это вижу. Я не понял, как у тебя одного так получается.
Миниатюры
Межстрочный интервал.png  
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 18.05.2020 в 22:02.
Pridnya вне форума   Ответить с цитированием
Старый 18.05.2020, 22:19   #23
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,491
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Так я и отвечал: 1 char = 1байт, в этом конкретном случае.
http://www.microchip.su/showpost.php...2&postcount=11
У SerjP01 код должен вернуть 128: Вы с ним оба этот компилятор не используете и беретесь отвечать "общими советами", а SerjP01 еще и пытается угадывать, но ошибается, вот Осьминог Пауль угадывал хорошо.
Код:
int main(int argc, char** argv) 
{          
char net_buf [64];     
int Size = sizeof(net_buf);         
printf("Size = %d",Size);      
return (EXIT_SUCCESS);  
}
ещё раз вопрос повторяю
какой процессор.... память у него какая?

на пальцах....
данные (чар)пакуются так
0xAA
0x00AA
0x000000AA

это для разной организации памяти.....

кстати... и компилятор может по разному считать
поэтому- если нужно число элементов массива- рискованно sizeof применять...


ещё короче.... ежели топикастер вместо sizeof(net_buf)..... ткнёт цифру..... то у него, скорее всего, всё заработает.....

Последний раз редактировалось SergP01; 18.05.2020 в 22:36.
SergP01 на форуме   Ответить с цитированием
Старый 18.05.2020, 22:36   #24
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 47
Сообщений: 1,816
Вес репутации: 2531/88
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Давай разворачивай.

Ты про анекдот?
зануда = которому легче дать, чем обьяснять что тебе этого не хочется.
занудливый = это которму еще надо обяснять почему ты это делаешь

Цитата:
PS: А почему у тебя межстрочный интервал двойной и ограничения по длине строки? Вот давно это вижу. Я не понял, как у тебя одного так получается.
Понятия не имею!
DimaS вне форума   Ответить с цитированием
Старый 18.05.2020, 22:52   #25
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 41
Сообщений: 4,890
Вес репутации: 4724/137
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: PIC18F46K22+ENC28J60

Цитата:
Сообщение от DimaS Посмотреть сообщение
С чего вдруг?!
Цитата:
Сообщение от DimaS Посмотреть сообщение
А ты думаешь я просто так написал выше:
Или надо расшифровать что имелось ввиду?
Я про казус в этой ветке. Не все компилируют на пальцах и пользуются интуицией вместо отладчика.
Цитата:
Сообщение от SergP01 Посмотреть сообщение
поэтому- если нужно число элементов массива- рискованно sizeof применять...

ещё короче.... ежели топикастер вместо sizeof(net_buf)..... ткнёт цифру..... то у него, скорее всего, всё заработает.....
Проще без цифр: размер массива делим на размер первого элемента. Здесь только косяк может быть с не выровненными и выровненными данными, когда в зависимости от настроек компилятора размер массива кратен разрядности системы (элементов 63, а sizeof() выдаст 64, например).
Миниатюры
Количество элементов.png  
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 18.05.2020 в 23:10.
Pridnya вне форума   Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глюк Timer3 в PIC18F46K22 doc321 Продукция MICROCHIP 0 14.03.2012 17:23
ENC28J60 не работает SPI k.evgeny Продукция MICROCHIP 2 01.01.2012 18:57
ENC28J60 Подскажите знающие как решить один непонятный момент west329 Общетехнические вопросы 25 24.02.2009 09:38
Начало работы с ENC28J60 Mario Продукция MICROCHIP 2 14.07.2007 19:18
проблемы с enc28j60 megabyde Продукция MICROCHIP 2 27.04.2007 05:38


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


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