Рейтинг
6.79
голосов: 6

О блоге

Устройства, приспособления, советы, которые доказали свою несостоятельность. Или, что еще хуже — вредность.

Администраторы (1)

Модераторы (0)

Модераторов здесь не замечено

Читатели (63)

Melted_Metal ploop Vasil WildCat zb3k Vga Alatar mzw labor neiver zetroot bdpcvit SShiva loxal Lifelover pkm NCCat qic mvb nmors

Все читатели блога

Подключение компилятора к CLion на примере Microchip XC8

Это продолжение основной статьи, тут описана только настройка IDE CLion.
Дисклеймер, вводная и пререквезиты находятся тут. Там же описана настройка VS Code.



CLion

Clion штука платная, но приятная. Имеет 30-дневный пробный период и месячную подписку в размере 10 баксов для частных лиц, что вполне терпимо, учитывая что она умеет.

Изменения в CMakeLists.txt
Начнем с простого. Добавляем в CMakeLists.txt, сразу после объявления минимальной версии, следующие строки, стыренные в одном из официальных примеров. В них мы отключаем проверку компилятора, при конфигурировании проекта CMake'ом.

set(CMAKE_C_COMPILER_WORKS 1) # Dont check XC8, it is useless.
unset(CMAKE_CXX_COMPILER) # Disable "CXX not used" warning


Custom compiler *.yaml
Для подключение не знакомого компилятора, клион требует специального файла — custom_compilers.yaml
Где он будет находиться не важно, позже мы укажем студии на него через GUI.

Иные пути, вроде использования встроенных toolchains клиона или подключения файла тулчейна в CMake результатов не дали. Там были левые флаги, ошибки и гора проблем.

Jetbrains любезно написали гайд и предоставили репу с примерами.
Стоит полазать по ним, т.к. для своего компилятора, мне пришлось сшить портянку из нескольких официальных примеров.

Спасибо поддержке Jetbrains. Без их пинка я бы не разобрался.



custom-compiler-xc8.yaml

compilers:
  - description: XC8 Compiler
    match-sources: ".*\\.c"
    match-language: C
    # Это важный момент, это не только регэксп по которому будет определен exe.
    # Судя по всему, оно проходиться через PATH и с помощью этого регэкспа 
    # так же определяет переменную ${compiler-exe-dir}
    match-compiler-exe: "(.*/)?xc8-cc(\\.exe)?" 
    code-insight-target-name: avr # сюда просят вписать наиболее похожую архитектуру. Не знаю зачем.
    # Папки с системными и процессорными инклудами.
    include-dirs: ["${compiler-exe-dir}/../pic/include/c99", "${compiler-exe-dir}/../pic/include/"]

    # Компиляторо-специфичные дефайны, прагмы и символы, 
    # чем оба поля отличаются - не знаю
    # Но во втором можно вписывать в Си стиле.
    defines:
      _DATA_ACCESS:
    defines-text: "
#define _INLINE 1
#define __XC 
#define __XC8
#define __XC8_VERSION=2000
#define __PICC18__
#define high_priority
#define low_priority
#define __interrupt(x)
#define _XTAL_FREQ=41666666
#define __bit
#define __near
"

PS: в какой момент этот файл начинает работать, мне не известно. Сам по себе, голый, он ничего не сделает, даже если тыкнуть IDE в него носом. Дальше будет описана магия и если руны будут нарисованы криво, а пентаграмма задета ногой — ничего не заработает.

Открытие проекта в IDE
Теперь запускаем IDE.
File -> Open project... и открываем корневую директорию.
Выскочит окошко настройки СMake — закрываем его.
В этот момент CMake output может выкинуть непонятные ошибки. Все ок. Еще ничего не работает.

Указание IDE на custom-compiler.yaml
Нажимаем CTRL+ALT+S, открывается окно Settings.
В дереве настроек ищем Build, Execution… -> Toolchains -> Custom compiler
Ставим галочку и указываем путь к нашему файлу.
Возможно IDE выкинет окошко, что хочет рестарта, пока игнорим.

Создание CLion тулчейна
В дереве настроек ищем Build, Execution… -> Toolchains.
В открывшемся списке клацаем плюсик, выбираем тип System.
В поле name вписываем любое имя.
В полях C Compiler и C++ Compiler вписываем путь к exe компилятора. В моем случае это:
<em>G:\Toolchains\XC8\2.35\bin\xc8-cc.exe</em>

ВНИМАНИЕ: Как сделать это переносимым или хотя бы брать из ENV, я не знаю.
Зачем это нужно, мне не ведомо. Но без эти действий бесноватый Clion откажется воспринимать ваш custom-compiler.yaml. Обратное тоже верно!
.

Создание CLion профайла CMake
В дереве настроек ищем Build, Execution… -> CMake.
В открывшемся списке клацаем плюсик или если уже есть созданный профайл — используем его.
В поле Toolchain, в выпадающем меню выбираем созданный выше тулчейн.
В поле Generator выбираем Ninja. С другими у меня работает не стабильно.
Опционально в поле Build directory указываем относительный путь для папки конфигурации и сборки CMake.

Завершение
Сохраняем, закрываем, от греха подальше перезапускаем студию.
Открываем заново и ждем начала конфигурации CMake.

Если она не началась сама — нащупываем в самом низу вкладку CMake, после чего в открывшемся окне слева клацаем шестереночку и жмем Reset Cache and Reload Project

По идее должны получить следующий аутпут:

"G:\IDE_And_Tools\JetBrains\CLion 2021.3\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_MAKE_PROGRAM=G:/IDE_And_Tools/JetBrains/CLion 2021.3/bin/ninja/win/ninja.exe" -DCMAKE_C_COMPILER=G:/Toolchains/XC8/2.35/bin/xc8-cc.exe -DCMAKE_CXX_COMPILER=G:/Toolchains/XC8/2.35/bin/xc8-cc.exe -G Ninja H:\Learn\XC8_Cmake
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: G:/Toolchains/XC8/2.35/bin/xc8-cc.exe - skipped
-- Configuring done
-- Generating done
-- Build files have been written to: H:/Learn/XC8_Cmake/cmake-build-debug-system

[Finished]

Если по каким то причинам там ошибки, присутствуют всякие msvc, gcc или шланги — что то пошло не так. Что конкретно? Боюсь вам предстоит разобраться самим.

Если же все прошло успешно, при нажатии на Build All в меню сверху, должно вывести стандартный успешный аутпут сборки:
====================[ Build | all | Debug-System ]==============================
"G:\IDE_And_Tools\JetBrains\CLion 2021.3\bin\cmake\win\bin\cmake.exe" --build H:\Learn\XC8_Cmake\cmake-build-debug-system --target all
[1/3] Building C object CMakeFiles\XC8_CMake_project.dir\main.c.p1
[2/3] Building C object CMakeFiles\XC8_CMake_project.dir\gpio.c.p1
[3/3] Linking C executable XC8_CMake_project.elf

Memory Summary:
    Program space        used    86h (   134) of 1FFF8h bytes   (  0.1%)
    Data space           used     7h (     7) of   EE0h bytes   (  0.2%)
    Configuration bits   used     0h (     0) of     3h words   (  0.0%)


Build finished


Аутро

Примерно с этого момента можно начать наслаждаться удобной IDE, платить подписку и делать уже что то полезное.

Мне согласился помочь доброжелатель описав настройку под QT Creator, так что думаю в скором времени будет дополнение.
Если есть желание и возможность уточнить технические, орфографические и пунктуационные моменты или описать дополнительные проблемы, решения, тонкости — буду очень рад.

Благодарности

Спасибо множеству людей из t.me/supapro и t.me/probuildsystems слушавшим мое нытье и глупые вопросы, не скупившимся на объяснение и помощь, на протяжении нескольких месяцев, пока я осиливал несколько этих строчек конфигурации IDE.

Подключение компилятора к VS Code и CLion на примере Microchip XC8

Дисклеймер.

Это статья всего лишь нагромождение моего опыта и попыток подключения малоизвестного компилятора к IDE общего назначения, она не является руководством КАК СДЕЛАТЬ, скорее для помощи и экономии времени тех, кто имеет схожие цели.
Описываемый процесс написан чайником и предназначен для совсем чайников, может иметь имеет неточности, ошибки, использование магии и прямое вранье во имя упрощения. Если вам интересно как это действительно правильно работает и что под капотом — перепроверяйте и читайте официальные гайды.
Тут будет много «не знаю как это работает, но я так сделал и оно заработало».

Настройка CLion в отдельной статье, имеющей зависимости от этой.

Интро или «Нахрена?»

Я за время своего ковыряния с различными микроконтроллерами, не уставал удивляться насколько дефолтные IDE ужасные и отсталые при работе с кодом. Базовая подсветка и топорное автодополнение уже являются счастьем. А если они еще и работают, а подсветка ошибок не заливает пол экрана ввиду битых референсов — так вообще праздник.
И это все в то время как в Visual Studio 2019 и прочих, программисты C# объедаются вкуснейшими code snippet'ами и автодополнением, которое позволяет писать код водя бананом по клавиатуре.

К тому же многие IDE любят использовать собственную неведомую генерацию makefile и при желании хоть как то автоматизировать сборку дают 2 варианта: поддерживать 2 независимых (для IDE и внешнюю) описания сборки, либо прирастать к мейкфалу генерируемому самой IDE. Про сборку через CMake обычно даже слышать не приходиться.

Последней каплей наверно стало, когда выкупивший Atmel Microchip отказался от поддержки Atmel Studio 7, являющийся наверно самой адекватной из всего зоопарка «микроконтроллерных IDE» и стал переводить все на свою богомерзкую MPLABX полную багов, тормозов и прочего говна.

Было решено перемочь и изучить CMake хотя бы на базовом уровне, после чего совершить переезд на вменяемую студию.
Требования были следующие:
  • Восприятие внешней системы сборки без костылей и ее полная интеграция.
  • Отображение ошибок синтаксиса и сборки с свистелками и перделками.
  • Рабочая и не тормозящая проверка синтаксиса.
  • Рабочее и не тормозящее автодополнение, с зайчатками разума.
  • Отсутствие битых зависимостей и заголовочников.
  • Хотя бы какой-то контроль стиля кода.


Кандидаты

Я к своему стыду являюсь заядлым виндузятником и не могу без боли и отвращения братского понимания воспринимать линуксовские GUI, а потому, когда Eclipse отказался перемещать текстовый курсор при ПКМ, я его удалил, закончив свое знакомство на 5й минуте.

После быстрого поиска, стало ясно, что само сообщество С\С++ программистов судя по всему не особо нуждается в чем то подобном, а мои требования скорее «изнеженный каприз» презираемый опытным боевыми кодерами, хреначащими 3 каста массива указателей функций с вызовом в одну строку.

Человек не смог выйти из VIM, узнай что с ним стало...


В итоге, исключая IDE с морально устаревшими, либо не подходящими мне интерфейсами, получился очень не густой список (со спойлерами):
  • Visual Studio — лучший вариант и моя мечта. Не осилил, CMake проект завелся и собрался, но с кучей ошибок и потерянных зависимостей в самом редакторе. Добиться чего-либо от офф поддержки невозможно. Обещают в 2022 качественный завоз поддержки эмбеддед, но пока все очень не понятно и криво. Гуглятся какие-то официальные стать, где для VCPKG, VCPKG И ГОТОВО!
  • VisualGDB for Visual Studio — плагин, который хочет денег, магически делает все хорошо, но завязывает вас на себе и на собственной структуре проекта с разбиением *.h и *.с файлов в разных папках, делает полную реконфигурацию проекта по каждому чиху, что на проекте из 100-200 файлов может занимать минуты, дико тормозит и любит ломаться. Пробовал еще давно — ну нахрен.
  • Visual Studio Code — успех, но ввиду жабс родословной, отказался ввиду того, что не умеет искать ошибки в закрытых файлах, не умеет в вменяемый docking и самое важное — не умеет refactoring-rename между файлам, что и поставило жирный крест.
  • CLion — успех, но просит денех. Несмотря на платность, имеет на мой взгляд кучу недостатков, например так же не умеет в полноценное второе окно и docking всяких радостей в него.
  • QT Creator — так и не заставил себя попробовать. ПТСР от эклипса еще очень свежо.


Пререквизиты

То, что я имел в начале.
  • Установленные и работающие из под консольки система автоматизации сборки CMake и собственно система сборки Ninja
  • Ваш компилятор, который успешно вызывается в консольки без указания пути, а значит внесенный в системную переменную PATH
    
    PS C:\> xc8
    G:\Toolchains\XC8\2.35\pic\bin\picc
    Microchip MPLAB XC8 C Compiler V2.35
    Build date: Dec  6 2021
    Part Support Version: 2.35
    Copyright (C) 2021 Microchip Technology Inc.
    (880) invalid number of parameters. Use "XC8 --HELP" for help
    (908) exit status = 1
    

  • Toolchain.cmake файл вашего компилятора для кросс компиляции — я делал свои, но они получались очень кривенькие и косые, в итоге, нашел проект, которым и воспользовался. CMake XC8 Toolchain. Скорее всего для вашего компилятора есть что то похожее. Иначе — придется разобраться самому, к сожалению, вменяемой инфы для быстрого старта очень не густо.
  • Проект, использующий этот Toolchain.cmake и собираемый CMake из консоли.

Проект содержит простейший цикл, который задействует заголовочные файлы процессора и т.н. системные заголовочные файлы.
Этот код не предназначен для работы в железе, прерывание никогда не выстрелит, только для демонстрации работы IDE.
gpio.h вынесен не просто так, позже на его примере будет показана проблема и ее решение.


main.c

#include <xc.h>        	/* PIC MCU headers */

#include <stdint.h>		/* System lib headers */
#include <stdbool.h>     

#include "gpio.h"

volatile uint8_t i = 0;

void __interrupt(low_priority)  LowISR(void)
{
   i = 0;
}

void main(void)
{	
    while(1) {
      i++;
      bool is_some_condition = (i == 0);
		
      if(is_some_condition ) { SetGPIO(true); }
      else { SetGPIO(false); }
   }
}

gpio.c\h

#include <xc.h>
#include <stdbool.h>

void SetGPIO(bool new_state)
{
   LATCbits.LATC2 = new_state;
}



И CMake файл, с простейшими указаниями.
cmake_minimum_required(VERSION 3.20)
set(CMAKE_TOOLCHAIN_FILE external/cmake-microchip/toolchain.cmake)
set(MICROCHIP_MCU PIC18F97J60)
project(xc8-cmake C)
set(TARGET_NAME "XC8_CMake_project")
add_executable(${TARGET_NAME} main.c gpio.c gpio.h)


Внимание к cmake_minimum_required(VERSION 3.20), у меня при версии выше 3.21 выдавались очень не понятные ошибки, слабо указывающие на зависимость от этого параметра. Может «шарящим» людям ясно из-за чего, но для меня это магия, в которую я пока не погружался.

set(CMAKE_TOOLCHAIN_FILE external/cmake-microchip/toolchain.cmake)
Это магическая переменная CMake, куда загружен относительный путь к моему Toolchain файлу.

set(MICROCHIP_MCU PIC18F97J60) Определение процессора, для которого производится сборка. Это требует конкретно мой тулчейн.

Все это дело, я собираю из консоли простейшими командами.
cd C:/path/to/my/project/folder
cmake -S ./ -B ./build -G "Ninja"
ninja -C ./build


Где:
  • cmake -S ./ -B ./build -G «Ninja» инициализация CMake (не спрашиваете, что это, я не знаю)
  • "-S ./" относительный путь к файлу CMakeLists.txt, который в моем случае находится в корне проекта.
  • "-B ./build" относительный путь к директории, куда будет произведена инициализация CMake.
  • "-G «Ninja» указание генератора, модные хипстеры говорят мейкфайл говно, а ninja круто, так что выберем этот симплдимпл.
  • «ninja -C ./build» запуск сборки, где "-C ./build" путь к директории с сгенерированными файлами.

И собственно как итог всего действа:

PS H:\Learn\XC8_Cmake> cmake -S ./ -B ./build -G "Ninja"
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: G:/Toolchains/XC8/2.35/bin/xc8-cc.exe - skipped
-- Configuring done
-- Generating done
-- Build files have been written to: H:/Learn/XC8_Cmake/build
PS H:\Learn\XC8_Cmake> ninja -C ./build
ninja: Entering directory `./build'
[3/3] Linking C executable XC8_CMake_project.elf

Memory Summary:
    Program space        used    86h (   134) of 1FFF8h bytes   (  0.1%)
    Data space           used     7h (     7) of   EE0h bytes   (  0.2%)
    Configuration bits   used     0h (     0) of     3h words   (  0.0%)

PS H:\Learn\XC8_Cmake>


На этом мы имеем проект, собирающийся из консоли. Который будет использован как базовый, для подключения к различным IDE.

Visual Studio Code

Помимо самой студии, потребуется установить минимум 2 расширения.
  • C/C++ for Visual Studio Code от Microsoft
  • CMake Tools от Microsoft

Сама студия имеет несколько дополнительных сущностей.
*.code-workspace файл, который фактически является файлом проекта и содержит настройки «всей фигни» для работы в VS Code.
.vscode директорию, где в отдельных *.json хранятся настройки конкретных плагинов или куски настроек выдранные из *.workspace
Вроде! Все можно вписывать и в файл воркспейса, предварительно создав map'ы с именами аналогичные именам файлов в .vscode, но это не точно. Другие причины, кроме удобства подобного разбиения, мне не известны.

И так, первым делом, надо Open folder... корень проекта, после чего Save workspace as ..., что создаст файл воркспейса.
Во время открытия, студия будет спамить всплывающими окнами, в том числе предлагая сконфигурировать проект под CMake — отказывается или игнорим. У меня такая штука сломала все труды и я так не разобрался почему, потратив несколько часов, закончившиеся очищением того, что оно добавило в конфиг.

После чего можно оглядеть проект из IDE.

Глядя в окно output, можно увидеть, что CMakeLists.txt автоматически подцепился и сконфигурировался.
А ПКМ по CMakeLists.txt -> Build All Projects даже запустит и успешно завершит сборку. Казалось бы успех…

Но если чуточку поковыряться, можно заметить:
  • xc.h не найден, а значит никакого автокомплита по регистрам и макросам компилятора и самого МК.
  • Синтаксические ошибки не будут подсвечены, кроме ошибок поиска заголовочных файлов. И это проблема. VS Code не будет задействовать intellisense пока не будут разрешены ошибки заголовочников. (но даже если вы их разрешите — см. ниже)
  • Прагмы, дефайны и спецсимволы компилятора аля __interrupt(low_priority) будут неизвестны и в лучшем случае светится ошибкой, в худшем рушить синтаксические конструкции и вызывать кучи ошибок в самых неожиданных местах.
  • Системные заголовочники будут видимы, но при CTRL+ЛКМП по ним, вы попадете в папку какого-нибудь MSVC. В принципе с этим нет проблем, интерфейс стандартных библиотек везде одинаковый, а их использование IDE, не значит их использование компилятором, как и наоборот, вот этот момент надо всегда держать в уме. Но проблема в том, что там могут быть не только системные, но и другие заголовочные файлы, у меня это был gpio.h Что вызывало невидимость void SetGPIO(bool new_state)
    для IDE и ошибку отсутствия определения. У вас похожая проблема может не возникнуть или возникнуть не сразу.

Ок. Пытаемся решить.
ВНИМАНИЕ: Студия жабсовая и дурная, она может менять настройки при сохранении файла, а может хотеть рестарта, а может вообще их применять спустя несколько десятков секунд, потому что пошел на хрен.
Благо перезапускается она за секунды.

Для начала надо в файле воркспейса вписать строку, включающую отображение ошибок C++, что бы получилось так:
{
	"folders": [
		{
			"path": "."
		}
	],
	"settings": {
		"C_Cpp.errorSquiggles": "Enabled",	// Включить отображение ошибок???? 
		"C_Cpp.intelliSenseUpdateDelay": 500,	// Задержка после редактирования файла, перед началом парсинга intellisense.
		"C_Cpp.intelliSenseEngineFallback": "Enabled",	// Не знаешь - не трожь!
		"C_Cpp.autocompleteAddParentheses": true, // Описание при наведении
	}
}

В отдельности это ничего не изменит, но потребуется для дальнейшего. (а может не потребуется, черт знает)

Далее, в корне проекта, в папке .vscode надо создать файл c_cpp_properties.json. Если папки не появилось, это норма, ее надо создать руками.
И копируем туда следующий жабсон код
{
    "version": 4, // Версия жабсон, спросите у фронтендеров зачем она

    "configurations": [
        { 
            "name": "Win32",    // Указание платформы компилятора, хз на что влияет. Не знаешь - не трогай!
            "includePath": [    // Пути где Intellisense будет искать заголовочники (** значит рекурсивно всю внутрянку)
                "${workspaceFolder}/**",                // Корень нашего проекта
                "G:/Toolchains/XC8/2.35/pic/include/**" // Заголовочники компилятора
            ],

            // Файлы которые будут считаться заинклуженными поверх всех остальных.
            // Исправляем зависимость от MSVCшного gpio.h
            "forcedInclude": [
                "${workspaceFolder}/gpio.h"
            ],
            
            // Определенные символы, которые будут включены по принципу
            //  #define ${string}
            // Причем просто имя задефайнит его единицей, для пустого дефайна надо поставить "="
            "defines": [
                "_DEBUG",       // #define _DEBUG 1
                "__XC",         // #define __XC 1
                "__XC8",
                "__XC8_VERSION=2000",   // #define __XC8_VERSION 2000
                "_18F97J60",
                "__PICC18__",
                "high_priority=",       // #define high_priority
                "low_priority=",
                "__interrupt(x)=",      // #define __interrupt(x)
                "_XTAL_FREQ=41666666",  // #define _XTAL_FREQ 41666666
                "__bit=",               // #define __bit
                "__near="
            ],
            // Путь до exe компилятора, вообще он не очень то здесь и нужен. (вроде)
            "compilerPath": "G:/Toolchains/XC8/2.35/bin/xc8-cc.exe",
            "cStandard": "c99",
            "cppStandard": "c++98",
             // Как-то влияет на режимы intellisense, при наличии 
             // дурных ошибок подсвеченных в IDE, которые однако без проблем съедает компилятор, стоит попробовать поиграться этим значением.
             // Варианты должно быть можно вызвать через CTRL+SPACE
            "intelliSenseMode": "clang-x86",

            // Путь к файлам, которые подвергаются парсингу intellisens'ом
            "browse": {
                "path": [
                    "${workspaceFolder}/**",
                    "G:/Toolchains/XC8/2.35/pic/include/**" // Заголовочники компилятора, почему 2 раза? Иначе не работает!
                ]
            }
        }
    ]
}


После этого основные мои проблемы с VS Code закончились. Скорее всего у вас буду ваши, свои собственные, возможно описанное выше не решит их, но пусть оно будет хотя бы дополнительной информацией.

«Ментальные вызовы» VS Code

Помимо основных проблем, были еще мелкие:

1. Intellisense ТОРМОЗИЛЛЛллллллл, между изменением файла и окончанием парсинга проходили десятки секунд. Увы нормально не лечится, на гите вскода тикеты висят годами, после чего ехидный модер их закрывает с пометкой «наверно само вылечилось уже», но их позже переоткрывают энжой йор жабс. У меня была проблема, что заголовочники компилятора обильны и велики числом, особенно заголовки самих МК. В итоге, специально для IDE, я вынес их в папку с проектом, обрезал там все, что не требовалось моему процу и перенаправил пути инклудов IDE в жабсон туда.
2. Отображение ошибок лишь в открытых файлах. Не лечится. На гите вскода сказали, что и не будет в ближайшем будущем. энжой йор жабс
3. Отсутствие Refactor -> Rename по всему проекту. См. пункт 2. энжой йор жабс

Аутро

После микропроблемы пункта 3, была в ярости удалена, а ярость перенаправлена в русло борьбы с CLion, которое вроде завершилось успехом и будет описано позднее.
А вот и она.

Примерно с этого момента можно начать наслаждаться удобной IDE, платить подписку и делать уже что то полезное.

Мне согласился помочь доброжелатель описав настройку под QT Creator, так что думаю в скором времени будет дополнение.
Если есть желание и возможность уточнить технические, орфографические и пунктуационные моменты или описать дополнительные проблемы, решения, тонкости — буду очень рад.

Благодарности

Спасибо множеству людей из t.me/supapro и t.me/probuildsystems слушавшим мое нытье и глупые вопросы, не скупившимся на объяснение и помощь, на протяжении нескольких месяцев, пока я осиливал несколько этих строчек конфигурации IDE.

Источник Перебойного Питания постоянного тока ТР12-4

Тут недавно была статья про ИБП постоянного тока СКАТ. Я продолжу тему.
ТР12-4
Разрабатываем мы шкаф с оборудованием и заложили в него сначала источник СКАТ-24-2.0 DIN. В процессе работы, так сложилось, что перешли с 24В на 12В и источник заменили не на другой СКАТ, а на альтернативное решение — ТР12-4 компании ТрансЭТ. Казалось бы всё хорошо — и тока достаточно и дискретные выходы есть и места меньше занимает. В общем потестили, закупили сотню этих блоков и стали партию собирать. Но, как оказалось, тестили мы недостаточно хорошо — в пятницу в процессе ковыряния с железкой я выдернул шнур из розетки и забыл воткнуть обратно. В понедельник сутра я обнаружил обесточенную железку, воткнул в розетку и, ничего не подозревая, продолжил работу. В определённый момент я опять выдернул вилку и с удивлением обнаружил, что девайс отрубился.


Читать дальше

Конченные "СкатЫ"!

Жила была система видеонаблюдения. И питалась она от источников бесперебойного питания.
Источники те назывались «СкатЫ»…



Читать дальше

Прошивка модуля стиральной машины Indesit - Arcadia

Решил написать в эту рубрику, поскольку более подходящей, типа «Бытовая техника», не нашел, а эта статья непосредственно относится и к электронике, и к бытовой технике, и к говну. :)

Вступление


Началось все с того, что залил много моющего в СМА Indesit WIL85EX/TE/Y. В итоге полезла пена и попала на блок управления (мозги), в результате чего машинка просто перестала включаться.
Но! Не все потеряно. Начал читать, много где пишут, что нужно подождать 5-10 минут, и вот, чудо..! Заморгали индикаторы, которые указывали на ошибку F-12 — ошибка связи блока управления с модулем. Чаще всего из-за слетевшей прошивки.
Поехали дальше… Снял мозги, вынул из пластмассового корпуса и начал внимательно рассматривать. Была влага на краю плате, в результате чего, как я полагаю, и произошел сбой, но из строя ничего не вышло! Процессор стоит SP101655, либо же MC9S08GB60, от Motorola.
Под него, оказывается, нужен специальный программатор — USB BDM.
Ну… Прошить стоит 300 грн., а программатор — 390, на момент покупки. Поэтому решил купить программатор и сделать все сам, нежели отдам 300 за прошивку, завтра опять пойдет пена, и опять платить… А то и хуже!



Читать дальше

Высокие китайские технологии увеличения ёмкости аккумуляторов.

Пришли ко мне с кучкой хлама пара Li-Ion аккумуляторов с зарядником. Один аккум оказался мёртвым, и я решил его распотрошить — может, удастся мимо схемы защиты его подтолкнуть. Вскрытие показало, что пациент безнадёжен…




Читать дальше

Как теперь студентов учат информатике

Третьего дня один хороший товарищ попросил помочь сделать задания по контрольной работе. Дисциплина – информатика. Товарищ учится на заочке, при этом специальность его абсолютно никакого отношения к программированию не имеет (видимо, просто накидали часов для веса). Посему не стал рассказывать гражданину о необходимости обязательного понимания предмета и просто решил помочь. В ответ товарищ прислал скан методички (см аттач), по которой нужно делать работу. Ну и в ходе изучения данного документа я наткнулся на следующие шедевры мысленной деятельности (в скане – стр. 1, 22, 23):





Читать дальше

Lukey 702 причина пожара



Узнать правду!

Вообще для меня это не новость. Еще когда эти станции появились году так в 2007 (конкретно 702я модель, про другие не скажу) ее самовозгорание периодически пролетало на форумах и в разговорах.

UPD:
Еще похожие случаи:
www.mobile-files.ru/forum/archive/index.php/t-333481.html
monitor.espec.ws/section8/topic185806.html
notebook-pro-center.ru/viewtopic.php?id=253

Ну и видео:
www.youtube.com/watch?v=XwJdYxe_HFQ

О припоях

Всем привет. Около месяца назад ко мне обратились товарищи с работы, где я когда-то работал и попросили собирать для них платы. Выслушав истории о левых монтажниках, оставлявших непаянными половину выводов 0805 и путающих местами компоненты, я приуныл от такой обстановки в области электроники в нашем городе (про страну не знаю, мало где был). После повального брака решили обратиться ко мне, тк я еще тогда зарекомендовал себя как хорошего паяльщика. Я принялся за дело и все были довольны. Однако, на поточной пайке очень быстро растворилась катушка моего припоя Asahi

С моими небольшими количествами пайки дома и соответственно низким расходом припоя, я думал что нормальный припой это вещь сама собой разумеющаяся. И вот он закончился. Первым делом я достал свои катушки которые купил несколько лет назад на suntekstore

Они специально ждали этого момента. Вместо блестящей ровной поверхности asahi, они давали какую то кашу, напоминающую говно ляпухи от сварки. Повышение температуры эффекта не дало, дальше я повышать не стал, ибо нафиг надо паять на 350 мелкие компоненты. Озадаченный, я отправился в ближайшее место где можно было купить припой — Леруа Мерлен. Нашел вот такое творение китайского прома:

Еще взял катушку той же фирмы из-за пометки «Применяется при профессиональных паяльных работах»

вдруг есть разница? Разница действительно есть. Профессиональный припой расплавился уже при 300 градусах, чего не скажешь об экземпляре из колбы, который я долго и тщетно вдавливал в микроволну, пытаясь расплавить. У него расплавился кончик и все. После этого он героически сохранял консистенцию прутка и дальше 3мм не плавился. Можно было задрать температуру и расплавить его но, повторюсь, нафиг нужно? Так что вроде как китайцы и не соврали, ведь при профессиональных работах припой однозначно должен плавиться, хотя, подозреваю что они не уточнили какой вид профессиональной деятельности имеется в виду. Возможно это профессиональная пайка ведер и кастрюль. И не надо возмущаться, это Sparta!!! Я, конечно же, не говорю о таких мелочах как мутная серая поверхность пайки после применения этого шедевра. Теперь придется куда-то срочно мотать за старым добрым asahi.
Возможно открыл для кого-то америку. Пусть будет.

Фоторезист с ebay

Закончился фоторезист. Нужно было заказать новый. зашел на ebay, по словам «dupont dry film» нашел:
www.ebay.com/itm/12x300in-Dry-Film-Photoresist-for-PCB-Dupont-Riston-Photo-Resist-/291370150715?pt=LH_DefaultDomain_0&hash=item43d703ab3b

По фото все как надо. Описание ок. Заказал. Пришло в отличной упаковке. Т.к. на тот момент никаких поделок не было — оставил все как есть.

Вчера начал делать плату. И тут понеслась…
Если кратко — полное ощущение что это наш ПФ-ВЩ:
Фиолетовый (ристон — зеленоватый)
Плохо липнет.
Отваливается при травлении.
Я не хочу ничего сказать про этого продавца. Просто хочу обратить внимание людей:
Внимательно смотрите что на фото (ристон четко отличается цветом) и на то что вы получаете. Не допускайте моих ошибок.
Всем удачи.

З.Ы. Я опять заказал там, где заказывал в первый раз:
www.ebay.com/itm/181658752411?_trksid=p2060778.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
Как придет отпишусь…

UPDATE: Пришло. По виду такой-же. Пока не пробовал в деле…