Jump to content
Nicollo

stm32f103c8t6 прерывание по приему USART1

Recommended Posts

Добрый вечер.

Решил недавно поиграться с микроконтроллерами, ибо были в загашнике такие платы: 

Ayx1N.png

Ппробовал погонять данные по USART. В обычном режиме - все работает нормально, но вот с прерываниями - немного не получается. 

Я взял пример из стандартной библиотеки, скомпилил, залил и прерывание не срабатывает.

#include <stm32f10x.h>
#include <misc.h>

volatile char received_string[MAX_STRLEN+1];

void Delay(__IO uint32_t nCount) {
  while(nCount--) {
  }
}

void init_USART1(uint32_t baudrate){

   GPIO_InitTypeDef GPIO_InitStruct;
   USART_InitTypeDef USART_InitStruct;
   NVIC_InitTypeDef NVIC_InitStructure;

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);


   GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
   GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
   GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOA, &GPIO_InitStruct);

   GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;
   GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
   GPIO_Init(GPIOA, &GPIO_InitStruct);

   USART_InitStruct.USART_BaudRate = baudrate;
   USART_InitStruct.USART_WordLength = USART_WordLength_8b;
   USART_InitStruct.USART_StopBits = USART_StopBits_1;
   USART_InitStruct.USART_Parity = USART_Parity_No;
   USART_InitStruct.USART_HardwareFlowControl =    USART_HardwareFlowControl_None;
   USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
   USART_Init(USART1, &USART_InitStruct);

   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);


   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
   NVIC_Init(&NVIC_InitStructure);      

   USART_Cmd(USART1, ENABLE);
}

void USART_puts(USART_TypeDef* USARTx, volatile char *s){

   while(*s){
      while( !(USARTx->SR & 0x00000040) );
      USART_SendData(USARTx, *s);
      *s++;
   }
}

int main(void) {

  init_USART1(9600); // initialize USART1 @ 9600 baud

  USART_puts(USART1, "Init complete! Hello World!\r\n"); // just send a message to indicate that it works

   while (1){
     /*
      * You can do whatever you want in here
      */
   }
}

void USART1_IRQHandler(void){

    // check if the USART1 receive interrupt flag was set
    if( USART_GetITStatus(USART1, USART_IT_RXNE) ){

        static uint8_t cnt = 0; // this counter is used to determine the string length
        char t = USART1->DR; // the character from the USART1 data register is saved in t

        // check if the received character is not the LF character (used to determine end of string)
        // or the if the maximum string length has been been reached
        if( (t != '\n') && (cnt < MAX_STRLEN) ){
            received_string[cnt] = t;
            cnt++;
        }
         else{ // otherwise reset the character counter and print the received string
           cnt = 0;
           USART_puts(USART1, received_string);
        }
    }
}

Решил упростить задачу и поморгать светодиодом:
 

void USART2_IRQHandler(void){
	USART_ClearITPendingBit(USART2, USART_IT_TC);
	USART_ClearITPendingBit(USART2, USART_IT_RXNE);
	static uint8_t isSet = SET;
	GPIO_WriteBit(GPIOC , GPIO_Pin_13 , isSet);
	isSet = !isSet;
}

Оно в обработчик вообще не попадает. 

Подскажите, может что не так делаю?
Отладчика пока нету, заказал - жду.

Есть FTD USB-UART преобразователи, через них прошиваю и проверяю. 

А еще я в основной цикл добавил постоянную отправку строки, и оно таки прерывается, когда я шлю байт с компа, но в обработчик оно, походу, не попадает. Пробовал на USART2 - такая же фигня.

Share this post


Link to post
Share on other sites

помимо чтения USART1->DR

еще надо и

USART1->SR

в конце не хватает очистки флага прерывания

//очистка флага прерывания
USART_ClearITPendingBit(USART1, USART_IT_RXNE);

как то так стоит попробовать:

void  USART1_IRQHandler(void)
{
	if(USART_GetFlagStatus(USART1, USART_IT_RXNE) == SET)
	{
		if ((USART1->SR & (USART_FLAG_NE|USART_FLAG_ORE)) == 0)
		{
			recive_UART1 = USART1->DR;
		}
		//очистка флага прерывания
    	USART_ClearITPendingBit(USART1, USART_IT_RXNE);
	}
}

 

если не заработает смотреть инициализацию

слепой или нету))

  USART_Init(USART1, &USART_InitStructure); 
  USART_ClearFlag(USART1,USART_FLAG_TC);
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
  USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
  USART_Cmd(USART1, ENABLE);

 

Edited by Mishany

Share this post


Link to post
Share on other sites
7 часов назад, Mishany сказал:

//очистка флага прерывания
USART_ClearITPendingBit(USART1, USART_IT_RXNE);

Зачем? Объяснить можем?

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

7 minutes ago, dosikus said:

Зачем? Объяснить можем?

Я читал где-то что неявная очистка статус регистра немного хромает, и для подстаховки рекомендуют сбрасывать бит флага прерывания вручную.
 

2Mishany: я так делал, не помогло

Инициализация у меня есть вот такая: 

	USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

	NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
   	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
   	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
   	NVIC_Init(&NVIC_InitStructure);      

Т.е. я хочу чтоб прерывание сработало ТОЛЬКО на приеме.

И мне кажется что прерывание происходит, но в обработчик оно почему-то не попадает

Share this post


Link to post
Share on other sites
Только что, dosikus сказал:

Зачем?

Открываем умный документ и смотрим. Там на чисто англицком сказано, что бит прерывания USART не сбрасывается аппаратно и его требуется сбросить программно (это, кстати, ко многим прерываниям STM относится). В противном случае при попадании в прерывание программа никогда из него не выйдет.

Цитата

This bit is set by hardware when the content of the RDR shift register has been transferred to
the USART_DR register. An interrupt is generated if RXNEIE=1 in the USART_CR1 register.
It is cleared by a read to the USART_DR register. The RXNE flag can also be cleared by
writing a zero to it.

 

Edited by BARS_

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

6 минут назад, Nicollo сказал:

Я читал где-то что неявная очистка статус регистра немного хромает, и для подстаховки рекомендуют сбрасывать бит флага прерывания вручную.

Где что вы читали ? Кто вообще эту хрень выдвинул?

Читайте RM , а не кухаркины статьи 

RXNE сбрасывается чтением SR с последующим чтением DR .

Причем чтение SR происходит при проверке флага.

И не надо лепить горбатого - все проверенно и работает

BARS_, ту да же - читать RM .

Edited by dosikus

Share this post


Link to post
Share on other sites
Только что, dosikus сказал:

RXNE сбрасывается чтением SR с последующим чтением DR .

Тогда читайте даташит ВНИМАТЕЛЬНО. Выше я привел абзац, где черным по белому написано, что RXNE очищается записью нуля в него.

Share this post


Link to post
Share on other sites
1 minute ago, BARS_ said:

Тогда читайте даташит ВНИМАТЕЛЬНО. Выше я привел абзац, где черным по белому написано, что RXNE очищается записью нуля в него.

Тут и вы и он равы 

Quote

It is cleared by a read to the USART_DR register. The RXNE flag can also be cleared by
writing a zero to it.

Он сам должен сбрасываться, после прочтения USART_DR, ну или также можно вручную сбросить. 

В любом случае, мою проблему это не решает.

Share this post


Link to post
Share on other sites

 

BARS_,

Читаем внимательно - то что нужно выделил 

Цитата

Bit 5 RXNE: Read data register not empty
This bit is set by hardware when the content of the RDR shift register has been transferred to
the USART_DR register. An interrupt is generated if RXNEIE=1 in the USART_CR1 register.
It is cleared by a read to the USART_DR register. The RXNE flag can also be cleared by
writing a zero to it.
This clearing sequence is recommended only for multibuffer
communication.

Да для сброса RXNE не надо читать SR , но сбрасывается он чтением DR  а также может быть сброшен записью 0 .
BARS_, я удивлен тобой , разве можно читать документацию частями????

Nicollo,  ваша проблема решается элементарно - выкашивается на SPL и все прекрасно работает.

 

#define USARTCLK 72000000UL

#define BAUDRATE 115200UL


void USART1_IRQHandler (void)
 {
 
   if(USART1->SR & USART_SR_RXNE)
   {
     UsartBuf =USART1->DR;
    
   }
   
 }



 void UsartInit(void)
 {
   RCC->APB2ENR |=RCC_APB2ENR_USART1EN | RCC_APB2ENR_IOPAEN;
    
    GPIOA->CRH &=~ (GPIO_CRH_CNF10 |GPIO_CRH_CNF9|GPIO_CRH_MODE10);
    GPIOA->CRH |= GPIO_CRH_CNF10_0 |GPIO_CRH_CNF9_1 | GPIO_CRH_MODE9;
    
    USART1->CR1 |= USART_CR1_TE |USART_CR1_RE |USART_CR1_RXNEIE;
    USART1->BRR =(USARTCLK+BAUDRATE/2)/BAUDRATE;
    USART1->CR1 |=USART_CR1_UE;
    
    NVIC_SetPriority(USART1_IRQn,15);
    NVIC_EnableIRQ(USART1_IRQn);
   
   
 }

void USART_write (char data)
  {
    while(!(USART1->SR & USART_SR_TXE));
    USART1->DR=data;
  }
	
void  USART_WR_String(const char *s)
{	int i = 0;
	while (s [i] != 0) {

	USART_write (s[i++]);
	}
}



 

Edited by dosikus

Share this post


Link to post
Share on other sites

Причем сброс флага записью 0 рекомендован только при multibuffer communication, а сие доступно только при работе с DMA .

Share this post


Link to post
Share on other sites
23 minutes ago, dosikus said:

Nicollo,  ваша проблема решается элементарно - выкашивается на SPL и все прекрасно работает.

void init_USART1(uint32_t baudrate){

	RCC_ClocksTypeDef RCC_ClocksStatus;
	RCC_GetClocksFreq(&RCC_ClocksStatus);

	RCC->APB2ENR |=RCC_APB2ENR_USART1EN | RCC_APB2ENR_IOPAEN;

	GPIOA->CRH &=~ (GPIO_CRH_CNF10 |GPIO_CRH_CNF9|GPIO_CRH_MODE10);
	GPIOA->CRH |= GPIO_CRH_CNF10_0 |GPIO_CRH_CNF9_1 | GPIO_CRH_MODE9;

	USART1->CR1 |= USART_CR1_TE |USART_CR1_RE |USART_CR1_RXNEIE;
	USART1->BRR =(RCC_ClocksStatus.PCLK2_Frequency+baudrate/2)/baudrate;
	USART1->CR1 |=USART_CR1_UE;


	NVIC_SetPriority(USART1_IRQn,15);
	NVIC_EnableIRQ(USART1_IRQn);
}

void USART_write (char data)
{
	while(!(USART1->SR & USART_SR_TXE));
	USART1->DR=data;
}

void  USART_WR_String(const char *s)
{	int i = 0;
	while (s [i] != 0) {
		USART_write (s[i++]);
	}
}

int main(void) {

  init_USART1(9600); // initialize USART1 @ 9600 baud

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_Init(GPIOC , &GPIO_InitStructure);
  GPIO_WriteBit(GPIOC , GPIO_Pin_13 , RESET);

  USART_WR_String("Init complete! Hello World!\r\n"); // just send a message to indicate that it works

  while (1){
    /*
     * You can do whatever you want in here
     */
  }
}

// this is the interrupt request handler (IRQ) for ALL USART1 interrupts
void USART1_IRQHandler(void)
{
	if(USART1->SR & USART_SR_RXNE)
	{
		char recive_UART1 = USART1->DR;
		USART_write(recive_UART1);
	}
}

Не интераптит

Share this post


Link to post
Share on other sites
void USART1_IRQHandler(void)
{
	static uint8_t isSet = SET;
	GPIO_WriteBit(GPIOC , GPIO_Pin_13 , isSet);
	isSet = !isSet;

	if(USART1->SR & USART_SR_RXNE)
	{
		char recive_UART1 = USART1->DR;
		USART_write(recive_UART1);
	}
}

Сделал даже так, помограть диодом - оно в обработчик даже не заходит

Share this post


Link to post
Share on other sites
14 минуты назад, Nicollo сказал:

Не интераптит

А к чему ваши правки ? 

 

Подсказываю метод проверки :

Создаем проект с моим и неправленным кодом , тактовая чипа должна быть 72МГц  если тактовая иная правим здесь 

#define USARTCLK 72000000UL

Подсоединяем через адаптер UART -USB к ББ   и добиваемся устойчивого приема на стороне ББ отправляемых нами строк .

И только потом пробуем отправить с ББ и брякнуться в прерывании.

Да, сперва проверяем адаптер UART -USB замкнув RX и TX адаптера( без подсоединения отлаживаемой платы) и проверяя эхо в терминальной программе.

14 минуты назад, Mishany сказал:

у меня и без выкашивания SPL все прекрасно работает

А у нас в квартире газ...

Edited by dosikus

Share this post


Link to post
Share on other sites
8 minutes ago, dosikus said:

Подсоединяем через адаптер UART -USB к ББ   и добиваемся устойчивого приема на стороне ББ отправляемых нами строк .

И только потом пробуем отправить с ББ и брякнуться в прерывании...

Подсоединил, сделал как вы написали, на компе строку получил. прерывание не сработало

Share this post


Link to post
Share on other sites

Сперва 

Цитата

Да, сперва проверяем адаптер UART -USB замкнув RX и TX адаптера( без подсоединения отлаживаемой платы) и проверяя эхо в терминальной программе.

Кстати какой адаптер и какая терминальная программа?

И здесь крайне желательно наличие лог. анализатора - сокращает подобные танцы с бубном до минимума...

Edited by dosikus

Share this post


Link to post
Share on other sites
4 minutes ago, dosikus said:

Кстати какой адаптер и какая терминальная программа?

Адаптер: FT232RL. PUTTY

RX и TX работают. Прием-передачу делал без прерываний в основном цикле - работало без проблем. 

 

Share this post


Link to post
Share on other sites

Вы проверили эхо?

У меня так же все работает и с прерываниями и с DMA , так что ваша реплика -ниАчем ...

Share this post


Link to post
Share on other sites
2 minutes ago, dosikus said:

Вы проверили эхо?

У меня так же все работает и с прерываниями и с DMA , так что ваша реплика -ниАчем ...

Работает эхо, и адаптеры я менял. Оно просто не входит в обработчик, прерывание случается.

Share this post


Link to post
Share on other sites
4 минуты назад, Nicollo сказал:

Оно просто не входит в обработчик, прерывание случается.

Что сие означает? Как вы это проверяете? Что за IDE?

Например Keil - запускаете дебаг , ставите бряк на строку 

if(USART1->SR & USART_SR_RXNE)

Запускаете процесс, жмете кнопку на клаве когда окно putty в фокусе - должно сработать прерывание.

Edited by dosikus

Share this post


Link to post
Share on other sites

я думаю, я нашел причину. Я использую OpenSTM32 IDE

Оно, при создании проекта, само подгружает SPL так вот, там есть файлик: sturtup_stm32.s

насколько я понял в нем мапятся прерывания с обработчиками, и он не проинициализирован до конца

g_pfnVectors:
	.word	_estack
	.word	Reset_Handler
	.word	NMI_Handler
	.word	HardFault_Handler
	.word	MemManage_Handler
	.word	BusFault_Handler
	.word	UsageFault_Handler
	.word	SVC_Handler
	.word	DebugMon_Handler
	.word	PendSV_Handler
	.word	SysTick_Handler

Я скачал библиотеку с сайта и посмотрел в этот файлик, и он немного отличается. Сейчас попытаюсь запустить проект с новой либой.

Added:

Да, все верно, подменил файл, все заработало. Спасибо всем.

Edited by Nicollo

Share this post


Link to post
Share on other sites

я обычно предпочитаю в обработчик писать только это

void USART1_IRQHandler(void)
{
  HAL_UART_IRQHandler(&huart1);
}

а остальное уже делать в колбэке. Хотя по сути это одно и то же, но зато вероятность ошибиться меньше. Потому как HAL_UART_IRQHandler все флаги сам позсбрасывает там где надо и вызовет нужный колбэк

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	if (huart->Instance == USART1)
	{		
		xQueueSendToBackFromISR( displayQueueHandle, &UART1_rxBuffer, 0 );
	}
}

 

Edited by mail_robot

Share this post


Link to post
Share on other sites

Здесь не хватало скорости в прерывание из-за SPL http://www.microchip.su/showpost.php?p=231953&postcount=162

Ну а тем кто пользует калокуб можно только посочувствовать , эта гадость из любого чипа сделает тормоз...

Edited by dosikus

Share this post


Link to post
Share on other sites

Во первых сперва почитай кого ты в говнокодерстве обвиняешь, а во вторых причем здесь бездумнонатыканнаяхрень в калокубе????

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By svd
      Предлагаю печатные платы для паяльной станции на STM32 и OLED дисплее 1,3" версии 2.1S
      Плата делалась под китайский алюминиевый корпус.
      Тема, где обсуждается данная станция T12 , опубликована на сайте radiokot.ru
      Фото платы


      Схема немного доработана:
      1) добавлены блокировочные конденсаторы 0,1 мкФ в цепях микроконтроллера;
      2) добавлен резистор в цепи буззера для возможности снижения громкости;
      3) есть возможность подключать жала JBC (для Т12 в разъеме паяльника запаивается перемычка)

      Большинство элементов типоразмера 0603. DC/DC преобразователь PSR-7805LF можно заменить на любой китайский аналог или микросхему 7805
      Ссылки на возможные замены:
      DC/DC аналог 7805 №1
      DC/DC аналог 7805 №2

      Во вложениях схема и расположение элементов на ПП, чертеж передней панели и прошивка под дисплей 1.3" с контроллером SH1106.

      Цена за одну плату 400 руб c учетом стоимости пересылки по РФ. Количество плат ограничено.
      По всем вопросам просьба обращаться в личку.
       
      STM32_T12_2.1S_SSH1106_1.3_v2_.pdf передняя панель.pdf T12_HW21S_Encryption-SH1106.zip
    • By ART_ME
      Здравствуйте.
      Рискну спросить: не завалялась ли у кого в хозяйстве для STM32F103xx: 
      - AC induction motor IFOC software library V1.0
      либо 
      - ACIM and PMSM motor control software libraries release 2.0
      ?
      Просьба поделиться если вдруг такой раритет найдется. 
       
    • By Илья Юрченко
      Добрый день, уважаемые форумчане! Для научной работы хотел собрать данные о том, насколько микроконтроллеры stm32 удовлетворяют нужды и требования программистов и разработчиков продуктов на нем. Если не сложно, ответьте, пожалуйста, важны данные)
      Разумеется "очень средне" неадекватная метрика, но в рамках работы нужна именно средняя удовлетворённость, и определение существует ли необходимость в создании другой серии универсальных плат на базе МК.
    • By n_angelo
      Привет. Хочу узнать ваше мнение. Я новичок в embedded. Можно сказать, что пришел с веба. Малость Python, JS, C. Меня, конечно, предупреждали начать с AVR, но я уверенный в себе решил сразу залезть на STM32. Вынашивая идею для проекта, параллельно курив Reference Manual и Data Sheet по STM32, я понял что его будет слишком жирно для проекта. Я перескочил на STM8L. И тут меня начал огорчать мир embedded. При переходе между stm8 и stm32 нужно менять IDE (TrueStudio на STVD). Во избежание таких курьёзов я пересаживаюсь на IAR. В процессе подключения родной библиотеки от ST, понимаю что библиотека от IAR для того же самого STM8L152C6T6 дико отличается (макросы, структуры). Привет веб-разработка. Как такое могло произойти, что под один и тот же контроллер ST даёт одну библиотеку, а IAR другую. И нигде в уроках тебя не предупредят об этом. Ну, ребят, у меня всего одна жизнь. Вы уже договоритесь там между собой? Придите к единому стандарту. Или они так решили новичков завендерлочить? Моё мнение (не претендует на правильное): пробираясь сквозь тернии популярной архитектуры ARM, инфраструктуры, инструментария, забываешь про бизнес-логику устройств. А еще просто пропасть между "я ничего не понимаю" и "господи, я зажег светодиод". Речь не о копипастерах с уроков, а действительно понимая что ты делаешь, в каком регистре, что меняешь. Это путь в 2000 (а то и больше) страниц на английском перечитанных по несколько раз, чтобы отоложилось. И в конце тебя ждут разные версии одной и той же библиотки в разных IDE. И сидишь вдупляешь... ну почему... я же в правильный регистр кладу правильную маску... ох, наболело. Такое ощущение что не для людей это всё делали, не для людей.
      Ваше мнение?
    • By Sofia Vin
      Предлагаем проектную работу в Москве:
      Микроконтроллер STM32F103.
        
      Есть встроенный код с использованием функций библиотеки FreeRTOS, код имеет описанный протокол для связи с внешним миром.
        
      Необходимо проводить доработку кода под задачи программиста верхнего уровня и его тестирование в составе оборудования. 
      Работа в лаборатории (м.Университет) и удаленно. 
      Оплата по договоренности.
      Если Вы обладаете опытом схемотехнического проектирования и программирования микроконтроллеров, и Вас заинтересовала данная возможность, ждем Ваши отклики по контактным данным:
      8 (925) 023-60-02   Алексей
      E-mail: nassa@marathon.ru
       
  • Сообщения

    • Искренне вас поздравляю с этим.  Вот мне 45 только, а я на полном серьёзе причем давно сомневаюсь, что до пенсии доживу, а даже если и доживу - буду рад этому факту.  Блин, вот я тоже когда мимо помоек прохожу и вижу если какую технику на выброс, руки прям чешутся. И может быть забрал бы, но - мало ли кто из знакомых знакомых увидит - жена, дети будут комплексовать, что по помойкам шарюсь  Благо на работе часто есть чего на выброс, можно особенно не афишируя взять "во временное пользование"...
    • Такая разность в токах покоя выхлопных транзисторов ВК не имеет какого-либо решающего значения - оба транзистора на начальном участке характеристики, соответствующей режиму АВ, и на "первом ватте" работа ВК обеспечивается теми транзисторами, которые первыми выходят на линейный режим, при этом разница в рассеиваемой мощности копеечная. А в динамическом режиме при десятках, и тем более сотнях  ватт это вообще по барабану - на них будет рассеиваться мощность различающаяся долями процента. Да - "примерно пополам". (с) 
    • Они по большому ,все фиговые,в маленьком клрпусе собрана компактно,самый главный и нужный вариант с длительным сроком гарантии, всё остальное орлянка,выбирайте три и пять лет гарантии и всегда будут у ва  рабочии лампочки без танцов с заменой светодиодов и драйвера...  Смысла маленькие делать тогда не будет, мне вот после окончания гарантии попадаются светильники под амстронг от икеа, ДВО 6569-Р ,но они просто даром ,сгорели, проверил и там светодиоды под подовину в 4 линейках, драйвер рабочий у всех 95 вольт 300 мА, менять светодиоды нужно полностью, линейки на стеклотекстолите тонком без термо клея и пасты конечно. Такие  раньше уже были в ремонте(у жены стоят на работе, личные) и там стоят по 4 паралельно светодиода,если заранее вижу что один из них .потух ,начинаю намекать что пора снять домой,сгорит скоро,а для неё он работает и трогать не надо....в каждом 28х4=112 светодиода.лениво чтото 500 штук менять в четырех. Нижний подогрев надо делать...
    • Станцией паяльной греть надо,чтоб разобрать нормально,ерунда это кипятить.Таким образом не один не сломал.
    • Не думайте что они долго проработают. Практически содержимое тоже самое, только "флакон" другой.
    • @universal007 А с чего вы взяли что современные мультиметры  плохие? Вот как пример такой же  MASTECH https://www.nix.ru/autocatalog/multimeters/MASTECH-M830BZ-Tsifrovoj-multimetr-13-2002_417683.html# Китайцы нам продают то что мы покупаем, а у нас народ любит максимально на шару, соот. и качество такое же. Лет 10 даже более покупал такой же "no name" так само развалился как и современные, это если брать мультиметры из самых первых где вместо кляксы стояла дип микросхема тогда возможно и согласен. И @KRAB совершенно прав тратить свое время на копеечный прибор не имеет смысла, так как самое ценное это время.
  • Покупай!

×
×
  • Create New...