Ответить
  • ВиталийXXL Senior Member
    офлайн
    ВиталийXXL Senior Member

    10112

    22 года на сайте
    пользователь #4150

    Профиль
    Написать сообщение

    10112
    # 16 апреля 2025 15:50

    Пробовал для дисплея ST7789 все библиотеки , которые мог найти ... всё одинаково .
    По работе с UART - тоже самое . Обычное чтение , никаких нет задержек и т д ... Простейший алгоритм . Назвать это библиотекой мне даже стыдно что-ли ... (25 лет привык работать с настоящими библиотеками .LIB )
    А что касается таймеров и прочим вещам .... дискуссионное . Не в этом случае , как бы это не выглядело .
    Задача простяцкая . По сложности - на уровне примера Blink-зажигания светодиода ....

    Для прикола вечером сброшу кусок той "программы" .

    раба кормят бесплатно, а свободному самому за всё платить приходится...
  • RepoMan Senior Member
    офлайн
    RepoMan Senior Member

    978

    14 лет на сайте
    пользователь #295041

    Профиль
    Написать сообщение

    978
    # 16 апреля 2025 19:11

    Только не кусок, а всю программу. А то ещё окажется, что дело было не в бобине

  • ВиталийXXL Senior Member
    офлайн
    ВиталийXXL Senior Member

    10112

    22 года на сайте
    пользователь #4150

    Профиль
    Написать сообщение

    10112
    # 16 апреля 2025 20:44

    В своё время нас учили писать программы методом 'от простого к сложному" ....
    Для проверки хватит и куска . Даже на нём всё видно :

    #include <Arduino.h>
    #include "HLW8032.h" // Библиотека электросчётчика HLW8032
    HLW8032 HL ;

    #include <SPI.h>
    #include <TFT_eSPI.h> // Библиотека для работы с дисплеем ST7789 (и другими) по SPI-шине
    TFT_eSPI tft = TFT_eSPI();

    /*
    Задействованные выводы ESP32 WROOM

    #define TFT_MOSI 25 // In some display driver board, it might be written as "SDA" and so on.
    #define TFT_SCLK 26
    #define TFT_CS -1 // Chip select control pin NOT USED
    #define TFT_DC 32 // Data Command control pin
    #define TFT_RST 33 // Reset pin (could connect to Arduino RESET pin)
    #define TFT_BL -1 // LED back-light NOT USED
    */

    static unsigned long start_time, end_time;

    void setup() {

    tft.init(); // eSPI инициализация экрана ST7789

    Serial.begin(115200); // UART0 - вывод информации для отладки/контроля

    HL.begin(Serial2,27); // HL. - объект "электросчётчик" ,обращаемся к Serial2 : RX чтение данных - GPIO27 , т.к писать туда ничего не будем - TX можно не передавать
    // в библиотеке всё равно явно заданы ноги RX-GPIO27 на всякий случай

    }

    void loop()
    {
    end_time = millis();
    HL.SerialReadLoop(); // "читалка" данных из Serial2

    if (end_time - start_time > SYNC_TIME) // частота опроса данных
    {
    if(HL.SerialRead == 1) // Признак того , что в наш порт что-то прилетело
    // если сделать в setup() tft.init() - никогда сюда не заходит , не понимает приходящих в Serial2 данных .....
    {
    Serial.print("Voltage: ");
    Serial.print(HL.GetVol()); // Пишем в Serial0 вольтаж (из полученных данных)
    Serial.print(" . Current: ");
    Serial.print(HL.GetCurrent()); // Пишем в Serial0 силу тока (из полученных данных)
    Serial.println();
    }
    start_time = end_time;
    }
    }

    #include "HLW8032.h"

    HLW8032::HLW8032()
    {
    }

    void HLW8032::begin(HardwareSerial& SerialData,byte IO)
    {
    _IO = IO;

    SerialID = &SerialData;
    SerialID->begin(4800,SERIAL_8E1,27); // явно задаём GPIO27 как RX данных из HLW8032

    VF = VolR1 / VolR2 ;
    CF = 1.0 / (CurrentRF *1000.0);
    }

    void HLW8032::setVF(float Data)
    {
    VF = Data;
    }

    void HLW8032::setCF(float Data)
    {
    CF = Data;
    }

    void HLW8032::SerialReadLoop()
    {
    if (SerialID->available()>0) // Сюда не заходит если tft.init().....
    {
    delay(50);
    SeriaDataLen = SerialID->available();
    if (SeriaDataLen !=24)
    {
    while(SerialID->read()>= 0){}
    // Serial.println("Clear & Return ?");
    return;
    }

    for (byte a = 0; a < SeriaDataLen; a++)
    {
    SerialTemps[a] = SerialID->read();
    }

    if(SerialTemps[1] != 0x5A)
    {
    // Serial.println("Header 0x5A found!");
    while(SerialID->read()>= 0){}
    return;
    }
    if(Checksum() == false)
    {
    //Serial.println("crc error");
    return;
    }

    SerialRead = 1;
    VolPar = ((uint32_t)SerialTemps[2] <<16) + ((uint32_t)SerialTemps[3] <<8) + SerialTemps[4];
    if(bitRead(SerialTemps[20], 6) == 1)
    {
    VolData = ((uint32_t)SerialTemps[5] <<16) + ((uint32_t)SerialTemps[6] <<8) + SerialTemps[7];
    }
    CurrentPar = ((uint32_t)SerialTemps[8] <<16) + ((uint32_t)SerialTemps[9] <<8) + SerialTemps[10];
    if(bitRead(SerialTemps[20], 5) == 1)
    {
    CurrentData = ((uint32_t)SerialTemps[11] <<16) + ((uint32_t)SerialTemps[12] <<8) + SerialTemps[13];
    }
    PowerPar = ((uint32_t)SerialTemps[14] <<16) + ((uint32_t)SerialTemps[15] <<8) + SerialTemps[16];
    if(bitRead(SerialTemps[20], 4) == 1)
    {
    PowerData = ((uint32_t)SerialTemps[17] <<16) + ((uint32_t)SerialTemps[18] <<8) + SerialTemps[19];
    }
    PF = ((uint32_t)SerialTemps[21] <<8) + SerialTemps[22];

    if(bitRead(SerialTemps[20], 7) == 1)
    {
    PFData++;
    }
    }
    }

    float HLW8032::GetVol()
    {
    float Vol = (VolPar / VolData) * VF;
    return Vol;
    }

    float HLW8032::GetVolAnalog()
    {
    float Vol = VolPar / VolData;
    return Vol;
    }

    float HLW8032::GetCurrent()
    {
    float Current = (CurrentPar / CurrentData) * CF;
    return Current;
    }

    float HLW8032::GetCurrentAnalog()
    {
    float Current = CurrentPar / CurrentData;
    return Current;
    }

    float HLW8032::GetActivePower()
    {
    float Power = (PowerPar/PowerData) * VF * CF;
    return Power;
    }

    float HLW8032::GetInspectingPower()
    {
    float vol = GetVol();
    float current = GetCurrent();
    return vol* current;
    }

    float HLW8032::GetPowerFactor()
    {
    float ActivePower = GetActivePower();
    float InspectingPower = GetInspectingPower();
    return ActivePower / InspectingPower ;
    }

    uint16_t HLW8032::GetPF()
    {
    return PF;
    }

    uint32_t HLW8032::GetPFAll()
    {
    return PFData * PF;
    }

    float HLW8032::GetKWh()
    {
    float InspectingPower = GetInspectingPower();
    uint32_t PFcnt = (1/PowerPar) *(1/InspectingPower) * 1000000000 * 3600;
    float KWh = (PFData * PF) / PFcnt;
    return KWh;

    }

    bool HLW8032::Checksum()
    {
    byte check = 0;
    for(byte a = 2;a<=22;a++)
    {
    check = check + SerialTemps[a];
    }
    if (check == SerialTemps[23])
    {

    return true;
    }
    else
    {
    return false;
    }
    }

    #ifndef HLW8032_h
    #define HLW8032_h

    #include "Arduino.h"

    class HLW8032
    {
    public:
    HLW8032();
    void begin(HardwareSerial& SerialData,byte IO);
    void setVF(float Data);
    void setCF(float Data) ;
    void SerialReadLoop();
    float GetVol();
    float GetVolAnalog();
    float GetCurrent();
    float GetCurrentAnalog();
    float GetActivePower();
    float GetInspectingPower();
    float GetPowerFactor();
    uint16_t GetPF();
    uint32_t GetPFAll();
    float GetKWh();

    uint32_t CurrentPar;
    uint32_t CurrentData;
    byte SerialTemps[24] ;
    byte SeriaDataLen =0;
    bool SerialRead = 0;

    private:

    bool Checksum();

    byte _IO;
    HardwareSerial *SerialID;
    uint8_t SysStatus;
    uint32_t VolPar;
    uint32_t VolData;
    float VF;

    float CF;
    uint32_t PowerPar;
    uint32_t PowerData;
    uint16_t PF;
    uint32_t PFData = 1;
    uint32_t VolR1 = 1 ; // 1880000; //Voltage divider Upstream resistors 470K*4 1880K
    uint32_t VolR2 = 1 ; //1000; //Voltage divider downstream resistors 1K
    float CurrentRF =49.9 ; // 0.1;
    };

    #endif

    раба кормят бесплатно, а свободному самому за всё платить приходится...
  • zverjuga Senior Member
    офлайн
    zverjuga Senior Member

    5101

    14 лет на сайте
    пользователь #346019

    Профиль
    Написать сообщение

    5101
    # 17 апреля 2025 00:21

    ну похоже на то, что TFT и if (SerialID->available()>0) конфликтуют между собой. возможно, используют один и тот же таймер.
    нужно смотреть документацию или исходники, чтобы найти инфу, как переназначить таймеры, чтобы каждый модуль работал независимо от другого.

    проклятый антисутенерский закон!
  • ВиталийXXL Senior Member
    офлайн
    ВиталийXXL Senior Member

    10112

    22 года на сайте
    пользователь #4150

    Профиль
    Написать сообщение

    10112
    # 17 апреля 2025 00:52

    я про это и писал : конфликтуют . А исходники чего ? TFT_eSPI - оно всё есть в текстовом виде в библиотеках Arduino.
    Я перепробовал много вариантов - все работают одинаково . но душат приём данных ...

    "нужно смотреть документацию или исходники, чтобы найти инфу, как переназначить таймеры" :)

    я поэтому и предлагаю небольшой гонорар самым умным :)

    раба кормят бесплатно, а свободному самому за всё платить приходится...
  • zverjuga Senior Member
    офлайн
    zverjuga Senior Member

    5101

    14 лет на сайте
    пользователь #346019

    Профиль
    Написать сообщение

    5101
    # 17 апреля 2025 01:22 Редактировалось zverjuga, 1 раз.

    вот что ответил чатгпт по поводу возможных конфликтов тфт и сериалид

    код выделить все
    Понял! 🤔 У вас возникает конфликт между TFT-дисплеем и модулем измерения мощности HLW8032. Скорее всего, проблема связана с использованием последовательного интерфейса (Serial), который может быть одновременно занят дисплеем и HLW8032.

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

    ---

    💡 **1. Используйте SoftwareSerial для HLW8032 или TFT:**
    Если вы используете Arduino с единственным аппаратным Serial (например, Arduino Uno), попробуйте переназначить HLW8032 на программный сериал (SoftwareSerial). Например:

    ```cpp
    #include &lt;SoftwareSerial.h&gt;

    // Определите пины для SoftwareSerial
    SoftwareSerial hlwSerial(10, 11); // RX, TX

    void setup() {
    Serial.begin(9600); // Используется для TFT или для дебага
    hlwSerial.begin(4800); // Используется для HLW8032
    }
    ```

    ---

    💡 **2. Обратите внимание на скорость Serial (baud rate):**
    HLW8032 обычно работает на 4800 бод, а TFT может общаться на другой скорости. Убедитесь, что скорости подключения каждого устройства независимы друг от друга.

    ---

    💡 **3. Используйте альтернативный hardware Serial (если доступен):**
    На более продвинутых платах, таких как Arduino Mega (с несколькими аппаратными Serial), можно подключить одно устройство к `Serial1`, другое к `Serial2` и т.д.

    ---

    💡 **4. Проверка инициализации:**
    Убедитесь, что дисплей TFT и модуль HLW8032 инициализируются корректно по порядку. Например:

    ```cpp
    #include &lt;TFT.h&gt;

    // Инициализация библиотеки TFT
    TFT tft = TFT(cs, dc, rst);

    void setup() {
    Serial.begin(9600);
    tft.begin(); // Инициализация дисплея TFT
    delay(100); // Небольшая задержка
    ... // Настройка для HLW8032
    }
    ```

    ---

    💡 **5. Конфликт ресурсов SPI или других пинов:**
    Если ваши устройства используют SPI или другие общие ресурсы (например, пины CS), убедитесь, что между ними правильно настроено управление (правильная установка сигнала CS для каждого устройства).

    ---

    Если вам требуется помощь с конкретным кодом или подключением, пишите — разберемся! 🛠️

    вот что ответит дипсик3

    код выделить все
    &gt;
    &gt; Alright, the user is having a conflict between their Arduino TFT display and the HLW8032 module. When they initialize the TFT, the serial communication stops working. Let's break down the problem.
    &gt;
    &gt;
    &gt;
    &gt; First, I remember that many TFT libraries use hardware SPI for communication, which shouldn't interfere with the serial ports. However, some displays might require additional pins for commands or reset, which could be conflicting if they're using the same pins as the HLW8032. Wait, the HLW8032 communicates via serial, probably using UART. On some Arduino boards, like the Uno, the hardware serial (Serial) is on pins 0 (RX) and 1 (TX). If the TFT library or setup is initializing something that affects these pins, maybe by setting them as output or changing their states, that could interfere with the serial communication. Also, when initializing the TFT, perhaps the code is sending commands that somehow monopolize the serial port or cause electrical interference.
    &gt;
    &gt;
    &gt;
    &gt; Another angle: maybe the TFT uses SoftwareSerial for something else, but since the user mentioned Serial, it might be the hardware serial. They could check if both devices are using the same serial port. If the TFT library initializes the hardware serial for debugging or communication, that would conflict with the HLW8032 which is also using Serial.
    &gt;
    &gt;
    &gt;
    &gt; Alternatively, power issues could be a factor. The TFT might draw a lot of current when initializing, causing voltage drops that reset the HLW8032 or disrupt its operation. Or there could be grounding issues introducing noise in the serial lines.
    &gt;
    &gt;
    &gt;
    &gt; The solution depends on the root cause. If it's a software conflict, using a different serial port for the HLW8032 with SoftwareSerial or switching to a board with multiple hardware serial ports (like Mega) could help. If power-related, adding capacitors or a separate power supply might stabilize things. The user could try initializing the HLW8032 after the TFT or vice versa to see if the order matters. Checking the code for pin assignments and ensuring no shared pins are being toggled during TFT initialization is also important. Reviewing the libraries used for both devices to see if they have known conflicts or require specific configurations might uncover something. If all else fails, using a logic analyzer to monitor the serial lines during initialization could pinpoint electrical issues or data corruption.
    &gt;
    &gt;

    В Arduino конфликты между TFT-дисплеем и модулем HLW8032 чаще всего возникают из-за **пересечения пинов, прерываний или ресурсов UART**. Вот решения:

    ### 1. **Проверка аппаратного UART**
    - **HLW8032** использует UART (пины RX/TX).
    - Многие TFT-библиотеки захватывают аппаратный UART для своих нужд или даже для отладки (например, вывод в `Serial`).
    - **Что делать**:
    - Подключите HLW8032 через **SoftwareSerial** (например, на пины 8 и 9):
    ```cpp
    #include &lt;SoftwareSerial.h&gt;
    SoftwareSerial hlwSerial(8, 9); // RX, TX
    ```
    - В коде обращайтесь к HLW8032 через `hlwSerial`, а аппаратный UART (`Serial`) оставьте свободным для TFT.

    ### 2. **Последовательность инициализации**
    - Некоторые TFT-библиотеки блокируют шину SPI/SD-карту при старте.
    - **Что делать**:
    - Инициализируйте TFT **после** настройки HLW8032:
    ```cpp
    void setup() {
    hlwSerial.begin(4800); // Сначала HLW8032
    tft.init(); // Потом TFT
    }
    ```

    ### 3. **Проблемы с питанием**
    - TFT-экраны потребляют много энергии. Если питание слабое, HLW8032 может терять связь.
    - **Решение**:
    - Используйте **внешний блок питания** для Arduino.
    - Добавьте керамический конденсатор (100 нФ) между VCC и GND HLW8032.

    ### 4. **Проверка конфликта пинов**
    - Убедитесь, что TFT не использует пины HLW8032:
    - Для ILI9341/ST7735: SPI (MOSI/MISO/SCK) + CS/DC/RST.
    - HLW8032 обычно работает только на RX-пине (данные от датчика).

    ### 5. **Отключение отладки TFT**
    - Некоторые TFT-библиотеки выводят логи в `Serial`, что может вызывать коллизии.
    - Найти в коде библиотеки TFT строки вроде `Serial.println(...)` и закомментировать их.

    ---

    ### Пример кода:
    ```cpp
    #include &lt;SoftwareSerial.h&gt;
    #include &lt;TFT_eSPI.h&gt; // Пример для библиотеки TFT_eSPI

    SoftwareSerial hlwSerial(8, 9); // RX, TX для HLW8032
    TFT_eSPI tft;

    void setup() {
    hlwSerial.begin(4800); // Инициализация HLW8032 через SoftwareSerial
    tft.init(); // Инициализация TFT
    tft.setRotation(3);

    Serial.begin(115200); // Аппаратный UART для отладки
    }

    void loop() {
    // Чтение данных с HLW8032
    if (hlwSerial.available()) {
    String data = hlwSerial.readStringUntil('\n');
    Serial.println(&quot;HLW8032: &quot; + data);
    }

    // Обновление TFT
    tft.fillScreen(TFT_BLACK);
    tft.setTextColor(TFT_WHITE);
    tft.drawString(&quot;Hello, TFT!&quot;, 20, 20);
    }
    ```

    Если проблема не решена, уточните модель TFT и версию Arduino (например, Uno, Mega) — это поможет найти точную причину! поможет найти точную причину!

    проклятый антисутенерский закон!
  • RepoMan Senior Member
    офлайн
    RepoMan Senior Member

    978

    14 лет на сайте
    пользователь #295041

    Профиль
    Написать сообщение

    978
    # 17 апреля 2025 01:27
    ВиталийXXL:

    По работе с UART - тоже самое . Обычное чтение , никаких нет задержек

    Зачем врете?

    код выделить все
    if (SerialID-&gt;available()&gt;0) // Сюда не заходит если tft.init().....
    {
    delay(50);

    ВиталийXXL:

    Назвать это библиотекой мне даже стыдно что-ли

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

    ВиталийXXL:

    я про это и писал : конфликтуют

    ложь. Код работает вместе с tft.init() и Serial2

    Добавлено спустя 2 минуты 35 секунд

    zverjuga, не умеют еще эти чатгпт/клоды в железо нормально

  • Land Клуб Самоделкиных
    офлайн
    Land Клуб Самоделкиных

    26565

    23 года на сайте
    пользователь #1470

    Профиль
    Написать сообщение

    26565
    # 17 апреля 2025 08:30

    ВиталийXXL, вы ж перекидывали вход Rx на другой вход и явно инициализировали его как вход?

    Согласно теории струн Вселенная имеет дополнительные измерения, свернутые в пространство Калаби-Яу.
  • ВиталийXXL Senior Member
    офлайн
    ВиталийXXL Senior Member

    10112

    22 года на сайте
    пользователь #4150

    Профиль
    Написать сообщение

    10112
    # 17 апреля 2025 09:33

    Спасибо всем откликнувшимся . Попробуем разобраться вместе .
    Снизу-вверх .
    RX - запрограммирован да , на GPIO27 . Этот вывод разрешен для использования вместо того , который по умолчанию . По крайней мере в описании ESP32 WROOM это указано . И он работает . Всё нормально принимается . Никаких проблем . Перекинуть на другой пин в данной плате нет возможности . Если только соплями перепаять . Это в случае , если действительно заработает .

    RepoMan:

    ложь. Код работает вместе с tft.init() и Serial2

    Ну в моём-то случае не работает приём данных с конкретно этого чипа (HLW8032) .... и именно вместе со связкой SPI-дисплея .... Если бы всё работало - ну зачем мне тогда искать помощи ? Если хотите - пожалуйста , предоставлю Вам всё железо для проверки (Минск?) .... запустите ? - 50$ . Больше , к сожалению , нет возможности .
    устройство не коммерческого характера чтоб окупилось хоть когда-то ....
    Что касается delay(50) - так это в родном коде и есть . я менял это значение от 0 (убрал) до 1000.... пофиг .
    Тут спрашивали про другие задержки по программе . Их нет .
    А то что в самой библиотеке - ну так это ж заложено не мной ....

    и в том то и дело , что с этой задержкой работает ! Но не вместе с SPI . И с дисплеями по I2C тоже работает без проблем

    раба кормят бесплатно, а свободному самому за всё платить приходится...
  • Land Клуб Самоделкиных
    офлайн
    Land Клуб Самоделкиных

    26565

    23 года на сайте
    пользователь #1470

    Профиль
    Написать сообщение

    26565
    # 17 апреля 2025 09:41
    ВиталийXXL:

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

    скорей всего библа SPI производит инициализацию CS как выхода. Даже когда вы указываете библе дисплея его не использовать. Я сталкивался с таким во фрейворке ардуино при использовании стандартных библиотек. Перекиньте соплей. Явно инициализируйте новый пин как вход.

    Согласно теории струн Вселенная имеет дополнительные измерения, свернутые в пространство Калаби-Яу.
  • ВиталийXXL Senior Member
    офлайн
    ВиталийXXL Senior Member

    10112

    22 года на сайте
    пользователь #4150

    Профиль
    Написать сообщение

    10112
    # 17 апреля 2025 09:55

    Так я пробовал дисплеи двух видов . с выводом CS и без него . Соответственно , под каждый вид правил определения выводов ... всё одинаково работает ... И как этот CS влияет на работу UART ??

    Не совсем понял совета по перекидыванию выводов . Что куда ?

    раба кормят бесплатно, а свободному самому за всё платить приходится...
  • Land Клуб Самоделкиных
    офлайн
    Land Клуб Самоделкиных

    26565

    23 года на сайте
    пользователь #1470

    Профиль
    Написать сообщение

    26565
    # 17 апреля 2025 10:08
    ВиталийXXL:

    Не совсем понял совета по перекидыванию выводов . Что куда ?

    ну на любой другой свободный GPIO. вот возьмите и на 4 киньте. Инициализируйте как вход. И в инициализации serial его укажите.

    ВиталийXXL:

    Так я пробовал дисплеи двух видов . с выводом CS и без него .

    это не дисплей влияет. А библиотека. Скорей всего она ваш вход Rx инициализирует как выход CS.

    Согласно теории струн Вселенная имеет дополнительные измерения, свернутые в пространство Калаби-Яу.
  • ВиталийXXL Senior Member
    офлайн
    ВиталийXXL Senior Member

    10112

    22 года на сайте
    пользователь #4150

    Профиль
    Написать сообщение

    10112
    # 17 апреля 2025 11:03 Редактировалось ВиталийXXL, 1 раз.

    А чем ему (UARTу) GPIO27 не угодил ? По умолчанию для UART2 выделены GPIO16/17 , для UART1 вообще не прописаны пины по умолчанию .... и подразумевается , что можно переназначать на любые (разрешенные как IO , #27 в их списке )
    и чем будет отличаться GPIO4 ? ( у меня туда светодиод выведен ). Ну как бы могу удалить его ... для эксперимента ...
    Понятно , что нужно экспериментировать ... но не понятна суть замены .. Кромсать плату не так просто .... трассировка была не под такие манипуляции . Нежданчик , конечно , с такими накладками .

    То есть в моём "программном коде" всё нормально ? Ничего предосудительного не видать ? :) В Адафрутовскую (и другие) библиотеки лезть - это я и предполагал . Но в последнюю очередь ...
    Мой вопрос в этом с состоял - нарушается работоспособность UART при работе с SPI (Дисплей) ....
    Пришли туда же откуда и вышли .

    TFT_eSPI.cpp:

    /***************************************************************************************
    ** Function name: initBus
    ** Description: initialise the SPI or parallel bus
    ***************************************************************************************/
    void TFT_eSPI::initBus(void) {

    #ifdef TFT_CS
    if (TFT_CS >= 0) {
    pinMode(TFT_CS, OUTPUT);
    digitalWrite(TFT_CS, HIGH); // Chip select high (inactive)
    }
    #endif

    Вроде как всё норм . ничего не "задевает" в этой инициализации .... ( -1 если CS не используется )

    и везде по тексту те же самые условия ....

    раба кормят бесплатно, а свободному самому за всё платить приходится...
  • RepoMan Senior Member
    офлайн
    RepoMan Senior Member

    978

    14 лет на сайте
    пользователь #295041

    Профиль
    Написать сообщение

    978
    # 19 апреля 2025 18:47

    Ну, как я и говорил, дело было не в бобине - нашлось КЗ между клоком spi и юартом

  • Land Клуб Самоделкиных
    офлайн
    Land Клуб Самоделкиных

    26565

    23 года на сайте
    пользователь #1470

    Профиль
    Написать сообщение

    26565
    # 19 апреля 2025 19:44
    RepoMan:

    Ну, как я и говорил, дело было не в бобине - нашлось КЗ между клоком spi и юартом

    ну не знаю, не знаю. В выложенном фрагменте кода ничего подобного не замечается...

    Согласно теории струн Вселенная имеет дополнительные измерения, свернутые в пространство Калаби-Яу.
  • ВиталийXXL Senior Member
    офлайн
    ВиталийXXL Senior Member

    10112

    22 года на сайте
    пользователь #4150

    Профиль
    Написать сообщение

    10112
    # 19 апреля 2025 20:18

    Благодарность тов. RepoMan, за зоркий глаз .... и оперативность . Оно стоило того :)

    Я уже и сам подзабыл что кроме Soft есть ещё и Hard Ware ...
    За сборщиком глаз да глаз нужен .... Напортачил и не проверил
    И тут стечение обстоятельств - КЗ при пайке соседних ног , и как на зло именно тех , что задействованы и влияют друг на друга именно в такой связке ....

    Вопрос ищерЁпан :)

    Всем спасибо .
    Отдыхайте :) , хорошая погодка .

    раба кормят бесплатно, а свободному самому за всё платить приходится...
  • siargy Senior Member
    офлайн
    siargy Senior Member

    2813

    14 лет на сайте
    пользователь #262301

    Профиль
    Написать сообщение

    2813
    # 21 апреля 2025 08:22

    купил есп32-с3, с вскоде не разобрался, зато простой пример в ардуино залился и светодиодом поморгал.

    Алег Трусаў: Лупіце на трасянке, ўсе з гэтага пачыналі.
  • siargy Senior Member
    офлайн
    siargy Senior Member

    2813

    14 лет на сайте
    пользователь #262301

    Профиль
    Написать сообщение

    2813
    # 23 апреля 2025 12:17

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

    Алег Трусаў: Лупіце на трасянке, ўсе з гэтага пачыналі.
  • Land Клуб Самоделкиных
    офлайн
    Land Клуб Самоделкиных

    26565

    23 года на сайте
    пользователь #1470

    Профиль
    Написать сообщение

    26565
    # 23 апреля 2025 13:18
    siargy:

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

    да, действительно... интересно, почему так? :shuffle:

    Согласно теории струн Вселенная имеет дополнительные измерения, свернутые в пространство Калаби-Яу.
  • siargy Senior Member
    офлайн
    siargy Senior Member

    2813

    14 лет на сайте
    пользователь #262301

    Профиль
    Написать сообщение

    2813
    # 24 апреля 2025 09:06

    Land, спасибо за ваш ответ

    Алег Трусаў: Лупіце на трасянке, ўсе з гэтага пачыналі.