mkru
Участник-
Постов
34 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о mkru
-
Звание
Участник
-
Чем паять бериллиевую бронзу?
mkru ответил mkru тема в Пайка и монтаж
Спасибо! Очень доступно объяснили. -
Чем паять бериллиевую бронзу?
mkru ответил mkru тема в Пайка и монтаж
Я видел эту статью. Цена ошибки высока. И я бы хотел знать конкретные марки припоев. Кстати, за ссылку на книгу, спасибо! -
Чем паять бериллиевую бронзу?
mkru опубликовал тема в Пайка и монтаж
Есть бронза БрБНТ1.9 из которой изготовлена пружинящий контакт. Данный контакт одним концом припаивается к плате. Каким припоем можно качественно запаять бериллиевую бронзу? Возможно, есть определенная технология подготовки и пайки. Подскажите, пожалуйста, кто в курсе. -
Да, Вы опять правы. Проблема на выходе PLL. Установил PREDIV1=8 (на входе PLL=1МГц), а PLLMULL=16 (на выходе PLL=16МГц) - работает. А если PREDIV1=8 (на входе PLL=1МГц), а PLLMULL=2 (на выходе PLL=2МГц) - не работает.
-
Если это сигнал PLLCLK, то я не учитывал значение этой частоты. Крайний рабочий диапазон при предделителе PREDIV1=7, частота кварца 8МГц, и PLLMUL=2 получается, что сигнал PLLCLK=2,3МГц, что значительно меньше рекомендованной в Reference Manual. Вывел на МСО сигнал PLLCLK_Div2. При значении PREDIV1=8..16МГц, на выходе МСО частота 1,11МГц, что не много отличается от должного при PREDIV1=8 (должно быть 1МГц) и значительно при PREDIV1=16 (должно быть 0,5МГц). При PREDIV1=7 и ниже, значение расчетное. Все таки мне кажется это проблема из-за ограничения частоты на входе PLL (1..24 МГц), а не на выходе (16..24 МГц). Но все равно, нужно придерживаться рекомендуемых параметров о которых я не знал. Спасибо всем за помощь! С тактированием более менее разобрался, пора взяться за изучение таймеров.
-
Не, не помогает.. Программа доходит до оператора while, но частота не меняется. Бит PLLON=1, PLLRDY=0, SW=10, SWS=00. Т.е. задание на включение PLL и тактрирование от PLL контроллер получает, но в эти состояния не входит.
-
Сначала сигнала на выходе МСО нет. Затем разрешается МСО и частота на выводе РА8 - 25МГц, потом выбирается источник тактирования HSI и частота устанавливается на 8МГц. Затем программа зацикливается и ожидает готовность включения PLL, частота на РА8 при этом не меняется и равна 8МГц. Это картина при PREDIV1 >= 8. Т.е. когда частота на входе PLL очевидно равна 1МГц и меньше.
-
Т.к. эта проблема появляется при PREDIV1=8, что уменьшает частоту на входе PLL до 1 МГц то, видимо, как Вы и писали, блок PLL просто не заводится. Отладку уж трогать не буду, но если чего сам на STM32 сделаю, увеличю значение кварца и посмотрю как себя будет вести контроллер при PREDIV1. Спасибо scifi!
-
Я полагаю 1..24МГц это гарантированный диапазон и PLL должен бы с ним нормально работать во всем диапазоне температур. А при комнатной температуре нижняя планка вполне могла бы опуститься до значения значительно ниже 1МГц. Но, возможно, Вы правы. Благодарю за ответ.
-
Всем доброго дня! Взял отладку STM32VL Discovery (на STM32F100RBT6). Работаю с блоком RCC: беру частоту с внешнего кварца 8МГц (HSE) пропускаю через предделитель PREDIV1 и умножаю в блоке PLLMUL. Показания системной частоты SYSCLK снимаю осциллографом на выводе MCO (ножка PA8) см. рис. Так вот частота SYSCLK выдается предсказуемо до тех пор пока предделитель PREDIV1 установлен в значении от 1 до 7. А вот если PREDIV1 в значении от 8 и выше (до 16), то программа не выполняется до конца и зацикливается на строчке: while (!(RCC->CR & RCC_CR_PLLRDY));// Ожидание готовности PLL. В этот момент контроллер тактируется от внутреннего генератора (HSI), поэтому на выводе MCO вижу частоту 8МГц. В чем может быть проблема? Вот сам код: #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" void init_PLL ( unsigned long int HSE_PREDIV,unsigned long int PLLMUL,unsigned long int HSI_OR_HSE) { // Проверяем тактируемся ли мы от HSI (), если мы уже сцеплины с HSI тогда можно начать подготовку двух других блоков HSE и PLL if((RCC->CFGR&RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI)// МК тактируется не от HSI { RCC->CIR |= RCC_CIR_HSIRDYC; // сброс флага RCC_CR_HSIRDY RCC->CR |= RCC_CR_HSION; // Запуск HSI while (!(RCC->CR & RCC_CR_HSIRDY));// Ожидание готовности HSI. RCC->CFGR &= ~(RCC_CFGR_SW_0|RCC_CFGR_SW_1); // Переключаем на HSI while ((RCC->CFGR&RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI); // Ожидание переключения на HSI. } RCC->CR &= ~RCC_CR_PLLON; // ВЫКЛЮЧАЕМ PLL. if(HSI_OR_HSE){ //определяем что заводить в PLL RCC->CFGR |= RCC_CFGR_PLLSRC_PREDIV1; // заводить в блок PLL HSE RCC->CFGR2 = HSE_PREDIV; //заносим делитель } else RCC->CFGR &= ~RCC_CFGR_PLLSRC_PREDIV1; // заводить в блок PLL HSI RCC->CFGR &= ~RCC_CFGR_PLLMULL; // Очистить биты PLLMULL RCC->CFGR |= PLLMUL; //Устанавливаем значение множителя PLLMULL RCC->CIR |= RCC_CIR_PLLRDYC; // сброс флага RCC_CR_PLLRDY RCC->CR |= RCC_CR_PLLON; // Запустить PLL. while (!(RCC->CR & RCC_CR_PLLRDY));// Ожидание готовности PLL. RCC->CFGR &=~RCC_CFGR_SW; // Очистить биты SW0 и SW1 RCC->CFGR |= RCC_CFGR_SW_PLL; //(Выбираем PLL источником для SYSCLK) while ((RCC->CFGR&RCC_CFGR_SWS)!=RCC_CFGR_SWS_PLL); // Ожидание переключения на PLL. } int main(void) { RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // Разрешение тактирования I/O порта A ( 0x00000004 ) GPIOA->CRH = 0x0000000B; // Вывод PA8 в альтернативную функцию (CNF0= 0; CNF1= 1; MODE0= 0; MODE1= 1; ) RCC->CFGR |= RCC_CFGR_MCO_SYSCLK; // Выбрать ситемный тактовый сигнал ( 0x04000000 ) init_PLL ( RCC_CFGR2_PREDIV1_DIV7, RCC_CFGR_PLLMULL2, RCC_CFGR_PLLSRC_PREDIV1); while (1){ }; } main.txt
-
Трехсимочные GSM-модули..
mkru ответил mkru тема в Сотовая связь и ее приложения
Схема работы, как я понимаю, будет такая: на одном порту сим работает постоянно, а на втором порту будут висеть две симки, которые можно будет переключать? -
Трехсимочные GSM-модули..
mkru опубликовал тема в Сотовая связь и ее приложения
Озадачился поиском 3-х симочного GSM-модуля. Пока нашел тока 2-х симочные SIM900-DS и HL6528. Может кто встречал такой? Как вариант, подскажите как из 2-х симочного реализовать 3-х симочный. Желательно, чтобы все три симки одновременно были на приеме (режим Dual-SIM Dual-Standby). -
Вообщем, проблема была в том, что у разъема были нарисованы полигоны и линии, а пина самого не было.. Там так явно не видно этого. Хотя текст "пин намбер" я как то умудрился туда вставить.. И, соответственно, это вызывало ошибку. Как то тяжко в этом редакторе начинать работать, много настроек.. Uree тебе спасибо, что помог разобраться..
-
Спасибо за помощь! Хоть теперь понятна процедура. Если я вышлю библиотеку пинов и фоотпринтов, а также dsn файл, то это поможет обнаружить ошибку?
-
Пути к падам, фоотпринтам и степ-моделям указаны. А что такое фронт-энд тул? Вот принтскрин окна, какие настройки указать? Вот еще.. в Import Logic нажимаю на Import Cadence и получаю сообщение об ошибках, суть которой, как я понял, что у символа 'CIR1600DRL1000UM' не указан пин "1". Но в Allegro Package я вижу, что Pin_Namber указан (---------------------------------------------------------------------) ( ) ( Allegro Netrev Import Logic ) ( ) ( Drawing : wd.brd ) ( Software Version : 16.6S019 ) ( Date/Time : Tue Jun 03 13:39:47 2014 ) ( ) (---------------------------------------------------------------------) ------ Directives ------ RIPUP_ETCH FALSE; RIPUP_DELETE_FIRST_SEGMENT FALSE; RIPUP_RETAIN_BONDWIRE FALSE; RIPUP_SYMBOLS ALWAYS; Missing symbol has error FALSE; SCHEMATIC_DIRECTORY 'D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro'; BOARD_DIRECTORY ''; OLD_BOARD_NAME 'wd.brd'; NEW_BOARD_NAME 'wd.brd'; CmdLine: netrev -$ -i D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro -y 1 -v D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/#Taaaaaj05992.tmp ------ Preparing to read pst files ------ Starting to read D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstchip.dat Finished reading D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstchip.dat (00:00:00.09) Starting to read D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstxprt.dat Finished reading D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstxprt.dat (00:00:00.00) Starting to read D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstxnet.dat Finished reading D:/WORK/ElsterMetronica/PROJECT/TEST-EM/WD/allegro/pstxnet.dat (00:00:00.00) ------ Oversights/Warnings/Errors ------ #1 ERROR(SPMHNI-191): Device/Symbol check error detected. ERROR(SPMHNI-195): Symbol 'CIR1600DRL1000UM' for device 'CIR1600DRL1000UM_CIR1600DRL1000' is missing pin '1'. #2 ERROR(SPMHNI-191): Device/Symbol check error detected. ERROR(SPMHNI-195): Symbol 'CIR1600DRL1000UM' for device 'CIR1600DRL1000UM_CIR1600DRL10_1' is missing pin '1'. #3 ERROR(SPMHNI-191): Device/Symbol check error detected. ERROR(SPMHNI-195): Symbol 'CIR1600DRL1000UM' for device 'CIR1600DRL1000UM_CIR1600DRL10_2' is missing pin '1'. #4 ERROR(SPMHNI-191): Device/Symbol check error detected. ERROR(SPMHNI-195): Symbol 'CIR1600DRL1000UM' for device 'CIR1600DRL1000UM_CIR1600DRL10_3' is missing pin '1'. ------ Library Paths ------ MODULEPATH = . C:/Cadence/SPB_16.6/share/local/pcb/modules PSMPATH = D:/WORK/Cadence/Library/My/PCB_Editor/Footprint/ D:/WORK/Cadence/Library/Dropbox/nii_allegrolib/ PADPATH = D:/WORK/Cadence/Library/Dropbox/nii_pins/ D:/WORK/Cadence/Library/My/PCB_Editor/Pins/ ------ Summary Statistics ------ #5 Run stopped because errors were detected netrev run on Jun 3 13:39:47 2014 DESIGN NAME : 'WD' PACKAGING ON Oct 28 2013 13:12:55 COMPILE 'logic' CHECK_PIN_NAMES OFF CROSS_REFERENCE OFF FEEDBACK OFF INCREMENTAL OFF INTERFACE_TYPE PHYSICAL MAX_ERRORS 500 MERGE_MINIMUM 5 NET_NAME_CHARS '#%&()*+-./:=>?@[]^_`|' NET_NAME_LENGTH 24 OVERSIGHTS ON REPLACE_CHECK OFF SINGLE_NODE_NETS ON SPLIT_MINIMUM 0 SUPPRESS 20 WARNINGS ON 5 errors detected No oversight detected No warning detected cpu time 0:00:42 elapsed time 0:00:00