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

kil00

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

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

  • Посещение

Весь контент kil00


  1. Вот такой вариант хаба (http://www.qrz.ru/schemes/contribute/comp/passive-hub.shtml) у нас работал с 2002 по 2008 год, пока не накопили кучу денег и не купили б.у. простой 100 мбит хаб. На 10 мбит пассивный хаб работал и никаких потерь не было, на 100 тоже работал, но не помню насчёт пинга. Самое главное в этой конструкции, это симметрировать подключение компов, т.е. на каждый порт должно быть по сетевой карте. Мы на один порт вешали битую сетевую карту, и всё работало. Да.. с разу будет вопрос "нафига на 2 компа". Ответ: потому что я долго готовил однодискетный рутер и думал, что будет всё просто.
  2. таймеры STM32F2xx

    Извиняюсь, ночью было, не посмотрел, что серия F2.
  3. таймеры STM32F2xx

    Cкорее всего, см. RM0008 (стр. 270) Addressing an AHB peripheral that does not support byte or halfword write operations
  4. Насколько я понимаю, Bit Band возможен только для SRAM и периферии, но не для ядра.
  5. http://ru.wikipedia.org/wiki/Юлианская_дата http://stackoverflow.com/questions/1002542...-timestamp-in-c недавно сам разбирался, только с NTP-временем, - 1-ая ссылка очень полезна в плане понимания, откуда берётся время (+ перевод unixtime_to_datetime)
  6. Таймер на STM32F101

    Примерно так: http://eugenemcu.ru/publ/13-1-0-73 - тактирование http://ziblog.ru/2011/01/15/stm32-chast-8-...eryivaniya.html - таймеры
  7. таймеры STM32F2xx

    Если погрешность T может варьироваться в пределах до сотни тактов МК, то можно генерировать импульсы программно, как написал MK2.
  8. В теории - приёмнику (антенне) нужна прямая видимость со спутниками. А для получения более-менее точных координат - не менее 3-ёх спутников. Если учесть то, что достаточно чувствительная антена у окна не ловит больше 1 спутника, то я уверен, что приёма в помещениях не будет. Но сам бы в это не поверил, вот и Вам предлагаю эксперимен с Вашим прёмником.
  9. Да, и на чувствительность тоже. У антенны АСМ-03 есть такой показатель - "Усиление (без учета потерь в кабеле): 32 dB". Исходя из того, что я написал выше, Вам лучше на практике посмотреть, будет ли приёмник ловить спутники в помещениях, что навряд ли.
  10. Вероятность, что ваш приёмник поймает хотя бы одни спутник в помещении стремится к нулю, даже с хорошей антенной. Тем более в подвале. У меня сейчас висит в помещении на раме окна антенна АСМ-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%). (Понятно, чем больше спутников, тем точнее координаты и т. д.)
  11. У моего f103ret6 в левом нижнем углу 1-ая ножка. И это единственная отметка.
  12. Здравствуйте! Не могу включить функцию прерывания (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.
  13. Куда делись сообщения из этой темы? (их было, примерно, 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 Ответы не пропали, но находятся в разных ветках, хотя тема создавалась в одной ветке. Что бы это значило?
  14. Многие приёмники работают с протоколами NMEA и TSIP. Вот TSIP, как раз, бинарный, и можно с помощью него общаться с приёмником и настраивать его.
  15. Случайно не в таком примерно варианте приходит строка: $GPRMC,,,,,,,,,,,*1D ? Если в таком, значит, что, скорее всего, ваш приёмник не нашёл достаточного количества спутников. Скачайте с сайта производителя ПО для работы с этим приёмником - визуально будет проще разобраться.
  16. Насколько я понимаю, сначала нужно выключить счётчик TIM4->CR1 &=~ TIM_CR1_CEN, потом внести значение в регистр CNT, после чего счётчик включить.
  17. В попытках найти ответ на свой вопрос, я получил правильный ответ от Железнякова Дениса (www.ziblog.ru), причём ответил он втечение 20 минут. За что я ему очень благодарен! Вот сам ответ: Вы используете предварительные делители у обоих таймеров. Оба предделителя буфферизированны, т.е. просто запись значения ничего не меняет, изменения происходят только после события обновления. Следовательно вам необходимо добавить: TIM4->PSC = 70 - 1; TIM4->EGR |= TIM_EGR_UG; Это действие: а) сбросит их б) установить новый модуль счета И всё работает, как надо!
  18. Спасибо. Буду разбираться. Выставление бита ARPE в ноль в обоих таймерах ничего не изменяет.. Пока что единственное решение этого вопроса - это включить ОБА таймера по приходу внешнего сигнала, не синхронизируя их. Но очередная проблема с таймерами в STM32 останется не решённой...
  19. Источник тока в компараторе служит для создания источника опорного напряжения, с которым сравнивается входное напряжение. В даташите всё должно быть подробно написано.
  20. Зачем убирать этот бит, если он отвечает за значение, до которого таймер считает, без него, как раз, гикак. А комментарий я уберу. Да, это я перед тем как создать тему немного откорректировал свои комментарии и не заметил этих строк, поэтому вышла ошибка. Спасибо. Буду пробовать. Вчера возникла идея, что проблема из-за битового поля TS регистра SMCR. Начал просто перебирать возможные значения, но только при значении TS=001 оба счётчика работают, во всех других вариантах счётчик TIM5 всё время равен 0. В общем, cегодня попробую поменять местами TIM5 и TIM3. Не очень понятна эта таблица 86 (RM0008 стр.386). Из описания следует, что Slave TIM, в моём варианте, - это TIM5 (стр. 386), находим TIM3 и получаем - ITR1 (TS = 001). Вроде бы всё верно, но попробую поменять таймеры местами.
  21. Здравствуйте! Использую 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. В чём может быть проблема? Может быть, что-то не так настроил?
  22. Если это кому-то ещё интересно. Наконец-то разобрался, как получить всё изображение в бинарном виде и записать в файл. 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. В общем, решение нашлось.
  23. Спасибо за наводку. Вот, что получилось: 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); Насколько это правильно?
×
×
  • Создать...