Jump to content

gafbich

Members
  • Content Count

    38
  • Joined

  • Last visited

Everything posted by gafbich

  1. Доброго Вам утра, спасибо, что откликнулись, получилось самостоятельно решить проблему. Тему можно закрывать.
  2. Использую платформу STM32F103C8T6, не получается инициализировать трансивер.
  3. Столкнулся с следующей проблемой, не могу передать сырые данные (при помощи ногодрыга) в эфир при помощи встроенного трансивера CC1101, цель передать Прицетон (для управления умным домом). //Через Timer_A получилось передавать TA1CCR0 = 50; TA1CCR1 = 50; TA1CCTL0 = OUTMOD_4; TA1CCTL1 = OUTMOD_4; TA1CTL = TASSEL__SMCLK + MC_1 + TACLR; // Init P2.2 to output TX signal to the radio P2SEL |= BIT2; P2DIR |= BIT2; P2SEL |= BIT7; P2DIR &= ~BIT7; PMAPPWD = 0x02D52; // Get write-access to port mapping regs P2MAP2 = PM_TA1CCR0A; // Map TA output to TX to P2.2 PMAPPWD = 0x00; // Lock Port mapping Жду Вашей помощи.
  4. Александр, спасибо за помощь. Проблема в другом оказалась, впаял микрофон с радиомаяка, работает идеально, внутренне сопротивление 768 Ом - гула нет, к сожалению не знаю маркировку того микрофона, у моего сопротивление порядка 900 Ом. Вопрос в другом, как запустить на этом микрофоне. По даташиту диапазон напряжения должен быть вроде как до 2,2В. Я свой с Али заказывал, параметры не указаны, но я так понимаю он на 4.5В
  5. Ок, а что же по Вашему припаяно к конденсаторам? А как это выглядит? Александр Д. Все как схеме выше, так и у меня с теми же номиналами типоразмера 0603. Единственно меня смущает только то, что при разводке UART использую перемычки ввиду сопротивлений 0 - под ними земля проходит, могут ли они в виде индуктивности такие наводки давать?!
  6. Длинна не более сантиметра. Земля общая. Со стороны подключения микрофона участок текстолита срезан по контакты микрофона.
  7. Прошу оказать помощь в подключении микрофона к GSM модему SIM800C. На текущий момент имеется проблема, подключил микрофон согласно даташиту на данный модуль (игрался регистром AT+CMIC), при снятии трубки модемом (при помощи AT команды), на фоне постоянный гул (редно, крайне редко он исчезает, на несколько секунд), как мне его победить.?! Кто сталкивался с данной задачей - пишите!
  8. Многие Гаврилова ругают! Но гляну, сравнить особо не с чем. Спасибо
  9. Специально для oldmao, ваш сарказм не уместен. А за книженцию спасибо. Про видеоуроки это все хорошо, но принцип изложения информации мне не нравится, смотрел не уложилось, либо создавалась еще куча вопросов. Для colorad, да хоть каскадные усилители, усилители для микрофона...
  10. Уважаемые, обращаюсь к Вам на предмет получения знаний. Проблема в том что я не очень понимаю принцип работы транзистора, много задумок, а они разбиваются о барьер не знания. Могли бы Вы мне оказать услугу, дать мне понимания работы транзистора что БИ что ПОЛЕВОГО. Я правда не знаю, сколько такая услуга может стоить, но я готов потерпеть расходы. Просто устал как мартышка собирать чужие схемы. С Уважением Сергей.
  11. gafbich

    SIM800L

    Доброй ночи, ситуация значит такая имеется модуль SIM800L, подключил электретный микрофон ECM-60D согласно даташиту на модуль. При вызове один шум, если громко в микрофон сказать, на другой стороне еле слышно. В даташите нашел команду AT+CMIC - настройка чувствительности микрофона - модуля под рукой нет, проверить не могу. Юзать команду?
  12. Еще один вопрос, в чем может быть затык в работе SPI на STM8S, к примеру настраивал на STM32 проблем вообще не было. а на данном камне мне посл каждой посылки (передачи) надо делать задержу в 20 nop`ОВ, а иначе выброс кривой, если что могу кинуть с лог анализатора что получается без nop а что с nop
  13. Попробовал Ваш пример - не пашет( Вот в чем проблема не пойму. Прошу прощения, Ваш пример и в правду работает! Спасибо
  14. Вы имеете ввиду UIF флаг (TIM1_SR1) void delay_us(unsigned int d) { TIM1_CNTRH=0;TIM1_CNTRL=0; TIM1_ARRH=((d&0xFF00)>>8); TIM1_ARRL=d&0x00FF; while((TIM1_SR1&(1<<0))!=1){}; TIM1_SR1&=~(1<<0); }
  15. Объясните пожалуйста следующие, на руках имеется STM8S103F3P6, сначала была проблема запустить SPI, проблема была даже не в запуске а корректной работе - сделал! А вот с таймером я засел вообще. Хочу сделать программный delay по средствам таймера TIM1 без прерываний. Ниже скидываю инициализацию таймера TIM1 и обработчник(функция delay) Тактовая частота 2MHz. Где загвоздка? #include "iostm8s103f3.h" void TIM1_init(void); void delay_us(unsigned int d); void TIM1_init(void) { ////Величина автоперезагрузки//// unsigned int auto_preload = 65535; TIM1_ARRH=((auto_preload&0xFF00)>>8); TIM1_ARRL=auto_preload&0x00FF; //////////////////////////////// ////////Установка делителя////// unsigned int div_load = 2000; TIM1_PSCRH=((div_load&0xFF00)>>8); TIM1_PSCRL=div_load&0x00FF; //////////////////////////////// TIM1_CR1|=(1<<7)|(1<<1)|(1<<0); } void delay_us(unsigned int d) { TIM1_CNTRH=0;TIM1_CNTRL=0; TIM1_ARRH=((d&0xFF00)>>8); TIM1_ARRL=d&0x00FF; while(((unsigned int)((TIM1_CNTRH<<8)+TIM1_CNTRL))<d){}; } int main() { ///////////////////////////////////// //Отключаем Всю периферию // CLK_PCKENR1=0x00; CLK_PCKENR2=0x00; ///////////////////////////////////// CLK_PCKENR1|=(1<<7);//Включаем тактирование для TIM1 TIM1_init(); //Настройка ногодрыга для проверки таймера// PB_DDR|=(1<<5); PB_CR1|=(1<<5); PB_CR2|=(1<<5); //////////////////////////////////////////// while(1) { PB_ODR&=~(1<<5); delay_us(1000);//1сек PB_ODR|=(1<<5); delay_us(1000);//1сек } return 0; }
  16. Есть сигнал от датчика, который передается по "воздуху", перехват сделал при помощи таймера и условия в прерывании, на данном этапе интересно применить захват и реализовать при помощи его!
  17. Прошу помощи, не могу разобраться с режимом захвата таймера. как правильно настроить! Читал разные статьи, но понимания от этого не добавилось!
  18. Добрый день, необходим перевод страниц (с 6 по 10), текста мало в основном картинки, из технической документации на трансивер Si4432. AN463.pdf
  19. Проблема с настройкой внешнего прерывания на PA1 Настройки прерывания: #include "stm32f0xx_exti.h" #include "stm32f0xx_gpio.h" #include "stm32f0xx_rcc.h" #include "stm32f0xx_misc.h" #include "stm32f0xx_syscfg.h" EXTI_InitTypeDef exti; NVIC_InitTypeDef nvic; GPIO_InitTypeDef gpio; void RCC_Set(void); void exti_setting(void); void GPIO_Set(void); //############################################################// //##################Включаем тактирование#####################// //############################################################// void RCC_Set(void) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE); } //############################################################// //############################################################// //############################################################// //############################################################// //#######################Настройка GPIO#######################// //############################################################// void GPIO_Set(void) { gpio.GPIO_Mode=GPIO_Mode_OUT; gpio.GPIO_OType=GPIO_OType_PP; gpio.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9; gpio.GPIO_PuPd=GPIO_PuPd_NOPULL; gpio.GPIO_Speed=GPIO_Speed_Level_2; GPIO_Init(GPIOC,&gpio); gpio.GPIO_Mode=GPIO_Mode_IN; gpio.GPIO_OType=GPIO_OType_PP; gpio.GPIO_Pin=GPIO_Pin_1; gpio.GPIO_PuPd=GPIO_PuPd_NOPULL; gpio.GPIO_Speed=GPIO_Speed_Level_2; GPIO_Init(GPIOA,&gpio); } //############################################################// //############################################################// //############################################################// //############################################################// //###################Настройка Прерывания#####################// //############################################################// void exti_setting(void) { exti.EXTI_Line=EXTI_Line1; exti.EXTI_LineCmd=ENABLE; exti.EXTI_Mode=EXTI_Mode_Interrupt; exti.EXTI_Trigger=EXTI_Trigger_Rising_Falling; EXTI_Init(&exti); nvic.NVIC_IRQChannel=EXTI0_1_IRQn; nvic.NVIC_IRQChannelCmd=ENABLE; nvic.NVIC_IRQChannelPriority=0; NVIC_Init(&nvic); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource1); NVIC_EnableIRQ(EXTI0_1_IRQn); } //############################################################// //############################################################// //############################################################// int main(void) { RCC_Set(); GPIO_Set(); exti_setting(); while(1) { } } //############################################################// //##################Обработчик Прерывания#####################// //############################################################// void EXTI0_1_IRQHandler(void) { GPIOC->ODR^=GPIO_Pin_8; //Инвертируем состояние светодиода EXTI_ClearITPendingBit(EXTI_Line1); } //############################################################// //############################################################// //############################################################// Чтобы не подать на PA1, обработчик не отрабатывает! Что не так, что я упустил?
  20. Тут достаточно было написать TIM3->CR1 = (1<<1); А здесь вместо "+" нужен "-". Точно не уверен, но вместо точки надо "->" На счет минуса я тоже согласен. Там все верно относительно синтаксиса.
  21. Есть отладочная плата (STM32F103C8T6 + внешний кварц 8МГц), при настройке и запуске таймера с дрыганием ноги за один такт, при всех настройках не могу добиться чтобы один такт ровнялся 1мкс. Вот мой код #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" #include "stm32f10x_tim.h" #include "stm32f10x_conf.h" void InitTMI(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM2->CR1=(0<<9)|(0<<8)|(1<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1); TIM2->ARR=3; TIM2->PSC=8-1; TIM2->CNT=0; TIM2->CR1|=(1<<0); } int main(void) { //RCC_HSE_ON; RCC->CR=RCC_HSE_ON; RCC->CFGR&=(~(1<<7)|(1<<6)|(1<<5)|(1<<4)); while (!(RCC->CR & RCC_CR_HSERDY)) {}; // Ожидание готовности HSE. RCC->CFGR &=~RCC_CFGR_SW; // Очистить биты SW0, SW1. RCC->CFGR |= RCC_CFGR_SW_HSE; // Выбрать HSE для тактирования SW0=1. GPIO_InitTypeDef gpioA; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); gpioA.GPIO_Mode=GPIO_Mode_Out_PP; gpioA.GPIO_Speed=GPIO_Speed_2MHz; gpioA.GPIO_Pin=GPIO_Pin_1; GPIO_Init(GPIOA,&gpioA); InitTMI(); while(1) { if(TIM2->CNT==1){GPIO_ResetBits(GPIOA,GPIO_Pin_1);} if(TIM2->CNT==2){GPIO_SetBits(GPIOA,GPIO_Pin_1);} //GPIO_ResetBits(GPIOA,GPIO_Pin_1); } }
  22. В зачем чужие библы использовать, я свою написал. Работает норм. Все сделал на программном SPI.
  23. Необходимо запустить дисплей Nokia 5110 при помощи ATmega16, SPI сделал программный, пытаюсь инициализировать дисплей вроде все норм (Собирал схему в Proteus), а вывести не получается. Прошу помощи в данном вопросе, кто делал - поделитесь инфой
×
×
  • Create New...