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

kil00

Участник
  • Постов

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

  • Посещение

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


  1. Вот такой вариант хаба (http://www.qrz.ru/schemes/contribute/comp/passive-hub.shtml) у нас работал с 2002 по 2008 год, пока не накопили кучу денег и не купили б.у. простой 100 мбит хаб.

    На 10 мбит пассивный хаб работал и никаких потерь не было, на 100 тоже работал, но не помню насчёт пинга.

    Самое главное в этой конструкции, это симметрировать подключение компов, т.е. на каждый порт должно быть по сетевой карте. Мы на один порт вешали битую сетевую карту, и всё работало.

    Да.. с разу будет вопрос "нафига на 2 компа". Ответ: потому что я долго готовил однодискетный рутер и думал, что будет всё просто.

  2. http://ru.wikipedia.org/wiki/Юлианская_дата

    http://stackoverflow.com/questions/1002542...-timestamp-in-c

     

    недавно сам разбирался, только с NTP-временем, - 1-ая ссылка очень полезна в плане понимания, откуда берётся время (+ перевод unixtime_to_datetime)

  3. Хорошо. Я понял. Только экспериментальным путем

    В теории - приёмнику (антенне) нужна прямая видимость со спутниками. А для получения более-менее точных координат - не менее 3-ёх спутников. Если учесть то, что достаточно чувствительная антена у окна не ловит больше 1 спутника, то я уверен, что приёма в помещениях не будет. Но сам бы в это не поверил, вот и Вам предлагаю эксперимен с Вашим прёмником.

     

  4. Я думал для моего применения надо больше обращать внимания на чувствительность приемника в ДБ.

     

    У продавца видел GeoHelix-S Активная GPS-антенна 1575,42 МГц, 24 дБ, круговая поляризация, 2...3.5 В (17 мА), 13x15x49 мм, SMD

    Да, и на чувствительность тоже.

    У антенны АСМ-03 есть такой показатель - "Усиление (без учета потерь в кабеле): 32 dB". Исходя из того, что я написал выше, Вам лучше на практике посмотреть, будет ли приёмник ловить спутники в помещениях, что навряд ли.

  5. Здравствуйте!

    Подскажите, как сейчас обстоят дела с определением местоположения в плохих условиях?

    Мне необходимо определиться с выбором GPS приемника и антенны.

    Вероятность, что ваш приёмник поймает хотя бы одни спутник в помещении стремится к нулю, даже с хорошей антенной. Тем более в подвале.

     

    У меня сейчас висит в помещении на раме окна антенна АСМ-03 и видит 1 спутник, если её вытащить на улицу, за окно (всего на полметра от окна), то уже 9 и более.

    Приёмники использовались Trimble Resolution-T (OEM) и LassenIQ (OEM).

    Здание 3-ехэтажное, этаж последний. Рядом ничего не закрывает обзор.

     

    Есть ещё маленькая антенна от Trimble (Miniature 3V GPS Antenna) - она в помещении вообще не ловит. Что тогда говорить о встроенных антеннах...

     

    В даташитах к приёмникам, вам следует обратить внимание на такую характеристику:

    Accuracy: Horizontal.Position:.<6.meters.(50%),.<9.meters.(90%).

    Altitude.Position:.<11.meters.(50%),.<18.meters.(90%). (Понятно, чем больше спутников, тем точнее координаты и т. д.)

  6. Здравствуйте!

     

    Не могу включить функцию прерывания (NVIC_EnableIRQ (TIM1_UP_IRQn)) от таймера TIM1.

    На аргументы TIM1_BRK_IRQn, TIM1_UP_IRQn, TIM1_TRG_COM_IRQn Keil ругается:

    Main\main.c(124): error: #20: identifier "TIM1_UP_IRQn" is undefined,

    а TIM1_CC_IRQn он проглатывает, и прерывание нормально работает.

     

    Подскажите, пожалуйста, что я делаю не так?

    Использую stm32f107vc (connectivity line)

     

    ---------

    ---------

     

    У меня стартап от f103.

  7. Куда делись сообщения из этой темы? (их было, примерно, 5-6 с решением вопроса)

     

    http://electronix.ru/forum/index.php?showtopic=110679

     

    Поиск в Гугл показал.:

     

    http://electronix.ru/forum/lofiversion/ind...hp/t110677.html

    http://electronix.ru/forum/lofiversion/ind...hp/t110679.html

     

    Ответы не пропали, но находятся в разных ветках, хотя тема создавалась в одной ветке. Что бы это значило?

  8. Случайно не в таком примерно варианте приходит строка:

    $GPRMC,,,,,,,,,,,*1D ?

     

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

    Скачайте с сайта производителя ПО для работы с этим приёмником - визуально будет проще разобраться.

  9. У меня возник вопрос. Если при достижении таймером TIM1 переполнения я хочу сбросить таймер TIM4 могу ли я написать следующим образом TIM4->CNT=0? Или же если мне нужно не сбросить а продолжить счет TIM4 с определенного значения могу ли я записать TIM4->CNT=X?

    Насколько я понимаю, сначала нужно выключить счётчик TIM4->CR1 &=~ TIM_CR1_CEN, потом внести значение в регистр CNT, после чего счётчик включить.

  10. В попытках найти ответ на свой вопрос, я получил правильный ответ от

    Железнякова Дениса (www.ziblog.ru), причём ответил он втечение 20 минут.

    За что я ему очень благодарен!

     

    Вот сам ответ:

     

    Вы используете предварительные делители у обоих таймеров. Оба

    предделителя буфферизированны, т.е. просто запись значения ничего не

    меняет, изменения происходят только после события обновления.

    Следовательно вам необходимо добавить:

    TIM4->PSC = 70 - 1;

    TIM4->EGR |= TIM_EGR_UG;

    Это действие:

    а) сбросит их

    б) установить новый модуль счета

     

    И всё работает, как надо!

  11. Спасибо. Буду разбираться.

     

    Выставление бита ARPE в ноль в обоих таймерах ничего не изменяет..

     

    Пока что единственное решение этого вопроса - это включить ОБА таймера по приходу внешнего сигнала, не синхронизируя их. Но очередная проблема с таймерами в STM32 останется не решённой...

  12. Здравствуйте. Да да я понимаю что это источник тока. Только на что он влияет я не понимаю (см. прикрепл. файлы) Быть может это потребитель тока который просто тупо жрёт 0,7 мА. Ну а зачем он тогда нужен(прим TL494). А што направление стрелочки означает?

    Источник тока в компараторе служит для создания источника опорного напряжения, с которым сравнивается входное напряжение. В даташите всё должно быть подробно написано.

  13. 1. Уберите TIM5->CR1 |= TIM_CR1_ARPE; - это совсем про другое чем вы пишете в комметариях.

    Зачем убирать этот бит, если он отвечает за значение, до которого таймер считает, без него, как раз, гикак. А комментарий я уберу.

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

     

    2. Чаще выводите CNT через UART и смотрите как они изменяются. Сначала оба нарастают от 0, потом TIM5->CNT приближается к 25000 - что дальше? Для замедления и удобства наблюдения можно увеличить PSC обоих таймеров.

    Спасибо. Буду пробовать.

     

    Вчера возникла идея, что проблема из-за битового поля TS регистра SMCR. Начал просто перебирать возможные значения, но только при значении TS=001 оба счётчика работают, во всех других вариантах счётчик TIM5 всё время равен 0. В общем, cегодня попробую поменять местами TIM5 и TIM3.

     

    Не очень понятна эта таблица 86 (RM0008 стр.386). Из описания следует, что Slave TIM, в моём варианте, - это TIM5 (стр. 386), находим TIM3 и получаем - ITR1 (TS = 001). Вроде бы всё верно, но попробую поменять таймеры местами.

     

  14. Здравствуйте!

     

    Использую stm32f107vc.

    Пытаюсь синхронизировать два таймера (TIM3 и TIM5), как включающиеся синхронно от внешнего импульса. Настроил их, как написано в RM0008 стр.386:

    void TIM3(void)
    {
      RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // подача тактов на TIM3 от шины тактирования APB1
    
      TIM3->PSC = 70 - 1;    
      TIM3->ARR = 25000 - 1;	
      TIM3->DIER &=~ TIM_DIER_UIE;
      TIM3->CR1 |= TIM_CR1_ARPE;	// сброс по достижении максимального значения
    
    // в мастер-режиме передаёт данные о своих Enable, как триггерный выход (MMS=001)
      TIM3->CR2 |=  TIM_CR2_MMS_0;             /*!<Bit 0 */
      TIM3->CR2 &=~ TIM_CR2_MMS_1;             /*!<Bit 1 */				 
      TIM3->CR2 &=~ TIM_CR2_MMS_2;             /*!<Bit 2 */
    // в подчиненном режиме, чтобы получить входной триггер TI1 (TS=100)			
      TIM3->SMCR &=~ TIM_SMCR_TS_0;             /*!<Bit 0 */
      TIM3->SMCR &=~ TIM_SMCR_TS_1;             /*!<Bit 1 */
      TIM3->SMCR |=  TIM_SMCR_TS_2;             /*!<Bit 2 */
    // в режиме триггера (SMS=110)
      TIM3->SMCR &=~ TIM_SMCR_SMS_0;            /*!<Bit 0 */
      TIM3->SMCR |=  TIM_SMCR_SMS_1;            /*!<Bit 1 */
      TIM3->SMCR |=  TIM_SMCR_SMS_2;            /*!<Bit 2 */
    // установка задержки для того, чтоб таймеры очень хорошо синхронизировались (MSM=1)
      TIM3->SMCR |=  TIM_SMCR_MSM; 
    
      TIM3->CNT = 0; // обнулить счётчик, чтобы его значение после синхронизации равнялось 0x00
    }
    
    void TIM5 (void)
    {
      RCC->APB1ENR |= 1<<3; // TIM5EN подача тактов на TIM5 от шины тактирования APB1
    
      TIM5->PSC = 70 - 1;   
      TIM5->ARR = 25000 - 1;	
      TIM5->DIER &=~ TIM_DIER_UIE;
      TIM5->CR1 |= TIM_CR1_ARPE;	//  сброс по достижении максимального значения
    // получаем входной триггер от TIM3 (TS=001) как в Table 86			
      TIM5->SMCR |=  TIM_SMCR_TS_0;           /*!<Bit 0 */
      TIM5->SMCR &=~ TIM_SMCR_TS_1;           /*!<Bit 1 */ // TS=001
      TIM5->SMCR &=~ TIM_SMCR_TS_2;           /*!<Bit 2 */
    // в режиме триггера (SMS=110)
      TIM5->SMCR &=~ TIM_SMCR_SMS_0;            /*!<Bit 0 */
      TIM5->SMCR |=  TIM_SMCR_SMS_1;            /*!<Bit 1 */
      TIM5->SMCR |=  TIM_SMCR_SMS_2;            /*!<Bit 2 */
    
      TIM5->CNT = 0; // обнулить счётчик, чтобы его значение после синхронизации равнялось 0x00	
    }
    

    В итоге, снимая по запросу значения регистров CNT из обоих таймеров, по USART'у получаю такие значения:

     

    при TIM5->ARR = 25000 - 1; и TIM3->ARR = 25000 - 1; значения регистров CNT одинаковые (например, 0x5936 и 0x5936 или 0x728 и 0x728), и так с любыми одинаковыми значениями регистров ARR таймеров.

    а при TIM5->ARR = 50000 - 1; и TIM3->ARR = 25000 - 1; значения регистров CNT, по идее, должны отличаться на 25000 (0х61A8), а реально они, например, вот такие - 0x22D4 и 0x216F или такие - 0x556D и 0xB5B0.

     

    В чём может быть проблема? Может быть, что-то не так настроил?

  15. Если это кому-то ещё интересно. Наконец-то разобрался, как получить всё изображение в бинарном виде и записать в файл.

    unsigned short *intarray; //= strII; 
    intarray=(unsigned short*)malloc(row_width*rows*2*sizeof(unsigned short));//4008*2672*2   
    
           if((malloc(*intarray)) == NULL)  printf("malloc() failed");
           else printf("malloc() good\n\n"); 
    
           FILE *pf;                      
           pf=fopen("data","ab");    
    
               int row = 0;
               for (row = 0; row < rows; row++)
                   {
                    x = FLIGrabRow (dev, &intarray[row*row_width], row_width); /			      
                    fflush(stdout);
                   }
               fwrite(&intarray[0], sizeof(unsigned short), rows*row_width,pf); 
               fclose(pf);                  
               free (intarray); 
    

    Но вчера нашёл статью Емельянова Э.В. (http://eddy-em.livejournal.com/5087.html), в которой всё доходчиво рассказывается и показывается, что надо делать. А так же говорится о том, что существует стандартная библиотека для работы с FLI-камерами - cfitsio.

     

    В общем, решение нашлось.

  16. Попробуйте эту память выделять динамически, через malloc или new.

    Спасибо за наводку. Вот, что получилось:

     
       unsigned int *intarray; 
    intarray=(unsigned int*)malloc(row_width*rows*2*sizeof(unsigned int));//4008*2672*2
    
           if((malloc(*intarray)) == NULL)  printf("malloc() failed");
           else printf("malloc() good\n\n");

    Вроде бы буфер работает. Понял, что надо пользоваться функцией fwrite(), получилось так:

     

     	   
           FILE *pf; 
                    pf=fopen("data","wb");     
    
    	printf("Read image: ");
         	            int row = 0;
           		for (row = 0; row < rows; row++)
                   {
                    x = FLIGrabRow (dev, &intarray, row_width); 
                            fflush(stdout);
    	 fwrite(intarray,sizeof(unsigned int),row_width,pf);
                    }
                    fclose(pf); 
                    free (intarray);
    

    Насколько это правильно?

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