Перейти к содержанию

alexsis

Members
  • Постов

    11
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные alexsis

  1. Добрый день уважаемые форумчане, имеется usb камера подключенная к локальной сети через конвертер usb-ethernet, usb chost конвертера работает с видеокамерой, упаковывает полученные пакеты в ethernet и шлет в сеть посредством udp, т. е подключаем камеру , нажимает кнопку старт и пакеты начинают сыпаться в сеть, вопрос чем можно захватить эти пакеты и увидеть что снимает камера, изображение с камеры передается в YUY2,все просмотрщики веб камер требуют установления соединения с камерой по tcp

  2. "Если тупо в прерывание таймера вписать этот кусок, то будет ли работать? или еще чего надо?" будет но обработчик прерывания должен быть как можно короче, в идеале там только выставляют флаги, а их обработку и принятие рещений делают в основном цикле, но если кроме измерения температуры больше делать нечего то можно код обрабатывать и в прерывании.

  3. Пишу на ассемблере,на днях попробовал си мое мнение ассемблер намного понятнее там что написал то и получил а Си больше походит на магию,одни указатели чего стоят, а на ассемблере это всего лишь команда ldd.

  4. "ой да прям, сами попробуйте по курсу николаева ( 123AVR ) че та понять" хороший курс, ваши непонятки от того что вы не знаете языка, а начинась лучше с ассемблера, на нем что написал то и получил и заодно и архитектуру изучите.

  5. Добрый день уважаемые форумчане,делаю устройство удаленого измерения температуры,работает се устройство по Ethernety,устройство собрано на ENC28J60м в качестве хоста используется mega16, запустил устройство и дело даже дошло до пинга, но устройство неправильно считает контрольную сумму ip пакета вследствии чего ip пакет в копьютере отбрасывается,имеется подпрограмма расчета конторольной сумы вот она

    uint16_t checksum(uint8_t *buf, uint16_t len,uint8_t type){
           // type 0=ip 
           //      1=udp
           //      2=tcp
           uint32_t sum = 0;
    
           if(type==1){
                   sum+=IP_PROTO_UDP_V; // protocol udp
                   // the length here is the length of udp (data+header len)
                   // =length - IP addr length
                   sum+=len-8; // = real udp len
           }
           if(type==2){
                   sum+=IP_PROTO_TCP_V; 
                   // the length here is the length of tcp (data+header len)
                   // =length - IP addr length
                   sum+=len-8; // = real tcp len
           }
           // build the sum of 16bit words
           while(len >1){
                   sum += 0xFFFF & (*buf<<8|*(buf+1));
                   buf+=2;
                   len-=2;
           }
           // if there is a byte left then add it (padded with zero)
           if (len){
                   sum += (0xFF & *buf)<<8;
           }
           // now calculate the sum over the bytes in the sum
           // until the result is only 16bit long
           while (sum>>16){
                   sum = (sum & 0xFFFF)+(sum >> 16);
           }
           // build 1's complement:
           return( (uint16_t) sum ^ 0xFFFF);
    }

    Это мой первый проект на с до этого програмировал на ассемблере, с кодом впринципе разобрался но не могу понять данный код особенно интересует строки while (sum>>16){

    sum = (sum & 0xFFFF)+(sum >> 16);

    }

    В сети ничего внятного на эту тему найти не могу. Знатоки Си подскажите что творится в коде.

  6. Доброго времени суток. Собрал программатор BIOWIT, вставил контроллер,контроллер прошился нормально, программа выдала ОК однако в схеме контроллер молчит ни чего не мигает не моргает, контроллер 100% исправный перерыл кучу инфы ничего,кто сталкивался с подовной проблемой отзовитесь. :(

  7. Доброго времени суток. Решил попробывать avr, до этого сидел на pic, взял что было под рукой-at89c2051

    микроконтроллер снят с производства , у кого есть плиз даташит и описание регистров.

×
×
  • Создать...