Умный Дом по Ethernet
Re: Умный Дом по Ethernet
нет не BUFFER_SIZE а IO_SIZE вы его оставили 13 или меняли
Re: Умный Дом по Ethernet
писал 14. и adc6, adc7 не видно.
Последний раз редактировалось ellab 14 июн 2013, 17:23, всего редактировалось 1 раз.
Re: Умный Дом по Ethernet
Попробую. Ребенка из садика заберу и будем пробовать. Спасибо вам.
Re: Умный Дом по Ethernet
Это то, о чем я вчера писал, я укоротил до минимума названия и убрал вывод версии прошивки, правда я еще изменил цвет надписей, но еле вписался чтоб все влезло.ellab писал(а):писал 14. и adc6, adc7 не видно.
Re: Умный Дом по Ethernet
я думаю что дело сдесь не в размере буфера а в размере tcp пакета сейчас гляну
Re: Умный Дом по Ethernet
добрый день после правки кода страница приобрела вид
правлено
нужно изменить вот это if ( pos < 1024) в вашем варианте сдесь было 500 т е как только длинна будет равна 500 байт буфер перестанет увеличиваться и сколько бы вы не писали BUFFER_SIZE длинна пакета данных будет 500 байт все что больше усекается пробуйте если что пишите
правлено
и сдесь#define name 30
char *n[name] = {"garage", "kvartira", "dom", "BASSEIN", "VANNAY", "JDHDHF NF", "FKVEMGUVM", ".FVH0", "AFFGGG1", "882888","FIGA","6GRTGRTYR", "JTYTHH7", ".0THBHFJ","JHTHTFB7", "RGVHTR.0" "VANNAY", "JDHDHF NF", "FKVEMGUVM", ".FVH0", "AFFGGG1", "882888","FIGA","6GRTGRTYR", "JTYTHH7", ".0THBHFJ","JHTHTFB7", "MAGADEVISE","AB-LOG.RU"};
#define BUFFER_SIZE 1024
в кратце мало увеличить BUFFER_SIZE кроме пожирания памяти это ничего не даст// fill in tcp data at position pos. pos=0 means start of
// tcp data. Returns the position at which the string after
// this string could be filled.
uint16_t fill_tcp_data_p(uint8_t *buf,uint16_t pos, const prog_char *progmem_s)
{
char c;
// fill in tcp data at position pos
//
// with no options the data starts after the checksum + 2 more bytes (urgent ptr)
while ((c = pgm_read_byte(progmem_s++))) {
buf[TCP_CHECKSUM_L_P+3+pos]=c;
if ( pos < 1024)
pos++;
}
return(pos);
}
// fill a binary string of len data into the tcp packet
uint16_t fill_tcp_data_len(uint8_t *buf,uint16_t pos, const uint8_t *s, uint8_t len)
// fill in tcp data at position pos
//
// with no options the data starts after the checksum + 2 more bytes (urgent ptr)
while (len) {
buf[TCP_CHECKSUM_L_P+3+pos]=*s;
if ( pos < 1024)
pos++;
s++;
len--;
}
return(pos);
}{
нужно изменить вот это if ( pos < 1024) в вашем варианте сдесь было 500 т е как только длинна будет равна 500 байт буфер перестанет увеличиваться и сколько бы вы не писали BUFFER_SIZE длинна пакета данных будет 500 байт все что больше усекается пробуйте если что пишите
можете вернуть все назадЭто то, о чем я вчера писал, я укоротил до минимума названия и убрал вывод версии прошивки, правда я еще изменил цвет надписей, но еле вписался чтоб все влезло.
Re: Умный Дом по Ethernet
а у меня следующий вопрос возник к уважаемым Гуру и энтузиастам:
adc6, adc7 железно работают только как АЦП? или из них всё-таки можно сделать ещё 2 полноценных контакта? если можно, как это реализовать?
adc6, adc7 железно работают только как АЦП? или из них всё-таки можно сделать ещё 2 полноценных контакта? если можно, как это реализовать?
Re: Умный Дом по Ethernet
Кажется только АЦП.Dron писал(а):а у меня следующий вопрос возник к уважаемым Гуру и энтузиастам:
adc6, adc7 железно работают только как АЦП? или из них всё-таки можно сделать ещё 2 полноценных контакта? если можно, как это реализовать?
Re: Умный Дом по Ethernet
кстати, ещё идея для экономии места в вэб-данных (3 байта на строку):
вместо <br>на каждой строке -- один раз в начале вывода написать <pre>, закрывать этот тэг не нужно. и для переноса строки просто выводить символ переноса строки.
пример:
ps: под виндой получится экономия всего 2 байта на строку, будьте внимательны =-) винда переносит строку 2мя байтами
вместо <br>на каждой строке -- один раз в начале вывода написать <pre>, закрывать этот тэг не нужно. и для переноса строки просто выводить символ переноса строки.
пример:
Код: Выделить всё
plen=fill_tcp_data_p(buf,plen,PSTR("<pre><a href=/"));
plen=fill_tcp_data(buf,plen,password);
plen=fill_tcp_data_p(buf,plen,PSTR("/?pt=..>..</a>
"));
...
[code]plen=fill_tcp_data_p(buf,plen,PSTR("<a href=/"));
plen=fill_tcp_data(buf,plen,password);
plen=fill_tcp_data_p(buf,plen,PSTR("/?pt=..>..</a>
"));
Re: Умный Дом по Ethernet
это да страница которую я привел выше занимает (вдумайтесь)1024 байта-1кб гиганская цифра и печатает только названия портов и это только размер данных , размер самого пакета еще боьшекстати, ещё идея для экономии места в вэб-данных
Re: Умный Дом по Ethernet
а место в RAM'е для переменных/констант и стэка останется?alexsis_76 писал(а):это да страница которую я привел выше занимает (вдумайтесь)1024 байта-1кб гиганская цифра и печатает только названия портов и это только размер данных , размер самого пакета еще боьшекстати, ещё идея для экономии места в вэб-данных
Re: Умный Дом по Ethernet
да вроде работает
сам стэк находится в памяти программ кстати константы типа uint8_t myip[4] = {192,168,0,14}; лучше размещать там же используя PROGMEM объясню почему при прошивке это все записывается во флеш память а при инициализации копируется в озу и остается там никому не нужной пока контроллер работает таким образом строка существует в двух местах , так не проще ли загружать ее из памяти программ сразу не копируя в озу
сам стэк находится в памяти программ кстати константы типа uint8_t myip[4] = {192,168,0,14}; лучше размещать там же используя PROGMEM объясню почему при прошивке это все записывается во флеш память а при инициализации копируется в озу и остается там никому не нужной пока контроллер работает таким образом строка существует в двух местах , так не проще ли загружать ее из памяти программ сразу не копируя в озу
Re: Умный Дом по Ethernet
Вы, видимо, электронщик? Тогда Вам простительно. А вот про константы во флэше абсолютно с Вами согласен.alexsis_76 писал(а):да вроде работает
сам стэк находится в памяти программ кстати константы типа uint8_t myip[4] = {192,168,0,14}; лучше размещать там же используя
...
Re: Умный Дом по Ethernet
Ваше утверждение о том, что "сам стэк находится в памяти программ"alexsis_76 писал(а):чтоТогда Вам простительно
Re: Умный Дом по Ethernet
а где он находитсясам стэк находится в памяти программ"
Re: Умный Дом по Ethernet
взято отсюда "http://ru.wikipedia.org/wiki/Стек"alexsis_76 писал(а):а где он находитсясам стэк находится в памяти программ"
стек — непрерывная область памяти, адресуемая специальными регистрами [..]. До использования стека он должен быть инициализирован так, чтобы регистры [...] указывали на область реальной оперативной памяти (стек в ПЗУ, естественно, работать не может).
Re: Умный Дом по Ethernet
все что Вы говорите верно для больших компьютеров для микроконтроллеров все немного по другому оперативки там мало 2K Bytes Internal SRAM (ATmega48PA/88PA/168PA/328P) atmega328 имеет всего 2к поэтому инструкции загружаются из памяти программ и сразу выполняются
http://www.gaw.ru/html.cgi/txt/doc/micr ... 28/1_2.htm
подумайте хватит ли 2к для одновременной загрузки програмного кода и переменных вотВ процессе выполнения одной инструкции следующая предварительно считывается из памяти программ.позволяет
http://www.gaw.ru/html.cgi/txt/doc/micr ... 28/1_2.htm
я и не говорил что он там работает я говорил что он там находится(хранится)стек в ПЗУ, естественно, работать не может