Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 02.04.2013, 22:06  
patriaomuerte
Прописка
 
Регистрация: 10.04.2007
Сообщений: 180
Сказал спасибо: 7
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
patriaomuerte на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

че то как то через жёпу
но ладно...
Реклама:
patriaomuerte вне форума  
Непрочитано 03.04.2013, 18:31  
patriaomuerte
Прописка
 
Регистрация: 10.04.2007
Сообщений: 180
Сказал спасибо: 7
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
patriaomuerte на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

а кто знает что означает:
Warning 201: Assignment inside relational expression?
а то OSA компилится, но не пашет
и варнинг такой
patriaomuerte вне форума  
Непрочитано 03.04.2013, 19:18  
DK
Почётный гражданин KAZUS.RU
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,530
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Сообщение от patriaomuerte Посмотреть сообщение
inside relational
Это где-то в IF написано не "==" а просто "="
Впрочем, может так и должно быть
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 04.04.2013, 10:25  
kobzar
Частый гость
 
Регистрация: 10.06.2005
Сообщений: 30
Сказал спасибо: 13
Сказали Спасибо 22 раз(а) в 9 сообщении(ях)
kobzar на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Сообщение от DK Посмотреть сообщение
Народ, объясните тупому такую штуку:
Есть структура.

Походу, в программе используется выражение типа sizeof(udp_packet_t)
Оно равно 9
Ну не могу я понять. Ведь поле data может иметь любую длину? Т.е. если записываю в него 10 байт, то размер структуры должен получится 8 + 10 байт? А получается 19...
Дальше - хуже... При расчете длины пакета IP и его контрольной суммы опять всплывает лишний байт (на КС данных UDP можно плюнуть, оно не важно)...
Ну вообще-то это стек под АВР был сделан (ув. тов. Lifelover-ром). Там вроде все нормально заводится. А я это пытаюсь в ПИК18 запихнуть.
Сам недавно начал юзать этот стек - знакомые названия Портировал под CCS PICC - реально дошел до обмена UDP-пакетами - дальше пока не нужно. Работает. Конкретно по вопросу - поле data - хранит указатель на блок данных и занимает в структуре столько места. сколько нужно под указатель. Т.е. sizeof дает размер самой структуры... Как-то так И еще - у меня не пошла функция IP_checksum (или как ее...) - немного ее подрихтовал - теперь работает. Если нужно, могу выложить свой рариант.
kobzar вне форума  
Непрочитано 04.04.2013, 15:51  
dsfj
Прописка
 
Регистрация: 19.01.2009
Сообщений: 132
Сказал спасибо: 20
Сказали Спасибо 26 раз(а) в 23 сообщении(ях)
dsfj на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Сообщение от kobzar Посмотреть сообщение
Если нужно, могу выложить свой рариант.
Да, нужно.
dsfj вне форума  
Непрочитано 04.04.2013, 18:00  
kobzar
Частый гость
 
Регистрация: 10.06.2005
Сообщений: 30
Сказал спасибо: 13
Сказали Спасибо 22 раз(а) в 9 сообщении(ях)
kobzar на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Сообщение от dsfj Посмотреть сообщение
Да, нужно.
Код:
// calculate IP checksum
int16 ip_cksum(int32 sum, int8 *buf, size_t len)//size_t
{
//Рассчитываем сумму word'ов блока (big endian)
//(блок выравнивается на word нулем)
   while(len ›= 2)
   {
      sum += ((int16)*buf ‹‹ 8) | *(buf+1);
      buf += 2;
      len -= 2;
   }
//Если длина буфера нечетная, дополняем нулем:
   if(len)
      sum += *((int16)buf) ‹‹ 8;
//Складываем старший и младший word суммы,
//Пока не получим число, влезающее в word.
   while(sum ›› 16)
      sum = (sum & 0xffff) + (sum ›› 16);
//Снова конвертируем в big endian и берем дополнение:
   return ~htons((int16)sum);
}
kobzar вне форума  
Непрочитано 05.04.2013, 08:25  
DK
Почётный гражданин KAZUS.RU
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,530
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Да с КС я проще обошелся... Там в процедурах ip_send и ip_reply и ip_resend просто 1 отнял от длины пакета и КС стала правильно считаться.
АРП тоже нормально работает. DHCP - не работает. TCPIP тоже не работает. Вроде как нет ошибок в пакете, но комп просто не отвечает на пакеты с железки. Вроде все правильно. Флаги, даже опции менял в пакете. Один хрен.

Ща сижу, пытаюсь микрочиповский стек прикрутить. Бесит миллион подключаемых файлов... Где-то накосячил. Перестало собираться.
Цитата:
Configuration settings have been specified for address 0x00300001 in more than one object module. Found in 'Obj-C18-PIC18EX_ENC28\ENC28J60.o', previously found in 'Obj-C18-PIC18EX_ENC28\ARP.o'
Errors : 1
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 05.04.2013, 08:28  
DK
Почётный гражданин KAZUS.RU
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,530
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

kobzar, я не понял, в чем отличие Вашего варианта от оригинала?
Ваш:
Код:
int16 ip_cksum(int32 sum, int8 *buf, size_t len)//size_t
{
   while(len ›= 2)
   {
      sum += ((int16)*buf ‹‹ 8 ) | *(buf+1);
      buf += 2;
      len -= 2;
   }
   if(len)
      sum += *((int16)buf) ‹‹ 8;
   while(sum ›› 16)
      sum = (sum & 0xffff) + (sum ›› 16);
   return ~htons((int16)sum);
}
Оригинал:
Код:
uint16_t ip_cksum(uint32_t sum, uint8_t *buf, size_t len)
{
	while(len ›= 2)
	{
		sum += ((uint16_t)*buf ‹‹ 8 ) | *(buf+1);
		buf += 2;
		len -= 2;
	}
	if(len)
		sum += (uint16_t)*buf ‹‹ 8;
	while(sum ›› 16)
		sum = (sum & 0xffff) + (sum ›› 16);
	return ~htons((uint16_t)sum);
}
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.

Последний раз редактировалось DK; 05.04.2013 в 08:30.
DK вне форума  
Непрочитано 05.04.2013, 08:34  
Flopix
Гражданин KAZUS.RU
 
Регистрация: 31.12.2010
Сообщений: 837
Сказал спасибо: 371
Сказали Спасибо 153 раз(а) в 113 сообщении(ях)
Flopix на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

В этом sum += *((int16)buf) ‹‹ 8;
Flopix вне форума  
Непрочитано 05.04.2013, 09:17  
kobzar
Частый гость
 
Регистрация: 10.06.2005
Сообщений: 30
Сказал спасибо: 13
Сказали Спасибо 22 раз(а) в 9 сообщении(ях)
kobzar на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Сообщение от Flopix Посмотреть сообщение
В этом sum += *((int16)buf) ‹‹ 8;
Так точно
kobzar вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
i2c+ccs pic Gladkih Микроконтроллеры, АЦП, память и т.д 9 18.04.2016 22:17
PIC BASIC PRO Compiler 2.47 dosikus Proteus, KiCAD и другие ECAD 27 05.12.2009 05:48
изучение IAR AVR C compiler granel Микроконтроллеры, АЦП, память и т.д 0 10.10.2008 20:45
PIC C Compiler PCWH458 sergxxx Микроконтроллеры, АЦП, память и т.д 9 23.09.2008 18:25
Не включается дебаггер в CCS C Compiler BigMazzi Микроконтроллеры, АЦП, память и т.д 4 19.09.2008 13:34


Часовой пояс GMT +4, время: 10:25.


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