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

Вернуться   Форум Микро-Чип > Своими руками

Своими руками Завершенные и текущие проекты, хард & софт

Ответ
 
Опции темы Опции просмотра
Старый 11.10.2010, 07:36   #1
Stanson
Senior Member
 
Регистрация: 11.10.2010
Сообщений: 255
Вес репутации: 674/33
Stanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to behold
По умолчанию Ethernet за 3 копейки без ENC

Была задачка, сделать реально копеечные устройства, которые могли бы
плеваться в ethernet пакетиками с собранной с датчиков информацией.

IgorPlugUDP - не интересно совсем, там пакет заранее готовый шлётся, с единственным байтом. Да и AVR там нужен здоровенный, ибо маленьких на 20МIPS нету.
FPGA тоже неинтересно.

Ставить ENC28J60 для таких вещей - глупость.
Пришлось придумать как слать ethernet пакеты прямо из PIC'а

Собственно, задачка решена, всё оказалось проще простого, кварц на 10 МГц + PIC18F1320 + 74AC86 + резистор 100 ом + трансформатор на колечке + RJ45 мама.
Упрощённая схема (только сеть) - в аттаче.

Софтом генерируются NLP, чтобы линк загорелся.
Софтом же генерируется фрейм - EUSART включается на 10МГц тактовой и
несложным кодом, который плотно упихивает байты в TXREG, туда отправляется весь ethernet фрейм. В общем, 10Base-T на передачу - чтобы с датчиков по UDP слать инфу - просто чудесно.

Сигнал на выходе - изумительный, как в учебнике. чистенький и правильный.

Но есть одна проблема - пакеты теряются. В принципе, это не важно, потому как даже потеря половины пакетов некритична в данном применении, но хотелось бы понять, почему это происходит.

Сам пакет с FCS и пр. - правильный, иначе сыпались бы ошибки. Но ошибок нет ни единой, за сутки работы. Просто сетевуха или свитч (в зависимости от того, куда воткнуто - я кучу устройств перепробовал - все одинаково себя ведут) не принимает пакет периодически. Пакет есть, хороший, но принимать его всякие устройства отказываются.

Я грешил и на кварц, и на трансформатор, да на всё что угодно. По 100 раз проверил, перечитал 802.3 - не помогает. Пакеты всё равно теряются.

Может ли быть, что режим HSPLL генератора даёт не частоту кварца умноженную на 4, а слегка меньше или больше?

Или, может быть 10Base-T Half Duplex требует помимо Normal Link Pulse и собственно фрейма ещё какие-то сигналы, чтобы на пустой линии принимать пакеты?

Если вылечить этот единственный косяк - то будет весьма дешёвое ethernet-решение, которым не только всякую температуру можно будет собирать, но и чего-нибудь быстро меняющееся или требующее гарантированной доставки пактетов.

Собственно код:

Код:
/***************************************************************************                         
 *   Copyright (C) 2009 by Stanson                                         *                         
 *   GPL v3 code, read COPYING file                                        *                         
 *                                                                         *                         
 * Ethernet 10BASE-T protocol                                              *                         
 *                                                                         *                         
 * Bit time 100 ns                                                         *                         
 *                                                                         *                         
 * Logical 0 - Hi to Low                                                   *                         
 * Logical 1 - Low to Hi                                                   *                         
 *                                                                         *                         
 * Ethernet packet structure                                               *                         
 *                                                                         *                         
 * [     Preamble    ]  7 bytes 0x55                                       *                         
 * [       SFD       ]  1 byte 0xD5 Start of Frame Delimiter               *                         
 * [ Destination MAC ]  6 bytes of destination MAC                         *                         
 * [    Source MAC   ]  6 bytes of source MAC                              *                         
 * [  Type / Length  ]  2 bytes of type or length                          *                         
 * [     Payload     ]  46 or more bytes of data                           *                         
 * [       FCS       ]  4 bytes of CRC32, 31 bit sent first                *                         
 *                                                                         *                         
 * After packet goes TD_IDL pulse - Hi for 300 ns                          *                         
 *                                                                         *                         
 * EUSART in syncronous master mode output data to DT/CK pins              *                         
 * Baudrate is set to 10MHz                                                *                         
 * using XOR gate on this pins we can get required Manchester encoding     *                         
 *                                                                         *                         
 * To keep link alive issue Normal Link Pulse (Hi for 100ns) every 8-24 ms *                         
 *                                                                         *                         
 **************************************************************************/                         

#include <pic18fregs.h>
#include "hardware.h"  
#include "main.h"      
#include "ethernet_tx.h"

#define SET_TMR1_100nS(x) { TMR1H = HIGH(-(x)); TMR1L = LOW(-(x)); }

#define ETX_PAYLOAD_SIZE        46      /* minimum frame payload size as of 802.3 3.1.1 */
#define ETX_IP_HEADER_SIZE      20
#define ETX_UDP_HEADER_SIZE     8
#define ETX_DATA_SIZE           ( ETX_PAYLOAD_SIZE - ETX_IP_HEADER_SIZE - ETX_UDP_HEADER_SIZE )
#define ETX_DATA_OFFSET         ( ETX_IP_HEADER_SIZE + ETX_UDP_HEADER_SIZE )
#define ETX_UDP_DATAGRAM_SIZE   ( ETX_UDP_HEADER_SIZE + ETX_DATA_SIZE )
#define ETX_FRAME_SIZE          ( 8 + 14 + ETX_PAYLOAD_SIZE + 4 )

#define ETX_NLP_PERIOD          16 /* 16 ms normal link pulse period */

typedef union _ethernet_frame {
    struct {
      byte      pre[8];  /* preamble */
      byte      dst[6];  /* destination MAC */
      byte      src[6];  /* source MAC */
      byte      type[2]; /* type or size */
      byte      payload[ETX_PAYLOAD_SIZE];
      dword     crc;
    };
    byte        raw[ETX_FRAME_SIZE];
} ethernet_frame;

#pragma udata bank0 etx_frame
ethernet_frame  etx_frame;   
byte            etx_cnt;     
byte            etx_nlp;     

const byte      etx_header[] =
{                             
    0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xD5,     /* preamble */
    0x00, 0x11, 0x11, 0x3F, 0x4A, 0x37,                 /* destination MAC */
    0x00, 0xDE, 0xAD, 0xBE, 0xEF, 0x00,                 /* source MAC */     
    0x08, 0x00,                                         /* EtherType (IPv4) */

    /* IPv4 header */
    0x45,                                               /* Version, Length */
    0x00,                                               /* Type of Service */
    0x00, ETX_PAYLOAD_SIZE,                             /* IP data length */ 
    0x00, 0x00,                                         /* Packet counter */ 
    0x00,                                               /* IP flags, fragment offset */
    0x00,                                               /* IP offset */                
    0x40,                                               /* Time To Live */             
    0x11,                                               /* IP protocol (UDP) */        
    0x00, 0x00,                                         /* IP header checksum */       
    192, 168, 253, 200,                                 /* Source IP */                
    192, 168, 253, 16,                                  /* Destination IP */           

    /* UDP header */
    0x04, 0x00,                                         /* Source UDP port */
    0x04, 0x00,                                         /* Destination UDP port */
    0x00, ETX_UDP_DATAGRAM_SIZE,                        /* UDP datagram size */   
    0x00, 0x00                                          /* UDP pseudoheader checksum */
};                                                                                     

void etx_crc32( void )
{                     
    unsigned long       crc;
    byte                i, j;
                             
    crc = ~0; /* First 32 bits of frame is complemented */

    for (i = sizeof(etx_frame.pre); i < sizeof(etx_frame) - sizeof(etx_frame.crc); i++)
    {                                                                                  
        crc ^= etx_frame.raw[i];                                                       
        for (j = 0; j < 8; j++)                                                        
        {                                                                              
            crc >>= 1;                                                                 
            if(STATUSbits.C) crc ^= 0xEDB88320;                                        
        }                                                                              
    }                                                                                  
                                                                                       
    etx_frame.crc = ~crc; /* result is complemented */                                 
}                                                                                      

void etx_ip_checksum( void )
{                           
    unsigned long sum;      
    word w;                 
    byte i;                 

    etx_frame.payload[10] = 0;
    etx_frame.payload[11] = 0;

    for( sum = 0, i = 0; i < ETX_IP_HEADER_SIZE; i+=2 )
    {                                                  
        w = etx_frame.payload[ i ];                    
        w <<= 8;                                       
        w |= etx_frame.payload[ i + 1 ];               
        sum += w;                                      
    }                                                  

    while( w = sum >> 16 )
    {                     
        sum = ( sum & 0xFFFF ) + w;
    }                              

    sum = ~sum;

    etx_frame.payload[10] = ( sum >> 8 ) & 0xFF;
    etx_frame.payload[11] = sum & 0xFF;         
}                                               

void etx_init( void )
{                    
    byte i;          

    /* EUSART init */
    BAUDCTL = 0x00;     /* 10MHz baudrate */
    SPBRGH  = 0x00;                         
    SPBRG   = 0x00;                         

    TXSTA   = 0xB0;     /* master, 8-bit, TX enabled, synchronous */
    RCSTA   = 0x00;                                                 

    for( i = 0; i < sizeof(etx_frame.payload); i++ )
    {                                               
        etx_frame.payload[i] = 0;                   
    }                                               

    /* fill header */
    for( i = 0; i < sizeof(etx_header); i++ )
    {                                        
        etx_frame.raw[i] = etx_header[i];    
    }                                        

    /* timer2 for NLP */
    T1CON = 0x81; /* Fosc/4 clock 100ns, 1:1 prescaler, enabled */
    SET_TMR1_100nS( 10000 - 22 ); /* 1000 uS period */            

    IPR1bits.TMR1IP = 0;
    PIR1bits.TMR1IF = 0;
    PIE1bits.TMR1IE = 1;

    etx_nlp = ETX_NLP_PERIOD;
}                            

void etx_send_data( void )
{                         
    etx_ip_checksum();    
    etx_crc32();          

    INTCONbits.GIE = 0;

    /* prepare RB1 and RB4 for Hi signal after turning off EUSART */
    ETX_CLK  = 0;                                                   
    ETX_DATA = 1;                                                   

    /* send frame */
    etx_cnt = sizeof(etx_frame) - 1;

    _asm                LFSR    0, _etx_frame           _endasm;
    /* turn on EUSART */                                        
    _asm                BSF     _RCSTA, 7       _endasm;        
    /* and feed EUSART with bytes of frame */                   
    _asm                MOVF    _POSTINC0, W    _endasm;        
    _asm                MOVWF   _TXREG          _endasm;        
    _asm                BSF     _PORTB, 0       _endasm; /* 1 cycle */

    _asm _etx_ram:      NOP                     _endasm; /* 1 cycle   [ b0 ] <---------+      */
    _asm                NOP                     _endasm; /* 1 cycle   [ b1 ]           |      */
    _asm                NOP                     _endasm; /* 1 cycle   [ b2 ]           |      */
    _asm                MOVF    _POSTINC0, W    _endasm; /* 1 cycle   [ b3 ]           |      */
    _asm                MOVWF   _TXREG          _endasm; /* 1 cycle   [ b4 ]           |      */
    _asm                DECF    _etx_cnt, F, B  _endasm; /* 1 cycle   [ b5 ]           |      */
    _asm                BNZ     _etx_ram        _endasm; /* 1/2 cycle [ b6 ] <if !0> [ b7 ] */  
    _asm                NOP                     _endasm; /* 1 cycle   [ b7 ] */                 
    /* wait while last byte come out and turn off EUSART */                                     
    _asm                NOP                     _endasm; /* 1 cycle   [ b0 ] */                 
    _asm                NOP                     _endasm; /* 1 cycle   [ b1 ] */                 
    _asm                NOP                     _endasm; /* 1 cycle   [ b2 ] */                 
    _asm                NOP                     _endasm; /* 1 cycle   [ b3 ] */                 
    _asm                NOP                     _endasm; /* 1 cycle   [ b4 ] */                 
    _asm                NOP                     _endasm; /* 1 cycle   [ b5 ] */                 
    _asm                NOP                     _endasm; /* 1 cycle   [ b6 ] */                 
    _asm                BCF     _RCSTA, 7       _endasm; /* 1 cycle   [ b7 ] */                 
    /* generate TP_IDL (300ns of Hi) */                                                         
    _asm                NOP                     _endasm; /* 1 cycle */                          
    _asm                NOP                     _endasm; /* 1 cycle */
    _asm                BCF     _PORTB, 0       _endasm; /* 1 cycle */

    PIR1bits.TMR1IF = 0;

    etx_nlp = ETX_NLP_PERIOD;

    INTCONbits.GIE = 1;

}

void etx_process( void )
{
    /* send 100ns Normal Link Pulse every 16 ms */
    SET_TMR1_100nS( 10000 - 22 ); /* 1000 uS period */

    PIR1bits.TMR1IF = 0;

    if( --etx_nlp ) return;

    ETX_CLK  = 0;
    ETX_DATA = 1;
    _asm                BSF     _PORTB, 0               _endasm; /* 1 cycle */
    _asm                BCF     _PORTB, 0               _endasm; /* 1 cycle */

    etx_nlp = ETX_NLP_PERIOD;

}
Миниатюры
EtherPIC.png  

Последний раз редактировалось Stanson; 11.10.2010 в 07:50.
Stanson вне форума   Ответить с цитированием
Старый 11.10.2010, 08:09   #2
masterzx
Senior Member
 
Аватар для masterzx
 
Регистрация: 21.09.2007
Адрес: Барнаул
Возраст: 31
Сообщений: 1,474
Вес репутации: 826/58
masterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to behold
Отправить сообщение для masterzx с помощью ICQ
По умолчанию Re: Ethernet за 3 копейки без ENC

А зачем гемор себе устраивать из-за 70 рублей?
Цитата:
Наименование Описание Корпус Цена, руб. Наличие Производитель

PIC18F1320-I/P MCU 4K x 16 Enh Flash, 256 EE, 256 RAM, IntRC DIP-18 96.77 Да MICROCHIP
PIC18F1320-I/SO MCU 4K x 16 Enh Flash, 256 EE, 256 RAM, IntRC SOIC-18 93.74 Да MICROCHIP
PIC18F87J60-I/PT MCU 64K x 16 Enh Flash, NO EE, 3808 RAM, IntRC 32KHz, 10Base-T Ethernet TQFP-80 170.64 Да MICROCHIP
PIC18F97J60-I/PT MCU 64K x 16 Enh Flash, NO EE, 3808 RAM, IntRC 32KHz, 10Base-T Ethernet, EMB TQFP-100 194.40 Да MICROCHIP
__________________
Если проблему можно решить за деньги, то это не проблема, это расходы. Еврейская мудрость.
masterzx вне форума   Ответить с цитированием
Старый 11.10.2010, 08:21   #3
Stanson
Senior Member
 
Регистрация: 11.10.2010
Сообщений: 255
Вес репутации: 674/33
Stanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to behold
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от masterzx Посмотреть сообщение
А зачем гемор себе устраивать из-за 70 рублей?
Гемор - это когда из 100 ног микрухи используется 4. Вообще, это даже не гемор, это маразм.
Если уж речь о TQFP - то накой мне в таком корпусе убогий PIC дался? Я уж лучше человеческий ARM поставлю со всеми пирогами, раз уж плату разводить.

Не, были бы девайсы типа PIC16F675 со встроеным контроллером Ethernet - не было бы вопросов. Но что-то я не встречал ничего в DIP с количеством ног не более 18 и с контроллером. Появятся - тогда приходите и ценники вывешивайте.

Я, кстати, не спрашивал ничего про то, какие есть девайсы с контроллером ethernet. Я про них сам знаю, и Microchip'овская продукция в этом сегменте мне совершенно неинтересна.
Я спрашивал о возможных причинах потерь пакетов в вышеописанной ситуации.
Stanson вне форума   Ответить с цитированием
Старый 11.10.2010, 08:53   #4
masterzx
Senior Member
 
Аватар для masterzx
 
Регистрация: 21.09.2007
Адрес: Барнаул
Возраст: 31
Сообщений: 1,474
Вес репутации: 826/58
masterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to behold
Отправить сообщение для masterzx с помощью ICQ
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от Stanson Посмотреть сообщение
Гемор - это когда из 100 ног микрухи используется 4. Вообще, это даже не гемор, это маразм.

А разве не маразм использовать интернет интерфейс для опроса датчиков температуры? Есть же намного проще и надежней интерфейсы.
__________________
Если проблему можно решить за деньги, то это не проблема, это расходы. Еврейская мудрость.
masterzx вне форума   Ответить с цитированием
Старый 11.10.2010, 09:01   #5
Stanson
Senior Member
 
Регистрация: 11.10.2010
Сообщений: 255
Вес репутации: 674/33
Stanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to behold
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от masterzx Посмотреть сообщение

А разве не маразм использовать интернет интерфейс для опроса датчиков температуры? Есть же намного проще и надежней интерфейсы.
И какой же, интересно, интерфейс позволит отсылать состояние датчика в любую точку земного шара, да ещё и используя уже имеющуюся сетевую инфраструктуру?
Stanson вне форума   Ответить с цитированием
Старый 11.10.2010, 09:19   #6
masterzx
Senior Member
 
Аватар для masterzx
 
Регистрация: 21.09.2007
Адрес: Барнаул
Возраст: 31
Сообщений: 1,474
Вес репутации: 826/58
masterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to behold
Отправить сообщение для masterzx с помощью ICQ
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от Stanson Посмотреть сообщение
И какой же, интересно, интерфейс позволит отсылать состояние датчика в любую точку земного шара, да ещё и используя уже имеющуюся сетевую инфраструктуру?
Ага, и сотня таких датчиков засрёт локалку напрочь. Если честно то нет большого смысла от датчика у которого нельзя спросить: "кто ты?", "повтори", "сколько градусов?" и подобное... А тупа слать пакеты хз куда и примет ли их сервак вот это маразм...
__________________
Если проблему можно решить за деньги, то это не проблема, это расходы. Еврейская мудрость.
masterzx вне форума   Ответить с цитированием
Старый 11.10.2010, 09:21   #7
masterzx
Senior Member
 
Аватар для masterzx
 
Регистрация: 21.09.2007
Адрес: Барнаул
Возраст: 31
Сообщений: 1,474
Вес репутации: 826/58
masterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to behold
Отправить сообщение для masterzx с помощью ICQ
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от Stanson Посмотреть сообщение
И какой же, интересно, интерфейс позволит отсылать состояние датчика в любую точку земного шара, да ещё и используя уже имеющуюся сетевую инфраструктуру?
Интернет, но не так тупо организованный...
__________________
Если проблему можно решить за деньги, то это не проблема, это расходы. Еврейская мудрость.
masterzx вне форума   Ответить с цитированием
Старый 11.10.2010, 09:38   #8
Stanson
Senior Member
 
Регистрация: 11.10.2010
Сообщений: 255
Вес репутации: 674/33
Stanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to behold
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от masterzx Посмотреть сообщение
Ага, и сотня таких датчиков засрёт локалку напрочь. Если честно то нет большого смысла от датчика у которого нельзя спросить: "кто ты?", "повтори", "сколько градусов?" и подобное... А тупа слать пакеты хз куда и примет ли их сервак вот это маразм...
Сотня датчиков, пакет в секунду, 100 pps / 51.2 кбит - этого даже никто не заметит вообще.
Не, конечно, если сеть настолько плоха, что требуются к датчику запросы. - то тут может много набежать. Но если сеть нормальная - зачем что-то для датчика посылать? Он выдаёт раз в секунду данные, идентификатор его - в пакете, в виде IP адреса, что у него спрашивать?
UDP, между прочим - он для того и есть, чтобы слать пакеты х.з. куда и ничего не спрашивать, не ждать подтверждения и т.п.
Странно, что человек дающий советы насчёт того, как правильно ethernet'ы на PIC'ах делать, таких вещей не знает.

Последний раз редактировалось Stanson; 11.10.2010 в 09:46.
Stanson вне форума   Ответить с цитированием
Старый 11.10.2010, 09:40   #9
Stanson
Senior Member
 
Регистрация: 11.10.2010
Сообщений: 255
Вес репутации: 674/33
Stanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to behold
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от masterzx Посмотреть сообщение
Интернет, но не так тупо организованный...
Интернет - он как организован, так и существует. Других интернетов у меня для Вас нету.
Stanson вне форума   Ответить с цитированием
Старый 11.10.2010, 10:09   #10
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 47
Сообщений: 4,100
Вес репутации: 1883/97
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от Stanson Посмотреть сообщение

Но есть одна проблема - пакеты теряются. В принципе, это не важно, потому как даже потеря половины пакетов некритична в данном применении, но хотелось бы понять, почему это происходит.
Вообще-то, езерпик (прога) показывает, что из 1024 широковещательных пакетов UDP trt модулем езернета комп принимает примерно 860-900.
модуль trt непосредственно воткнут в комп.
- для размышления и мне и другим.
Это я использовал пример микрочиповского шторма.
IgorV вне форума   Ответить с цитированием
Старый 11.10.2010, 10:19   #11
Stanson
Senior Member
 
Регистрация: 11.10.2010
Сообщений: 255
Вес репутации: 674/33
Stanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to behold
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от IgorV Посмотреть сообщение
Вообще-то, езерпик (прога) показывает, что из 1024 широковещательных пакетов UDP trt модулем езернета комп принимает примерно 860-900.
модуль trt непосредственно воткнут в комп.
- для размышления и мне и другим.
Это я использовал пример микрочиповского шторма.
Ну тут-то шторма нету. Раз в секунду пакет, разумеется никаких коллизий и прочего антиквариата - свитчи везде, никаких хабов.

Кроме того, нормальный комп через нормальную верёвку нормальный шторм, с положенным interframe gap через 10Base-T принять должен без потерь.

Если нет gap'а или пакеты кривенькие - то, конечно, бывает вплоть до зависания сетевухи или свитча.
Stanson вне форума   Ответить с цитированием
Старый 11.10.2010, 12:15   #12
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 47
Сообщений: 4,100
Вес репутации: 1883/97
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от Stanson Посмотреть сообщение
Ну тут-то шторма нету. Раз в секунду пакет, разумеется никаких коллизий и прочего антиквариата - свитчи везде, никаких хабов.

Кроме того, нормальный комп через нормальную верёвку нормальный шторм, с положенным interframe gap через 10Base-T принять должен без потерь.

Если нет gap'а или пакеты кривенькие - то, конечно, бывает вплоть до зависания сетевухи или свитча.
попробую поправить пример, может выпрямится
IgorV вне форума   Ответить с цитированием
Старый 11.10.2010, 13:55   #13
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 42
Сообщений: 3,334
Вес репутации: 2341/94
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от Stanson Посмотреть сообщение
И какой же, интересно, интерфейс позволит отсылать состояние датчика в любую точку земного шара, да ещё и используя уже имеющуюся сетевую инфраструктуру?
а что мешает организовать сеть (can, rs485...) на этих мелких процах и поставить один нормальный мост на TCP/IP, который уже полноценно будет заниматься сборкой/рассылкой?
vitalka вне форума   Ответить с цитированием
Старый 11.10.2010, 16:56   #14
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/71
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Re: Ethernet за 3 копейки без ENC

Помочь к сожалению, ничем не могу, с ethernet не работал, но это круто, решение понравилось. Проблемы с PLL контроллера можно исключить если подать сигнал снаружи. Но я думаю все же он тут не причем.

Цитата:
а что мешает организовать сеть (can, rs485...) на этих мелких процах и поставить один нормальный мост на TCP/IP, который уже полноценно будет заниматься сборкой/рассылкой?
ну а если у них инфраструктура готовая уже? по офисам датчики повесить - сеть там есть однозначно, а can и rs тянуть надо.
__________________
даташит читать до того , а не после
Alex B. вне форума   Ответить с цитированием
Старый 11.10.2010, 18:16   #15
d-f-m
Senior Member
 
Регистрация: 09.02.2009
Адрес: Недалеко от Пятигорска
Возраст: 45
Сообщений: 580
Вес репутации: 1106/47
d-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud of
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от Stanson Посмотреть сообщение
Но есть одна проблема - пакеты теряются. В принципе, это не важно, потому как даже потеря половины пакетов некритична в данном применении, но хотелось бы понять, почему это происходит.
Когда переходил от 18F252 на 18F2520 столкнулся с тем, что в поток байтов периодически добавлялся пустой нулевой байт. В старом МК этого не было. Потом это появилось в еррата. Использовалась максимальная скорость UART, BRG=0, синхронный режим. В новых МК вообще не рекомендуют ставить BRG=0.
Может и в PIC18F1320 эта же пробема, хотя еррата молчит.
d-f-m вне форума   Ответить с цитированием
Старый 11.10.2010, 18:40   #16
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 47
Сообщений: 4,100
Вес репутации: 1883/97
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от d-f-m Посмотреть сообщение
Когда переходил от 18F252 на 18F2520 столкнулся с тем, что в поток байтов периодически добавлялся пустой нулевой байт. В старом МК этого не было. Потом это появилось в еррата. Использовалась максимальная скорость UART, BRG=0, синхронный режим. В новых МК вообще не рекомендуют ставить BRG=0.
Может и в PIC18F1320 эта же пробема, хотя еррата молчит.
вообще этот камень достаточно забавно ведет себя по ШИМ. местами неадекватно если чуть чуть зайти за рамки шита. Делал на нем передачу информации с накачкой энергии через транс. Было от чего поприкалываться
IgorV вне форума   Ответить с цитированием
Старый 11.10.2010, 19:09   #17
Stanson
Senior Member
 
Регистрация: 11.10.2010
Сообщений: 255
Вес репутации: 674/33
Stanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to behold
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от d-f-m Посмотреть сообщение
Когда переходил от 18F252 на 18F2520 столкнулся с тем, что в поток байтов периодически добавлялся пустой нулевой байт. В старом МК этого не было. Потом это появилось в еррата. Использовалась максимальная скорость UART, BRG=0, синхронный режим. В новых МК вообще не рекомендуют ставить BRG=0.
Может и в PIC18F1320 эта же пробема, хотя еррата молчит.
О как. В даташите на 1320 в описании синхронного мастера прям пример с BRG=0.
Но. Пакет с лишним битом дал бы ошибку на принимающей стороне - frame error.
Но ошибок нет - вообще никаких. Либо пакет принимается, либо он вообще игнорируется, как будто частота совсем другая.
Stanson вне форума   Ответить с цитированием
Старый 11.10.2010, 21:01   #18
pal1222@yandex.ru
Senior Member
 
Регистрация: 30.09.2008
Сообщений: 1,428
Вес репутации: 2235/68
pal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond repute
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от vitalka Посмотреть сообщение
а что мешает организовать сеть (can, rs485...) на этих мелких процах и поставить один нормальный мост на TCP/IP, который уже полноценно будет заниматься сборкой/рассылкой?
А вот Вы будете смеятццо, Ё, все же страшно заняты.. комуникашка с устройством это либо в пятом квартале, либо http port 80 server на устройстве (Ё), or fttp, либо сам пиши вааще всё (Ё, если бы ябыникогдабы не ошибался, (бы) на кой хер (бы) мне работать (бы) по найму? (бы) Ё)
pal1222@yandex.ru вне форума   Ответить с цитированием
Старый 11.10.2010, 21:05   #19
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 42
Сообщений: 3,334
Вес репутации: 2341/94
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от pal1222@yandex.ru Посмотреть сообщение
А вот Вы будете смеятццо, Ё, все же страшно заняты.. комуникашка с устройством это либо в пятом квартале, либо http port 80 server на устройстве (Ё), or fttp, либо сам пиши вааще всё (Ё, если бы ябыникогдабы не ошибался, (бы) на кой хер (бы) мне работать (бы) по найму? (бы) Ё)
это он щас с кем разговаривал?..
либо пьян, либо его аккаунт албанцы захватили...
vitalka вне форума   Ответить с цитированием
Старый 11.10.2010, 21:14   #20
pal1222@yandex.ru
Senior Member
 
Регистрация: 30.09.2008
Сообщений: 1,428
Вес репутации: 2235/68
pal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond repute
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от vitalka Посмотреть сообщение
это он щас с кем разговаривал?..
либо пьян, либо его аккаунт албанцы захватили...
Если писать вообще всё самому-проблем нет. (я, для PC до сих пор не умею) А если самому всё-всё делать, накой работать по найму , да и жена, наверное... можно попробовать почковаться
А проблема реальная, нихрена невозможно добиться для поддержки железа, заняты все (Ё)(как выяснилось, HTTP - это просто)
pal1222@yandex.ru вне форума   Ответить с цитированием
Старый 12.10.2010, 00:57   #21
asamuta
Junior Member
 
Регистрация: 11.10.2010
Возраст: 8
Сообщений: 7
Вес репутации: 100/0
asamuta will become famous soon enoughasamuta will become famous soon enough
По умолчанию Re: Ethernet за 3 копейки без ENC

Прототол UDP не гарантирует доставку пакетов. Может в этом "прикол"?
Пробовал в идеальном случае девайс->кросовый шнурок->комп?
asamuta вне форума   Ответить с цитированием
Старый 12.10.2010, 01:10   #22
Stanson
Senior Member
 
Регистрация: 11.10.2010
Сообщений: 255
Вес репутации: 674/33
Stanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to behold
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от asamuta Посмотреть сообщение
Прототол UDP не гарантирует доставку пакетов. Может в этом "прикол"?
Он не гарантирует в том смысле, что протоколом не предусмотрено какое-либо подтверждение приёма пакета или какие-то действия в случае пропажи пакета. В отличии от TCP, например.

Но это не значит, что пакеты обязаны теряться на чистой и незагруженной линии.

Цитата:
Пробовал в идеальном случае девайс->кросовый шнурок->комп?
Разумеется пробовал. Та же самая картина, что и со свитчом. Теряется где-то 10-20% пакетов без каких-либо видимых причин.
Причём ведь все пакеты, и потерянные и принятые генерируются одним и тем же кодом, так что на код грешить вроде причин нету. Был бы код кривой - не было бы принятых пакетов вообще, в ethernet с этим строго.
Stanson вне форума   Ответить с цитированием
Старый 12.10.2010, 01:44   #23
bzx
Senior Member
 
Аватар для bzx
 
Регистрация: 25.02.2007
Адрес: St. Petersburg
Возраст: 44
Сообщений: 431
Вес репутации: 1021/52
bzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud ofbzx has much to be proud of
Отправить сообщение для bzx с помощью ICQ Отправить сообщение для bzx с помощью Skype™
По умолчанию Re: Ethernet за 3 копейки без ENC

2 Stanson
Выложи либо тут, либо пришли мне (qbit[ DOG] inbox[POINT] ru) лог сниффера, например, Wireshark. Рекомендую поставить фильтр на твой хост: “host x.x.x.x”, где x.x.x.x - IP твоего девайса. Посниффери минут 15-20, чтоб набрать ~10^3 пакетиков. Далее подскажу в каком направлении двигаться.
PS: Да, важное: схема такая – писюк, твой девайс. На писюке отдельный Eth адаптер для этих целий с одним IP (если есть другие ip на этом Eth - убрать). Одна подсеть!

Последний раз редактировалось bzx; 12.10.2010 в 01:54.
bzx вне форума   Ответить с цитированием
Старый 12.10.2010, 10:16   #24
Stanson
Senior Member
 
Регистрация: 11.10.2010
Сообщений: 255
Вес репутации: 674/33
Stanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to beholdStanson is a splendid one to behold
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от bzx Посмотреть сообщение
2 Stanson
Выложи либо тут, либо пришли мне (qbit[ DOG] inbox[POINT] ru) лог сниффера, например, Wireshark. Рекомендую поставить фильтр на твой хост: “host x.x.x.x”, где x.x.x.x - IP твоего девайса. Посниффери минут 15-20, чтоб набрать ~10^3 пакетиков. Далее подскажу в каком направлении двигаться.
PS: Да, важное: схема такая – писюк, твой девайс. На писюке отдельный Eth адаптер для этих целий с одним IP (если есть другие ip на этом Eth - убрать). Одна подсеть!
Снифферится всё как надо. Хоть напрямую в сетевуху, хоть через Штаты или Австралию.

4 пакета в секунду, например:
Код:
# tcpdump -nxxevvi eth0 udp port 65000
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
10:18:25.775512 00:de:ad:be:ef:00 > 00:11:11:3f:4a:37, ethertype IPv4 (0x0800), length 60: (tos 0x0, ttl  64, id 0, offset 0, flags [none], proto: UDP (17), length: 46) 192.168.253.200.1024 > 192.168.253.16.65000: [no cksum] UDP, length 18                                                                
        0x0000:  0011 113f 4a37 00de adbe ef00 0800 4500                                             
        0x0010:  002e 0000 0000 4011 fe94 c0a8 fdc8 c0a8                                             
        0x0020:  fd10 0400 fde8 001a 0000 0f12 1900 1448                                             
        0x0030:  01a3 007a 0100 0100 0000 0000                                                       
10:18:26.320441 00:de:ad:be:ef:00 > 00:11:11:3f:4a:37, ethertype IPv4 (0x0800), length 60: (tos 0x0, ttl  64, id 0, offset 0, flags [none], proto: UDP (17), length: 46) 192.168.253.200.1024 > 192.168.253.16.65000: [no cksum] UDP, length 18                                                                
        0x0000:  0011 113f 4a37 00de adbe ef00 0800 4500                                             
        0x0010:  002e 0000 0000 4011 fe94 c0a8 fdc8 c0a8
        0x0020:  fd10 0400 fde8 001a 0000 0f12 1900 1447
        0x0030:  01a3 007a 0100 0100 0000 0000
10:18:26.865131 00:de:ad:be:ef:00 > 00:11:11:3f:4a:37, ethertype IPv4 (0x0800), length 60: (tos 0x0, ttl  64, id 0, offset 0, flags [none], proto: UDP (17), length: 46) 192.168.253.200.1024 > 192.168.253.16.65000: [no cksum] UDP, length 18
        0x0000:  0011 113f 4a37 00de adbe ef00 0800 4500
        0x0010:  002e 0000 0000 4011 fe94 c0a8 fdc8 c0a8
        0x0020:  fd10 0400 fde8 001a 0000 0f12 1900 144a
        0x0030:  01a3 007a 0100 0100 0000 0000
10:18:27.410063 00:de:ad:be:ef:00 > 00:11:11:3f:4a:37, ethertype IPv4 (0x0800), length 60: (tos 0x0, ttl  64, id 0, offset 0, flags [none], proto: UDP (17), length: 46) 192.168.253.200.1024 > 192.168.253.16.65000: [no cksum] UDP, length 18
        0x0000:  0011 113f 4a37 00de adbe ef00 0800 4500
        0x0010:  002e 0000 0000 4011 fe94 c0a8 fdc8 c0a8
        0x0020:  fd10 0400 fde8 001a 0000 0f12 1900 1449
        0x0030:  01a3 007a 0100 0100 0000 0000
10:18:27.954995 00:de:ad:be:ef:00 > 00:11:11:3f:4a:37, ethertype IPv4 (0x0800), length 60: (tos 0x0, ttl  64, id 0, offset 0, flags [none], proto: UDP (17), length: 46) 192.168.253.200.1024 > 192.168.253.16.65000: [no cksum] UDP, length 18
        0x0000:  0011 113f 4a37 00de adbe ef00 0800 4500
        0x0010:  002e 0000 0000 4011 fe94 c0a8 fdc8 c0a8
        0x0020:  fd10 0400 fde8 001a 0000 0f12 1900 144a
        0x0030:  01a3 007a 0100 0100 0000 0000
Никаких ошибок нет вообще. Совершенно непредсказуемым образом не приходят 10-20% пакетов.
Ну нет ошибок или кривых пакетов. Ни единого.
Есть только непринятые вообще никак пакеты. Проигнорированные железом первого приёмника. Никаких ошибок при этом на первом приёмнике нет.
Stanson вне форума   Ответить с цитированием
Старый 12.10.2010, 11:09   #25
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/93
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: Ethernet за 3 копейки без ENC

Цитата:
Сообщение от Stanson Посмотреть сообщение
Была задачка, сделать реально копеечные устройства, которые могли бы
плеваться в ethernet пакетиками с собранной с датчиков информацией.
Мне не нравится выходной каскад, при такой схеме происходит подмагничивание сердечника и насколько это плохо я не знаю.
Что если попробовать так?
Миниатюры
ezernet.PNG  
DL36 вне форума   Ответить с цитированием
Ответ

Метки
ethernet, eusart, pic18f1320, udp


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопросы по Ethernet устройствам... Timik Общетехнические вопросы 17 25.06.2011 19:50


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


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