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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 18.02.2013, 17:17   #76
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,299
Вес репутации: 4442/102
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: не будет работать!

Цитата:
Сообщение от AlexKid Посмотреть сообщение
Это не мой пример, а пример с микрочипа я здесь ничего не менял. Поэтому и возник такой вопрос.
.data это буфер для обслуживания любых данных конкретного сокета.
а чтобы не плодить буферы, его поделили в данном примере на 2 буфера. Первый в твоем примере должен был закончиться на адресе 5, чтобы с 6 байта начать уже следующие данные. Как верно указывает Vanizma конечно же ты его можешь выбрать и другого размера, но конкретно в твоем примере у тебя там стояла цифра 6 - т.е. ты ограничен длинной имени в 4 буквы. Если сделать более универсальный вариант то указывать можно более длинные имена, но тогда под буфер данных останется меньше места. Вся либа на компромиссах.
ampersant вне форума   Ответить с цитированием
Старый 18.02.2013, 17:17   #77
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: не будет работать!

Цитата:
Сообщение от AlexKid Посмотреть сообщение
Это не мой пример, а пример с микрочипа я здесь ничего не менял. Поэтому и возник такой вопрос.
все понятно
Цитата:
while(curHTTP.byteCount)
{
// Read a form field name
if(HTTPReadPostName(curHTTP.data, 6) != HTTP_READ_OK)
goto ConfigFailure;

// Read a form field value
if(HTTPReadPostValue(curHTTP.data + 6, sizeof(curHTTP.data)-6-2) != HTTP_READ_OK)
goto ConfigFailure;

// Parse the value that was read
if(!strcmppgm2ram((char*)curHTTP.data, (ROM char*)"ip"))
{// Read new static IP Address
if(!StringToIPAddress(curHTTP.data+6, &newAppConfig.MyIPAddr))
goto ConfigFailure;

newAppConfig.DefaultIPAddr.Val = newAppConfig.MyIPAddr.Val;
}
else if(!strcmppgm2ram((char*)curHTTP.data, (ROM char*)"gw"))
{// Read new gateway address
if(!StringToIPAddress(curHTTP.data+6, &newAppConfig.MyGateway))
goto ConfigFailure;
}
else if(!strcmppgm2ram((char*)curHTTP.data, (ROM char*)"sub"))
{// Read new static subnet
if(!StringToIPAddress(curHTTP.data+6, &newAppConfig.MyMask))
goto ConfigFailure;

newAppConfig.DefaultMask.Val = newAppConfig.MyMask.Val;
}
else if(!strcmppgm2ram((char*)curHTTP.data, (ROM char*)"dns1"))
{// Read new primary DNS server
if(!StringToIPAddress(curHTTP.data+6, &newAppConfig.PrimaryDNSServer))
goto ConfigFailure;
}
else if(!strcmppgm2ram((char*)curHTTP.data, (ROM char*)"dns2"))
{// Read new secondary DNS server
if(!StringToIPAddress(curHTTP.data+6, &newAppConfig.SecondaryDNSServer))
goto ConfigFailure;
}
тупо читают вначале имя, предполагая что оно не более 6-ти символов
затем читают значение в HTTPdata, начиная с curHTTP.data + 6
потом сверяют имена,
естественно, значение параметра находится начиная с curHTTP.data + 6

Итого, при такой конструкции да, длина имени не может быть больше 4-х символов (нули еще).
Никто не мешает заменить 6 на ... сколько угодно, чтобы только все влезло в HTTPdata
Цитата:
if(HTTPReadPostName(curHTTP.data, 12) != HTTP_READ_OK)
goto ConfigFailure;

// Read a form field value
if(HTTPReadPostValue(curHTTP.data + 12, sizeof(curHTTP.data)-12-2) != HTTP_READ_OK)
goto ConfigFailure;
...
Опять-же я озаю парное чтение... тогда всегда знаешь что значение параметра лежит после его имени и отделено от него \0
__________________

Vanizma вне форума   Ответить с цитированием
Старый 18.02.2013, 17:30   #78
AlexKid
Senior Member
 
Регистрация: 27.02.2007
Сообщений: 133
Вес репутации: 142/42
AlexKid will become famous soon enoughAlexKid will become famous soon enough
По умолчанию Re: Нужна помощь с TCP/IP

Не понял.
У меня в примере :
Код:
    // Read all browser POST data
    while(curHTTP.byteCount)
    {
        // Read a form field name
        if(HTTPReadPostName(curHTTP.data, 32) != HTTP_READ_OK)
            goto ConfigFailure;
            
        // Read a form field value
        if(HTTPReadPostValue(curHTTP.data + 6, sizeof(curHTTP.data)-6-2) != HTTP_READ_OK)
            goto ConfigFailure;
            
        // Parse the value that was read
        if(!strcmppgm2ram((char*)curHTTP.data, (ROM char*)"ip"))
        {// Read new static IP Address
            if(!StringToIPAddress(curHTTP.data+6, &newAppConfig.MyIPAddr))
                goto ConfigFailure;
                
            newAppConfig.DefaultIPAddr.Val = newAppConfig.MyIPAddr.Val;
        }
т.е. если ничего не менять, то переменные могут быть до 32 байт?
Код:
 if(HTTPReadPostName(curHTTP.data, 32) != HTTP_READ_OK)
правильно?
AlexKid вне форума   Ответить с цитированием
Старый 18.02.2013, 17:41   #79
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Нужна помощь с TCP/IP

насколько помню, там 2 нуля в конце еще... т.е 30 всего можно.
могу ошибаться
__________________

Vanizma вне форума   Ответить с цитированием
Старый 18.02.2013, 17:49   #80
AlexKid
Senior Member
 
Регистрация: 27.02.2007
Сообщений: 133
Вес репутации: 142/42
AlexKid will become famous soon enoughAlexKid will become famous soon enough
По умолчанию Re: Нужна помощь с TCP/IP

Так.
А почему тогда
Код:
    // Read a form field value
        if(HTTPReadPostValue(curHTTP.data + 6, sizeof(curHTTP.data)-6-2) != HTTP_READ_OK)
            goto ConfigFailure;
значения переменной должны начинаться с curHTTP.data+32.
Правильно?
AlexKid вне форума   Ответить с цитированием
Старый 18.02.2013, 18:46   #81
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,299
Вес репутации: 4442/102
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: Нужна помощь с TCP/IP

Цитата:
Сообщение от AlexKid Посмотреть сообщение
Так.
А почему тогда
Код:
    // Read a form field value
        if(HTTPReadPostValue(curHTTP.data + 6, sizeof(curHTTP.data)-6-2) != HTTP_READ_OK)
            goto ConfigFailure;
значения переменной должны начинаться с curHTTP.data+32.
Правильно?
очень на лажу похоже. Пока не доказано обратное.
ampersant вне форума   Ответить с цитированием
Старый 19.02.2013, 13:36   #82
AlexKid
Senior Member
 
Регистрация: 27.02.2007
Сообщений: 133
Вес репутации: 142/42
AlexKid will become famous soon enoughAlexKid will become famous soon enough
По умолчанию Re: Нужна помощь с TCP/IP

Свои переменные решил разместить в памяти программ.
Возникла проблема как этой переменной присвоить значение по умолчанию.

Объявление значения по умолчанию:
Код:
#define    MY_DEFAULT_MONITORING_URL        "http://MySite.ru/index.php"        // переменная "murl"
Переменная:
Код:
ROM BYTE MonitoringURL[20];
В обработке callback функции:
Код:
void HTTPPrint_monitoring_url(void)
{
    BYTE tmpString[20];
    strcpyram2pgm(MonitoringURL, MY_DEFAULT_MONITORING_URL);
    strcpypgm2ram(tmpString, MonitoringURL);
    TCPPutString(sktHTTP, tmpString);
    return;
}
Помогите переменной MonitoringURL присвоить значение MY_DEFAULT_MONITORING_URL.
Если сделать вот так
Код:
void HTTPPrint_monitoring_url(void)
{
    BYTE tmpString[20];
     strcpypgm2ram(tmpString, MY_DEFAULT_MONITORING_URL);
     TCPPutString(sktHTTP, tmpString);
    return;
}
то все прекрасно отображается.

применять функцию strcpypgm тоже пробовал.
AlexKid вне форума   Ответить с цитированием
Старый 19.02.2013, 14:14   #83
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Нужна помощь с TCP/IP

Цитата:
Сообщение от AlexKid Посмотреть сообщение
Свои переменные решил разместить в памяти программ.
Возникла проблема как этой переменной присвоить значение по умолчанию.

Объявление значения по умолчанию:
Код:
#define    MY_DEFAULT_MONITORING_URL        "http://MySite.ru/index.php"        // переменная "murl"
Переменная:
Код:
ROM BYTE MonitoringURL[20];
В обработке callback функции:
Код:
void HTTPPrint_monitoring_url(void)
{
    BYTE tmpString[20];
    strcpyram2pgm(MonitoringURL, MY_DEFAULT_MONITORING_URL);
    strcpypgm2ram(tmpString, MonitoringURL);
    TCPPutString(sktHTTP, tmpString);
    return;
}
Помогите переменной MonitoringURL присвоить значение MY_DEFAULT_MONITORING_URL.
Если сделать вот так
Код:
void HTTPPrint_monitoring_url(void)
{
    BYTE tmpString[20];
     strcpypgm2ram(tmpString, MY_DEFAULT_MONITORING_URL);
     TCPPutString(sktHTTP, tmpString);
    return;
}
то все прекрасно отображается.

применять функцию strcpypgm тоже пробовал.
как ты собрался менять ROM переменную?

если хочешь писать флешь потом, то объявляй...
Цитата:
ROM BYTE MonitoringURL[20]="http://MySite.ru/index.php"
еще лучше положить по адресу определенному
__________________

Vanizma вне форума   Ответить с цитированием
Старый 19.02.2013, 14:23   #84
AlexKid
Senior Member
 
Регистрация: 27.02.2007
Сообщений: 133
Вес репутации: 142/42
AlexKid will become famous soon enoughAlexKid will become famous soon enough
По умолчанию Re: Нужна помощь с TCP/IP

ROM переменная никак не меняется?
Юзая готовый пример по TCP Stack, для моих переменных не хватает памяти в области данных (надеюсь правильно написал).
Хочу сделать переменные в памяти программ. Но наверное чего то не дочитал.
Подскажите ПЛЗ.
AlexKid вне форума   Ответить с цитированием
Старый 19.02.2013, 16:01   #85
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Нужна помощь с TCP/IP

Цитата:
Сообщение от AlexKid Посмотреть сообщение
ROM переменная никак не меняется?
Юзая готовый пример по TCP Stack, для моих переменных не хватает памяти в области данных (надеюсь правильно написал).
Хочу сделать переменные в памяти программ. Но наверное чего то не дочитал.
Подскажите ПЛЗ.
читай в даташитах и мануалах микрочипа про программирование флешь.
там не все так просто
__________________

Vanizma вне форума   Ответить с цитированием
Старый 19.02.2013, 16:41   #86
AlexKid
Senior Member
 
Регистрация: 27.02.2007
Сообщений: 133
Вес репутации: 142/42
AlexKid will become famous soon enoughAlexKid will become famous soon enough
По умолчанию Re: Нужна помощь с TCP/IP

Альтернатива есть?
AlexKid вне форума   Ответить с цитированием
Старый 19.02.2013, 17:06   #87
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,299
Вес репутации: 4442/102
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: Нужна помощь с TCP/IP

Цитата:
Сообщение от Vanizma Посмотреть сообщение
читай в даташитах и мануалах микрочипа про программирование флешь.
там не все так просто
вот же беда то, а с этим то что? Опять я что-то не заметил? Всё гораздо хуже и не должно работать, а оно работает?
ampersant вне форума   Ответить с цитированием
Старый 19.02.2013, 17:07   #88
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,299
Вес репутации: 4442/102
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: Нужна помощь с TCP/IP

Цитата:
Сообщение от AlexKid Посмотреть сообщение
Альтернатива есть?
ты бы указал камень и компилятор, глядишь я бы тебе насыпал код.
А так, настройки можно как я уже писал ранее, хранить везде где оно может только храниться, вплоть до соседнего камня с EEPROM.
ampersant вне форума   Ответить с цитированием
Старый 19.02.2013, 17:08   #89
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Нужна помощь с TCP/IP

Цитата:
Сообщение от ampersant Посмотреть сообщение
вот же беда то, а с этим то что? Опять я что-то не заметил? Всё гораздо хуже и не должно работать, а оно работает?
не, просто после попытки strcpyram2pgm(MonitoringURL, MY_DEFAULT_MONITORING_URL);
подумал что могут проблемы возникнуть
__________________

Vanizma вне форума   Ответить с цитированием
Старый 19.02.2013, 17:17   #90
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Нужна помощь с TCP/IP

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

Vanizma вне форума   Ответить с цитированием
Старый 19.02.2013, 17:23   #91
AlexKid
Senior Member
 
Регистрация: 27.02.2007
Сообщений: 133
Вес репутации: 142/42
AlexKid will become famous soon enoughAlexKid will become famous soon enough
По умолчанию Re: Нужна помощь с TCP/IP

Цитата:
Сообщение от Vanizma Посмотреть сообщение
лучше на аудиокассете, как в спектруме

Компилятор MPLABC18 железо PICDN2_ETH97(с 97j60)
Писать за меня ничего не надо. Нужно только помочь.
Давно хотел научиться работать с памятью программ.
AlexKid вне форума   Ответить с цитированием
Старый 19.02.2013, 17:56   #92
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,299
Вес репутации: 4442/102
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: Нужна помощь с TCP/IP

Цитата:
Сообщение от Vanizma Посмотреть сообщение
лучше на аудиокассете, как в спектруме
я ещё перфокарты/ленты застал сильно. Кстати ФСУ1500 достаточно быстро читало, 1.5кБ/сек. В них конфиг можно было скальпелем наковырять.
ampersant вне форума   Ответить с цитированием
Старый 20.02.2013, 11:58   #93
AlexKid
Senior Member
 
Регистрация: 27.02.2007
Сообщений: 133
Вес репутации: 142/42
AlexKid will become famous soon enoughAlexKid will become famous soon enough
По умолчанию Re: Нужна помощь с TCP/IP

ampersant,так как на счет примера записи в память программ?
AlexKid вне форума   Ответить с цитированием
Старый 20.02.2013, 12:04   #94
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Нужна помощь с TCP/IP

Цитата:
Сообщение от AlexKid Посмотреть сообщение
ampersant,так как на счет примера записи в память программ?
Код:
BYTE WritePGMRaw(DWORD Address, BYTE* buff)
{
	BYTE cnt;
	//стираем страницу по адресу 
	TBLPTR = Address;
	EECON1bits.WREN = 1;
	EECON1bits.FREE = 1;
	cnt = INTCON;
	INTCONbits.GIEH = 0;
	_asm
		movlw	0x55
		movwf	EECON2, ACCESS
		movlw	0xAA
		movwf	EECON2, ACCESS
		bsf		EECON1, 1, ACCESS	//WR
	_endasm
	Nop();
	while (EECON1bits.WR) ClrWdt();
	EECON1bits.WREN = 0;
	INTCON = cnt;
	//Записываем блок данных 64 байта начиная с адреса UtcADDR
	TBLPTR = Address;
	for(cnt = 0; cnt < 64; cnt++)
	{
		TABLAT = buff[cnt];
		_asm TBLWTPOSTINC _endasm
	}
	TBLPTR = Address;
	cnt = INTCON;
	INTCONbits.GIEH = 0;
	EECON1bits.FREE = 0;
	EECON1bits.WREN = 1;
	_asm
		movlw	0x55
		movwf	EECON2, ACCESS
		movlw	0xAA
		movwf	EECON2, ACCESS
		bsf		EECON1, 1, ACCESS	//WR
	_endasm
	while (EECON1bits.WR) ClrWdt();
	EECON1bits.WREN = 0;
	INTCON = cnt;
	return(memcmppgm2ram((BYTE*)buff, (const ROM BYTE*)Address,64));
}
__________________

Vanizma вне форума   Ответить с цитированием
Старый 20.02.2013, 12:12   #95
AlexKid
Senior Member
 
Регистрация: 27.02.2007
Сообщений: 133
Вес репутации: 142/42
AlexKid will become famous soon enoughAlexKid will become famous soon enough
По умолчанию Re: Нужна помощь с TCP/IP

ух....
AlexKid вне форума   Ответить с цитированием
Старый 20.02.2013, 14:12   #96
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,299
Вес репутации: 4442/102
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: Нужна помощь с TCP/IP

Цитата:
Сообщение от AlexKid Посмотреть сообщение
ух....
Под хитечем потому что, потому и молчу. Но камень совпадает по типу 18F67J60
Код:
#pragma psect const=myconst

/*
typedef struct __attribute__((__packed__)) _APP_CONFIG 
{
    IP_ADDR        MyIPAddr;
    IP_ADDR        MyMask;
    IP_ADDR        MyGateway;
    IP_ADDR        PrimaryDNSServer;
    IP_ADDR        SecondaryDNSServer;
    IP_ADDR        DefaultIPAddr;
    IP_ADDR        DefaultMask;
    BYTE        NetBIOSName[15];
    struct
    {
        unsigned char : 6;
        unsigned char bIsDHCPEnabled : 1;
        unsigned char bInConfigMode : 1;
    } Flags;
    MAC_ADDR    MyMACAddr;
    BYTE        ServerIP;                   // только последний октет IP сервера
    BYTE        SUM;                        // контрольная сумма структуры
} APP_CONFIG;

*/
const BYTE const myIPconfig[1024]=0;

void write_ip(APP_CONFIG * cfg)
{
   
 BYTE i,SUM=67;    
 BYTE length = sizeof(APP_CONFIG);
    for(i=0;i<length-1;i++)
    {
        SUM+= ((BYTE*)cfg)[i];
    
  
    }
    
    cfg->SUM = SUM;
    
  //  flash_erase((const char*)&myIPconfig);
    flash_write((const unsigned char *)cfg, length, ( far unsigned char * )&myIPconfig);
    
    
    
}

BYTE read_ip(void)
{
 BYTE i,SUM=67;    
 BYTE length = sizeof(APP_CONFIG);
    for(i=0;i<length-1;i++)
    {
        SUM+= ((const BYTE*)&myIPconfig)[i];
 
    }
    if( ((const APP_CONFIG*)myIPconfig)->SUM==SUM)
    {
        
        memcpy( (BYTE*)&AppConfig,(const BYTE*)&myIPconfig,length);
        return 1; // прочитано
   
    }
    return 0; // не прочитано
}
только ещё в линкере в глобальных доп опциях добавить -L -pmyconst=1000h
ampersant вне форума   Ответить с цитированием
Старый 20.02.2013, 16:55   #97
AlexKid
Senior Member
 
Регистрация: 27.02.2007
Сообщений: 133
Вес репутации: 142/42
AlexKid will become famous soon enoughAlexKid will become famous soon enough
По умолчанию Re: Нужна помощь с TCP/IP

Нашел готовые процедуры в MPLABC18
Код:
void WriteBlockFlash(unsigned long startaddr, unsigned char num_blocks, unsigned char *flash_array)
{
unsigned char write_byte=0,flag=0;
DWORD_VAL flash_addr;
        
        startaddr /=  FLASH_WRITE_BLOCK ;    //Allign the starting address block
        startaddr *= FLASH_WRITE_BLOCK ;
        
        flash_addr.Val = startaddr;
        
        while(num_blocks--)
        {
                TBLPTRU = flash_addr.byte.UB;                        //Load the address to Address pointer registers
                TBLPTRH = flash_addr.byte.HB;    
                TBLPTRL    = flash_addr.byte.LB;
                
                write_byte = FLASH_WRITE_BLOCK;
                while(write_byte--)
                {
                    TABLAT = *(flash_array++);
                    _asm  TBLWTPOSTINC     _endasm
                
                }    

                TBLPTRU = flash_addr.byte.UB;                        //Load the address to Address pointer registers
                TBLPTRH = flash_addr.byte.HB;    
                TBLPTRL    = flash_addr.byte.LB;
              //*********** Flash write sequence ***********************************
              EECON1bits.WREN = 1;
              if(INTCONbits.GIE)
              {
                INTCONbits.GIE = 0;
                flag=1;
              }          
              EECON2 = 0x55;
              EECON2 = 0xAA;
              EECON1bits.WR =1;
              EECON1bits.WREN = 0 ; 
              if(flag)
              {
                INTCONbits.GIE = 1;    
                flag=0;
              }
      
             flash_addr.Val = flash_addr.Val + FLASH_WRITE_BLOCK;                                    //increment to one block of 64 bytes
        }
        
}
Но почему то она вешает контроллер.
AlexKid вне форума   Ответить с цитированием
Старый 20.02.2013, 17:02   #98
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Возраст: 38
Сообщений: 4,444
Вес репутации: 4370/120
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: Нужна помощь с TCP/IP

Цитата:
Сообщение от AlexKid Посмотреть сообщение
Нашел готовые процедуры в MPLABC18

Но почему то она вешает контроллер.
И ещё, хорошо бы было признаться: "я паскалист и в си не очень".
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 20.02.2013, 17:10   #99
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/119
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Нужна помощь с TCP/IP

Цитата:
Сообщение от Pridnya Посмотреть сообщение
И ещё, хорошо бы было признаться: "я паскалист и в си не очень".
подловил
__________________

Vanizma вне форума   Ответить с цитированием
Старый 20.02.2013, 17:22   #100
AlexKid
Senior Member
 
Регистрация: 27.02.2007
Сообщений: 133
Вес репутации: 142/42
AlexKid will become famous soon enoughAlexKid will become famous soon enough
По умолчанию Re: Нужна помощь с TCP/IP

Что так сильно заметно?
AlexKid вне форума   Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по asm для dsPIC hubble Продукция MICROCHIP 17 09.02.2012 23:17
Нужна помощь с BUGGY piter Продукция MICROCHIP 2 25.07.2011 12:55
Нужна помощь!!! MDD File System FSIO simnov Вопросы начинающих 1 29.05.2011 01:01
Нужна помощь в Proteus`е italic Общетехнические вопросы 2 25.03.2008 14:49
Нужна помощь в решении вопросса! (в тему и не в тему) Noname1024 Общетехнические вопросы 31 19.12.2007 15:30


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


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