Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
08.04.2011, 13:36
|
|
Прохожий
Регистрация: 23.04.2010
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопросы ENC28J60
Сообщение от borysik
|
Кому надо могу дать разводку в лайауте. И схему рабочую в протеусе.
|
Дайте пожалуйста плату в лайоуте
|
|
|
|
15.05.2011, 18:46
|
|
Гражданин KAZUS.RU
Регистрация: 29.06.2006
Сообщений: 638
Сказал спасибо: 37
Сказали Спасибо 56 раз(а) в 41 сообщении(ях)
|
Re: Вопросы ENC28J60
подскажите как послать с enc28j60 команду ping на пк или другую такую же enc28j60
|
|
|
|
16.05.2011, 09:26
|
|
Вид на жительство
Регистрация: 30.12.2006
Адрес: Junktown
Сообщений: 300
Сказал спасибо: 164
Сказали Спасибо 171 раз(а) в 59 сообщении(ях)
|
Re: Вопросы ENC28J60
Сообщение от AndreiVV
|
подскажите как послать с enc28j60 команду ping на пк или другую такую же enc28j60
|
Пинг - это ICMP запрос по указанному IP адресу.
вам нужно сформировать этот запрос, и отправить пакет, потом запустить таймер, и ждать ответ. Если придет ICMP ответ, сравнить то что пришло, с тем что отправляли. Если совпадает, значит пинг прошел. Если ответ не пришел вовремя, значит пакет потерян
в общем, разбирайте структуру ICMP сообщений
Сам запрос может быть примерно так:
Код:
|
extern void send_icmp_request(uint8_t *dest_ip, uint8_t *dest_mac, uint8_t *buf,
uint16_t sequence_num, uint8_t *ping_msg, uint8_t msg_len){
uint8_t i;
uint16_t ck;
// заповняємо поля пакета
// ethernet header
set_eth(buf, dest_mac, ETHTYPE_IP_V);
set_ip(buf, dest_ip, IP_PROTO_ICMP_V, (msg_len + 8));
// END OF IP HEADER
// заповняємо секцію ІР даних
// START ICMP HEADER
buf[ICMP_TYPE_P] = ICMP_TYPE_ECHOREQUEST_V;
// type
buf[ICMP_TYPE_P + 1] = 0x00;
//checksum = 0
buf[ICMP_CHECKSUM_P] = 0x00;
buf[ICMP_CHECKSUM_P + 1] = 0x00;
//
buf[ICMP_ID_H_P] = 0x55;
buf[ICMP_ID_L_P] = 0x55;
//
buf[ICMP_SEQ_H_P] = (uint8_t)(sequence_num ›› 8);
buf[ICMP_SEQ_L_P] = (uint8_t)(sequence_num & 0xFF);
i = 0;
while (i ‹ msg_len){
buf[ICMP_MSG_P + i] = *(ping_msg + i);
i++;
}
//
ck=checksum(&buf[ICMP_TYPE_P], (msg_len + 8),0);
buf[ICMP_CHECKSUM_P]=ck ›› 8;
buf[ICMP_CHECKSUM_P+1]=ck& 0xff;
enc28j60PacketSend(8 + IP_HEADER_LEN + ETH_HEADER_LEN + msg_len, buf);
} |
__________________
Всегда стремись к недоступному
|
|
|
|
16.05.2011, 13:06
|
|
Прописка
Регистрация: 17.10.2006
Сообщений: 147
Сказал спасибо: 2
Сказали Спасибо 22 раз(а) в 11 сообщении(ях)
|
Re: Вопросы ENC28J60
|
|
|
Эти 8 пользователя(ей) сказали Спасибо di_halt за это сообщение:
|
|
|
16.05.2011, 13:11
|
|
Прописка
Регистрация: 17.10.2006
Сообщений: 147
Сказал спасибо: 2
Сказали Спасибо 22 раз(а) в 11 сообщении(ях)
|
Re: Вопросы ENC28J60
Вот еще, до кучи:
Вебсервер на Tiny2313 от того же товарища. Чисто ради лулзов, т.к. ни на что больше места там уже почти не осталось
|
|
|
Сказали "Спасибо" di_halt
|
|
|
16.05.2011, 14:48
|
|
Частый гость
Регистрация: 01.07.2005
Сообщений: 14
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Вопросы ENC28J60
Сначала посылаем arp запрос, если ответили можно запускать пинг, если нет то пинг можно не запускать пинг т.к данный узел в сети отсутствует
|
|
|
|
16.05.2011, 20:20
|
|
Гражданин KAZUS.RU
Регистрация: 29.06.2006
Сообщений: 638
Сказал спасибо: 37
Сказали Спасибо 56 раз(а) в 41 сообщении(ях)
|
Re: Вопросы ENC28J60
Сообщение от rear
|
Пинг - это ICMP запрос по указанному IP адресу.
вам нужно сформировать этот запрос, и отправить пакет, потом запустить таймер
|
то есть не важно что отсылать?
|
|
|
|
17.05.2011, 02:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 15.07.2009
Адрес: San Jose, USA
Сообщений: 927
Сказал спасибо: 11
Сказали Спасибо 228 раз(а) в 166 сообщении(ях)
|
Re: Вопросы ENC28J60
Сообщение от artist
|
Сначала посылаем arp запрос, если ответили можно запускать пинг, если нет то пинг можно не запускать пинг т.к данный узел в сети отсутствует
|
Красиво, но к сожалению, неверно. arp касается лишь локальной сети и дальше default gateway не уходит, а пинговать можно хоть Африку, хоть яндекс.
Соответственно, если адрес назначения в пакете не является адресом локальной подсетки, то посылается такой пакет, в том числе и пинг, на default gateway.
|
|
|
|
17.05.2011, 03:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 15.07.2009
Адрес: San Jose, USA
Сообщений: 927
Сказал спасибо: 11
Сказали Спасибо 228 раз(а) в 166 сообщении(ях)
|
Re: Вопросы ENC28J60
Сообщение от AndreiVV
|
то есть не важно что отсылать?
|
Смотря в каком смысле. Пинг, вообще-то, имеет определённый формат и его надо выдержать. То, что не определяется форматом (длина пакета например) можно делать как б-г на душу положит, хотя есть риск что не все системы отнесутся к этому благосклонно.
|
|
|
|
17.05.2011, 12:40
|
|
Частый гость
Регистрация: 01.07.2005
Сообщений: 14
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Вопросы ENC28J60
Обычно подобные устройства работают в прнделах локальной сети,а чтобы достучаться до гейтвея опять нужно посылать arp запро,мас то узнать как то надо, а что касаетсчя пинга то тут лучше всего посмотреть например
wiresharkом как и куда комп отсылает пакеты и что получает в ответ.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:03.
|
|