kil00
Участник-
Постов
57 -
Зарегистрирован
-
Посещение
Весь контент kil00
-
Пассивный хаб
kil00 ответил rpalaznik тема в В помощь начинающему
Вот такой вариант хаба (http://www.qrz.ru/schemes/contribute/comp/passive-hub.shtml) у нас работал с 2002 по 2008 год, пока не накопили кучу денег и не купили б.у. простой 100 мбит хаб. На 10 мбит пассивный хаб работал и никаких потерь не было, на 100 тоже работал, но не помню насчёт пинга. Самое главное в этой конструкции, это симметрировать подключение компов, т.е. на каждый порт должно быть по сетевой карте. Мы на один порт вешали битую сетевую карту, и всё работало. Да.. с разу будет вопрос "нафига на 2 компа". Ответ: потому что я долго готовил однодискетный рутер и думал, что будет всё просто. -
таймеры STM32F2xx
kil00 ответил esaulenka тема в ARM, 32bit
Извиняюсь, ночью было, не посмотрел, что серия F2. -
таймеры STM32F2xx
kil00 ответил esaulenka тема в ARM, 32bit
Cкорее всего, см. RM0008 (стр. 270) Addressing an AHB peripheral that does not support byte or halfword write operations -
bit bang для периферии ядра
kil00 ответил paskal тема в ARM, 32bit
Насколько я понимаю, Bit Band возможен только для SRAM и периферии, но не для ядра. -
http://ru.wikipedia.org/wiki/Юлианская_дата http://stackoverflow.com/questions/1002542...-timestamp-in-c недавно сам разбирался, только с NTP-временем, - 1-ая ссылка очень полезна в плане понимания, откуда берётся время (+ перевод unixtime_to_datetime)
-
Таймер на STM32F101
kil00 ответил 1245 тема в ARM, 32bit
Примерно так: http://eugenemcu.ru/publ/13-1-0-73 - тактирование http://ziblog.ru/2011/01/15/stm32-chast-8-...eryivaniya.html - таймеры -
таймеры STM32F2xx
kil00 ответил esaulenka тема в ARM, 32bit
Если погрешность T может варьироваться в пределах до сотни тактов МК, то можно генерировать импульсы программно, как написал MK2. -
GPS приемник для помещений
kil00 ответил Слесарь тема в В помощь начинающему
В теории - приёмнику (антенне) нужна прямая видимость со спутниками. А для получения более-менее точных координат - не менее 3-ёх спутников. Если учесть то, что достаточно чувствительная антена у окна не ловит больше 1 спутника, то я уверен, что приёма в помещениях не будет. Но сам бы в это не поверил, вот и Вам предлагаю эксперимен с Вашим прёмником. -
GPS приемник для помещений
kil00 ответил Слесарь тема в В помощь начинающему
Да, и на чувствительность тоже. У антенны АСМ-03 есть такой показатель - "Усиление (без учета потерь в кабеле): 32 dB". Исходя из того, что я написал выше, Вам лучше на практике посмотреть, будет ли приёмник ловить спутники в помещениях, что навряд ли. -
GPS приемник для помещений
kil00 ответил Слесарь тема в В помощь начинающему
Вероятность, что ваш приёмник поймает хотя бы одни спутник в помещении стремится к нулю, даже с хорошей антенной. Тем более в подвале. У меня сейчас висит в помещении на раме окна антенна АСМ-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%). (Понятно, чем больше спутников, тем точнее координаты и т. д.) -
Ну и где в STM32F103 первая ножка?
kil00 ответил Salamander тема в В помощь начинающему
У моего f103ret6 в левом нижнем углу 1-ая ножка. И это единственная отметка. -
прерывание от TIM1 [вопрос решён]
kil00 опубликовал тема в ARM, 32bit
Здравствуйте! Не могу включить функцию прерывания (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. -
Исчезающие ответы
kil00 опубликовал тема в Архив предложений и замечаний
Куда делись сообщения из этой темы? (их было, примерно, 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 Ответы не пропали, но находятся в разных ветках, хотя тема создавалась в одной ветке. Что бы это значило? -
/sim68_hardware_design_v1.01.pdf: Table 1. GPS and GLONASS performance.
-
Многие приёмники работают с протоколами NMEA и TSIP. Вот TSIP, как раз, бинарный, и можно с помощью него общаться с приёмником и настраивать его.
-
Случайно не в таком примерно варианте приходит строка: $GPRMC,,,,,,,,,,,*1D ? Если в таком, значит, что, скорее всего, ваш приёмник не нашёл достаточного количества спутников. Скачайте с сайта производителя ПО для работы с этим приёмником - визуально будет проще разобраться.
-
Синхронизация таймеров
kil00 ответил kil00 тема в В помощь начинающему
Насколько я понимаю, сначала нужно выключить счётчик TIM4->CR1 &=~ TIM_CR1_CEN, потом внести значение в регистр CNT, после чего счётчик включить. -
Синхронизация таймеров
kil00 ответил kil00 тема в В помощь начинающему
В попытках найти ответ на свой вопрос, я получил правильный ответ от Железнякова Дениса (www.ziblog.ru), причём ответил он втечение 20 минут. За что я ему очень благодарен! Вот сам ответ: Вы используете предварительные делители у обоих таймеров. Оба предделителя буфферизированны, т.е. просто запись значения ничего не меняет, изменения происходят только после события обновления. Следовательно вам необходимо добавить: TIM4->PSC = 70 - 1; TIM4->EGR |= TIM_EGR_UG; Это действие: а) сбросит их б) установить новый модуль счета И всё работает, как надо! -
Синхронизация таймеров
kil00 ответил kil00 тема в В помощь начинающему
Спасибо. Буду разбираться. Выставление бита ARPE в ноль в обоих таймерах ничего не изменяет.. Пока что единственное решение этого вопроса - это включить ОБА таймера по приходу внешнего сигнала, не синхронизируя их. Но очередная проблема с таймерами в STM32 останется не решённой... -
Что означает стрелочка в кружочке
kil00 ответил romannn тема в Схемотехника
Источник тока в компараторе служит для создания источника опорного напряжения, с которым сравнивается входное напряжение. В даташите всё должно быть подробно написано. -
Синхронизация таймеров
kil00 ответил kil00 тема в В помощь начинающему
Зачем убирать этот бит, если он отвечает за значение, до которого таймер считает, без него, как раз, гикак. А комментарий я уберу. Да, это я перед тем как создать тему немного откорректировал свои комментарии и не заметил этих строк, поэтому вышла ошибка. Спасибо. Буду пробовать. Вчера возникла идея, что проблема из-за битового поля TS регистра SMCR. Начал просто перебирать возможные значения, но только при значении TS=001 оба счётчика работают, во всех других вариантах счётчик TIM5 всё время равен 0. В общем, cегодня попробую поменять местами TIM5 и TIM3. Не очень понятна эта таблица 86 (RM0008 стр.386). Из описания следует, что Slave TIM, в моём варианте, - это TIM5 (стр. 386), находим TIM3 и получаем - ITR1 (TS = 001). Вроде бы всё верно, но попробую поменять таймеры местами. -
Синхронизация таймеров
kil00 опубликовал тема в В помощь начинающему
Здравствуйте! Использую 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. В чём может быть проблема? Может быть, что-то не так настроил? -
буфер для приёма изображения
kil00 ответил kil00 тема в Программирование
Если это кому-то ещё интересно. Наконец-то разобрался, как получить всё изображение в бинарном виде и записать в файл. 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. В общем, решение нашлось. -
буфер для приёма изображения
kil00 ответил kil00 тема в Программирование
Спасибо за наводку. Вот, что получилось: 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); Насколько это правильно?