Был мобильник М1 (Samsung древний) и зарядка З1, нормального заряда не наблюдалось - выключения мобильника, включения и рестарты режима зарядки. Предполагалось что вышел из строя контроллер. Бывает, поплакали и всё. Проходит высокое (5В) напряжение на почти заряженный аккумулятор, защита его отрубает, отключается телефон. Появляется мобильник М2 с зарядкой З2 с таким-же коннектором. Работа была нормальной, пока не подключил З1 к М2. Результат - симптомы, описанные выше. Возврат к нормальной зарядке З2 ситуацию к нормальному режиму не вернул. Напряжение на глючной З1 5 вольт без нагрузки, осциллограф показывает ровную линию. По одной из схем зарядки на выходе стоит линейный стабилизатор на 5В, судя по всему он работает нормально. Вывод - с З1 приходит нечто, какой-то импульс, сжигающий контроллер. Что сжигает контроллер? Раздел: Зарядные устройства и аккумуляторы
Доброе время суток.Имеется микроконтроллер STM32F103VBT6, на нём заведен ADC1 и используются 6 входных каналов на ножках PA0..PA5. Если в конфигурации установить оцифровку сигнала с пина PA0, то оцифровка проходит успешно, то же самое с пином PA1.Ситуация меняется, если пытаюсь оцифровать PA2..PA5. Считываются нули. Ниже привожу код. Просьба подсказать в чём может быть дело и как это исправить.Канал меняю в строчке ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_1Cycles5);. К примеру, ADC_Channel_2. #include "stm32f10x_rcc.h" #include "stm32f10x_adc.h" #include "stm32f10x_gpio.h" #include "stm32f10x_usart.h" #include "misc.h" #include "delay.h"
void SetupUSART(void); void send_to_uart(uint8_t data);
void ADC1_2_IRQHandler(void); void Get_Temp(void);
uint8_t ind1_B; uint8_t ind2_B; uint8_t ind3_B; uint8_t ind4_B; uint8_t ind5_B; uint8_t ind1_C; uint8_t ind2_C; uint8_t ind3_C; uint8_t ind4_C; uint8_t ind5_C; uint8_t ind1_D; uint8_t ind2_D; uint8_t ind3_D; uint8_t ind4_D; uint8_t ind5_D;
uint8_t ind_B;
static volatile uint16_t temp=0;
int main(void) {
SysTick_Config(8000);
RCC_APB2PeriphClockCmd(RCC_APB2ENR_AFIOEN, ENABLE); // ??
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); //GPIO_PinRemapConfig(GPIO_Remap_USART2, DISABLE); //RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;// ?? //AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE; // ?? disable JTAG GPIO_InitTypeDef GPIO_InitStructure;
// PORTA // input RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = /*GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 |*/ GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); // alternative GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure);
// PORTB // input RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_3 | GPIO_Pin_5 | GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); // output GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_4 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure);
// PORTC // input RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOC, &GPIO_InitStructure); // output GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure);
// PORTD // input RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, &GPIO_InitStructure); // alternative GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15); // PWM output pins GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOD, &GPIO_InitStructure);
// PORTE // input RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOE, &GPIO_InitStructure); // output GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOE, &GPIO_InitStructure);
SetupUSART();
// TIM4 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); // Clock to PORTD for TIM4 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); // Clock to TIM4 GPIO_PinRemapConfig(GPIO_Remap_TIM4, ENABLE);
TIM4->CCER |= (TIM_CCER_CC1E|TIM_CCER_CC2E|TIM_CCER_CC3E|TIM_CCER_CC4E); // Enable all PWM outputs
TIM4->CCMR1|= (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2); //Forward PWM for ch1 TIM4 TIM4->CCMR1|= (TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2); //Forward PWM for ch2 TIM4 TIM4->CCMR2|= (TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2); //Forward PWM for ch3 TIM4 TIM4->CCMR2|= (TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2); //Forward PWM for ch4 TIM4
TIM4->CR1 |= TIM_CR1_CEN; TIM4->CCR1 = 65536/5; // Duty cycle PWM1 (Avr voltage = 1.65 V) TIM4->CCR2 = 65536/4; // Duty cycle PWM2 TIM4->CCR3 = 65536/3; // Duty cycle PWM3 TIM4->CCR4 = 65536/2; // Duty cycle PWM4
// ADC RCC_ADCCLKConfig(RCC_PCLK2_Div8); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
ADC_DeInit(ADC1);
ADC_InitTypeDef ADC_InitStructure; ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure);
ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE); NVIC_Init(&NVIC_InitStructure); ADC_Cmd(ADC1, ENABLE); //ADC_TempSensorVrefintCmd(ENABLE); ADC_ResetCalibration(ADC1); while (ADC_GetResetCalibrationStatus(ADC1)) { }; ADC_StartCalibration(ADC1); while (ADC_GetCalibrationStatus(ADC1)) { };
GPIO_SetBits(GPIOE,GPIO_Pin_1);
while(1) {
GPIO_SetBits(GPIOC,GPIO_Pin_6); //uint8_t pa2 = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2); //send_to_uart(pa2);
//GPIO_SetBits(GPIOB,GPIO_Pin_4); // always 1 /*/chB GPIO_SetBits(GPIOB,GPIO_Pin_6); GPIO_SetBits(GPIOB,GPIO_Pin_4); GPIO_SetBits(GPIOB,GPIO_Pin_7); GPIO_SetBits(GPIOB,GPIO_Pin_9); GPIO_SetBits(GPIOE,GPIO_Pin_0); */
Delay_ms(500);
GPIO_ResetBits(GPIOC,GPIO_Pin_6); //GPIO_ResetBits(GPIOB,GPIO_Pin_4); // always 1
/*/chB GPIO_ResetBits(GPIOB,GPIO_Pin_6); GPIO_ResetBits(GPIOB,GPIO_Pin_4); GPIO_ResetBits(GPIOB,GPIO_Pin_7); GPIO_ResetBits(GPIOB,GPIO_Pin_9); GPIO_ResetBits(GPIOE,GPIO_Pin_0); */
Delay_ms(500);
ind1_B = GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_6); // ok ind2_B = GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_7); // ok ind3_B = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_3); // ok //(?) always 0 ind4_B = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5); // ok ind5_B = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8); // ok ind1_C = GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2); // ok ind2_C = GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3); // ok ind3_C = GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4); // ok ind4_C = GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_6); // ok ind5_C = GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_1); // ok ind1_D = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6); // ok ind2_D = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7); // ok ind3_D = GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4); // ok ind4_D = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0); // ok ind5_D = GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7); // ok
//send_to_uart(ind1_B); //send_to_uart(ind2_B); //send_to_uart(ind3_B); //send_to_uart(ind4_B); //send_to_uart(ind5_B); ind_B = 5-(ind1_B+ind2_B+ind3_B+ind4_B+ind5_B); switch (ind_B) { case 0: GPIO_ResetBits(GPIOB,GPIO_Pin_6); // sel1_B GPIO_ResetBits(GPIOB,GPIO_Pin_4); // sel2_B GPIO_ResetBits(GPIOB,GPIO_Pin_7); // sel3_B GPIO_ResetBits(GPIOB,GPIO_Pin_9); // sel4_B GPIO_ResetBits(GPIOE,GPIO_Pin_0); // sel5_B break; case 1: GPIO_SetBits(GPIOB,GPIO_Pin_6); // sel1_B GPIO_ResetBits(GPIOB,GPIO_Pin_4); // sel2_B GPIO_ResetBits(GPIOB,GPIO_Pin_7); // sel3_B GPIO_ResetBits(GPIOB,GPIO_Pin_9); // sel4_B GPIO_ResetBits(GPIOE,GPIO_Pin_0); // sel5_B break; case 2: GPIO_ResetBits(GPIOB,GPIO_Pin_6); // sel1_B GPIO_SetBits(GPIOB,GPIO_Pin_4); // sel2_B GPIO_ResetBits(GPIOB,GPIO_Pin_7); // sel3_B GPIO_ResetBits(GPIOB,GPIO_Pin_9); // sel4_B GPIO_ResetBits(GPIOE,GPIO_Pin_0); // sel5_B break; case 3: GPIO_ResetBits(GPIOB,GPIO_Pin_6); // sel1_B GPIO_ResetBits(GPIOB,GPIO_Pin_4); // sel2_B GPIO_SetBits(GPIOB,GPIO_Pin_7); // sel3_B GPIO_ResetBits(GPIOB,GPIO_Pin_9); // sel4_B GPIO_ResetBits(GPIOE,GPIO_Pin_0); // sel5_B break; case 4: GPIO_ResetBits(GPIOB,GPIO_Pin_6); // sel1_B GPIO_ResetBits(GPIOB,GPIO_Pin_4); // sel2_B GPIO_ResetBits(GPIOB,GPIO_Pin_7); // sel3_B GPIO_SetBits(GPIOB,GPIO_Pin_9); // sel4_B GPIO_ResetBits(GPIOE,GPIO_Pin_0); // sel5_B break; case 5: GPIO_ResetBits(GPIOB,GPIO_Pin_6); // sel1_B GPIO_ResetBits(GPIOB,GPIO_Pin_4); // sel2_B GPIO_ResetBits(GPIOB,GPIO_Pin_7); // sel3_B GPIO_ResetBits(GPIOB,GPIO_Pin_9); // sel4_B GPIO_SetBits(GPIOE,GPIO_Pin_0); // sel5_B break; } Get_Temp(); unsigned char a = temp>>4; send_to_uart(a); send_to_uart(0xFF); } }
void ADC1_2_IRQHandler(void) { if (ADC_GetITStatus(ADC1, ADC_IT_EOC)) { ADC_ClearITPendingBit(ADC1, ADC_IT_EOC); temp = ADC_GetConversionValue(ADC1); } }
void Get_Temp(void) { ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_1Cycles5); ADC_SoftwareStartConvCmd(ADC1, ENABLE); }
void send_to_uart(uint8_t data) { while(!(USART1->SR & USART_SR_TC)); USART1->DR=data; }
void SetupUSART()
{ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,ENABLE); //RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure;
/* Configure USART1 Tx (PA.09) as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure USART1 Rx (PA.10) as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_DeInit(USART1);
USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); }
Раздел: STM32
Добрый день! Дома для прослушивания музыки использую усилитель БРИГ-001, решил подключить к нему свой смартфон. Спаял провод переходник, начал эксперементировать со входами подключал, слушал , остался недоволен получаемой на выходе громкостью. Почитал тех данные устройств и выяснил, что есть несоответствие. Входное сопротивление входов УМЗЧ БРИГ-001: лин.:350 кОм (±50 кОм) Э.Д.С 180мВ кор-щих: 47 кОм (±4,7 кОм) Э.Д.С 1,8мВ Выходные параметры звукового чипа wolfson wm5110 на смартфоне 33mW при 32оМ и 100mW при 16оМ Подскажите где почитать или возможно где есть готовое решение, интернет рыл н оне нашел конкретного решения, может быть есть какая то стерео микросхема не сильно шумная и с недиковинным питанием с помощью которой я смогу скорректировать? http://ldsound.ru/brig-u-001-stereo-hi-fi/http://www.digchip.com/datasheets/parts/datasheet/526/WM5110-pdf.phpЗаранее большое спасибо! Раздел: Предусилители, темброблоки, фильтры.
Добрий день!Требуется сделать устройство к которому будет приходить провод ethernet(wan),будет один порт для вихода чтоб настроить мини роутер и будет виход для антенни.Можете хто то помочь сделать схему.Тоесть задача в том чтоб сделать роутер в котором не будет 4 порта для компа а всего 1 тоесть 1 порт ethernet(wan) 1 порт для компа и виход для антенни.Можете помочь розроботать принципиальною схему Раздел: Дайте схему!
Вопрос к людям с практическим опытом.
Схема - стандартный полный мост. с ОС.Питание от сети 220в Расстояния между силовыми дорожками у транзисторов ~ 1,1 мм. Стоит ли заказывать сквозные пропилы на плате ? Я с одной стороны понимаю что не помешают , с другой там не очень красиво выходит , плату ослаблять не хочется (хочу все на нее навесить вместе с трансом)и прочее.. Или может просто зазоры увеличить?Тогда примерно насколько?/
Спасибо. Раздел: Импульсные блоки питания, инверторы
Добрый день всем! Решил и здесь открыть тему потому-что много людей интересуются торами в личке. Ничего описывать не буду - представлю несколько спецификаций. все параметры уже давно обсосаны в этих темах - там фотки замеры и отзывы http://forum.cxem.ne...pic=152042&st=0http://forum.cxem.ne...pic=149500&st=0Тему буду дополнять инфой по ходу как время на работе выкраиваю - цена 2500 Вариант №1 - цена 2500 Вариант №2 - цена 3400 Вариант №3 Вариант №3 Размеры 250вт (примерно ) 120х70 400Вт (примерно ) 140х90 Участники: mitrandirkno3 - 1шт (вариант №1) Раздел: Усилитель мощности "Оплеуха Микрухам" Mark 2
Слыхал есть усилители с ОС не по напряжению а по току, но чот про них мало чо написано.
Прошу знающих людей объяснить:
1) что ОС по току дает? Чем лучше/хуже?
2) Как организуется ОС по току в мостовой схеме? (с общим минусовым проводом представляю)
3) Ну и ссылку бы где поподробнее это дело разбирается Раздел: Песочница (Q&A)
Здравствуйте уважаемые форумчане! Решил связать аудио процессор TDA7310 (управление громкостью, басом, тембром и т.д.) с atMega32 (выступает в роли мозгов). Согласно даташиту TDA7310 управляется либо по шине I2C (была выбрана она), либо по шине S-bus. Проблема заключается в том, что не производится управление и как мне кажется тут два варианта: 1.Ошибки схеме 2.Ошибки в алгоритме 1.Начну со схемы:Подключение производилось согласно даташиту с небольшими изменениями: SDA и SCL подключаются к соответствующим выводам atMega32(далее МК) + через подтягивающие резисторы номиналом 4.7кОм на шину питания МК. Возникли сомнения по поводу разного напряжения питания, TDA7310 - 9В, МК - 5В. Но логические уровни "подходят": Логический "0" (max) - TDA7310 (1В) atMega32 (0,7В) Логическая "1" (от) - TDA7310 (3В) atMega32 (4,2В) 2.Алгоритм:Формат сообщений изображен на рисунке ниже. В соответствии с форматом, использую вот такую функцию: void I2C_SendPocket (unsigned char value,unsigned char adres_rw) { I2C_StartCondition(); // генерируем условие СТАРТ I2C_SendByte(adres_rw); //оправляем адрес устройства+бит запись I2C_SendByte(value);//отправляем байт данных I2C_StopCondition();//генерируем условие СТОП } Адрес TDA7310: 10001000 Данные (value): увеличивающаяся на 1 переменная, т.е. 00000001...00011111 Прикрепляю документацию на TDA7310 и проект в AVRStudio (в нем еще ЖКИ и энкодер) Я новичок и еще не особо разбираюсь во всех премудростях, может кто-то что-то порекомендует, укажет на ошибки. Заранее благодарен ) Раздел: AVR
Здравствуйте! Прошу помощи, сам я не могу осилить совсем никак. есть датчик движения 220В, есть крона и пальчиковая батарейка. нужно: запитать датчик движения от кроны, датчик движения при срабатывании должен замыкать цепь прибора, питание которого идет от пальчиковой батареи 1.5В. У меня есть позорные дикие провалы в знаниях электроники, но спаять и сделать смогу) Очень прошу помощи! Раздел: Дайте схему!
[next-page][/next-page]
|