#51 Програмування Arduino » Симуляція AVR в platformio » 2025-06-12 11:09:37

jokeR
відповідей: 13

Знайшов дещо цікаве. Виявляється, для деяких чіпів є емулятори. І в platformio декларується можливість використання:
https://docs.platformio.org/en/latest/plus/debug-tools/simavr.html

У когось вийшло? Бо запустити руками емулятор в одній консолі, gdb в іншій - воно працює, але трохи по красноглазому wink

#52 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-11 16:45:37

Здається, platformio це таки ваше рішення wink Тупо зібралось, прошилось. На P1 нормальний 0, на P2 - іноді нормальні 5В імпульси. Без провалів. Дивно трохи - індикаторний LED прикрутити не до ноги з LED, а до іншої wink

 - framework-arduino-avr-digistump @ 1.7.2 
 - tool-micronucleus @ 1.250.210222 (2.50) 
 - toolchain-atmelavr @ 1.70300.191015 (7.3.0)

Походу, framework 1.7.5 що в arduino ide якийсь кривий. Зручно коли все автоматизовано, але коли автоматизовано криво то це ПЦ wink
Хоча platformio той ще ПЦ всередині wink Просто повезло.

#53 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-11 12:25:06

Та хз wink
Простий спосіб - взяти Arduino Nano wink
Складніше - підібрати тулчайн, з яким воно буде правильно працювати.
Або переписати під Atmel Studio - сподіваюсь, у них там все правильно зібране.

#54 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-11 11:31:19

Так, це EEPROM
Якщо прибрати повністю (навіть #include теж) - нормальні прямокутні імпульси.

#55 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-11 11:17:30

Нє, ШІ воно прикольно, але навіщо вимикати те що не вмикали wink Вам воно намалювало blink на регістрах замість digitalwrite.

#56 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-11 10:40:50

photo_2025-06-11_10-32-45.jpg

Збс wink
Зібрав під ту плату що у вас. Включив pull-up резистори на входах - отримав такі імпульси - кілька прямокутних, промодульованих ВЧ. Я б сказав, що це десь всередині вашого коду, складно зрозуміти його логіку.

ІЩСХ, якщо резистори прибрати, отримуємо дивне
photo_2025-06-11_10-47-19.jpg

#57 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-10 23:04:23

Так, сорян, const int LEDMode = LED_BUILTIN; - так не можна. LED_BUILTIN це PB1 і воно якось дивно взаємодіє з вашим кодом. Вернув як було - упсь, на PB1 чоткий 0.
Ну, що сказати.. По перше - переїдьте на версію 1.7.5, щоб все було однаково.
По друге - входи вільно теліпаються, хз що вони ловлять у вас і що у мене. Їх було б непогано підтягнути чи до 0 чи до VCC - хз як правильно за вашою схемою.

#58 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-10 22:08:33

FQBN: digistump:avr:digispark-tiny:clock=clock165,burnmode=install
Using board 'digispark-tiny' from platform in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5
Using core 'tiny' from platform in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5
Using library EEPROM at version 2.0 in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5/libraries/EEPROM 

Ага, походу я вас обманув. Це звідси: https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json

Ага, версію 1.6.7 можна вибрати в Board Manager. Не зовсім очевидно. Але все одно дивний глюк присутній.

#59 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-10 19:29:37

2025-06-10_19-06.png

Таке?
Ну, залив ваш код, тільки замість

const int LEDMode = 2; // LED индикации режима работы смазчика, 1 = TRUE;

зробив

const int LEDMode = LED_BUILTIN;

Щоб було видно без осцилографа.

І що ми бачимо на нозі P1?

photo_2025-06-10_19-24-38.jpg

3.3V, з викидами до 4.5В (чи 4.5В, з провалами на 1.2В). Цікаво wink Провалів по живленню немає.


Хм. Зробив так (нумерація цифрових і аналогових портів в цій платі якась незвичайна, але 3 - удачна цифра wink Повинно бути еквівалентно по логіці роботи.

  if (/* analogRead(btnMode) < 512 */ digitalRead(btnMode) == 0) { // Нажата кн.Режим смазки

Бачимо таке:

photo_2025-06-10_19-42-44.jpg

Що я можу сказати? З виводом у порт D1 у вас щось накручено, digitalwrite викликається раз 10.. Але дивний спецефект з 1 картинки це не пояснює.

Це цікавіше. Підтягнув входи, щоб не теліпались.

  pinMode(inVSS, INPUT_PULLUP);
  pinMode(btnMode, INPUT_PULLUP);

Побачив ваші імпульси в 1 В
photo_2025-06-10_20-01-01.jpg

#60 Re: Апаратні питання » Проблема підключення lcd keypad shield до nodemcu » 2025-06-10 11:55:17

https://lastminuteengineers.com/esp8266-pinout-reference/
D4 підтягніть до VCC, або використайте інший пін.

#61 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-09 13:54:56

ну я навіть вийняв з коробки плату з Tiny85 і прошив вашу програму. Нічого такого з рівнем 1.2в не спостерігаю. На виході P1 - чіткий 0. На P2 - кілька імпульсів із звичайними рівнями. Правда, у вас там входи без підтяжок, хтозна що вони ловлять з світового ефіру..

#62 Re: Апаратні питання » DigiSpark Attiny85 проблема з логічною 1 на виході. » 2025-06-08 22:29:21

Ага, сорян, який контроллер побачив.
Ну, це трохи незвичайний контроллер. Може ви щось з таймерами хитре робили, чи з тактуванням.. Я б подумав, що він в режимі бутлоадера хоче щось з USB, але з ваших слів все інше працює.

#63 Re: Програмування Arduino » Допомога з написанням коду Arduino Nano (Arduino IDE) » 2025-06-08 13:05:57

Трохи дивно виходить.  Ну давайте поміряємо період імпульсів.

#define PIN_INPUT 2 // Arduino Nano - pin2 or pin3 only
#define PWM_WIDTH_FALSE 1400
#define PWM_WIDTH_TRUE 1600

unsigned long pulse_start = 0;
unsigned long pulse_width = 0;
unsigned long period = 0;
unsigned long pulse_prev_start = 0;
bool state_from_pwm = false;

void catch_int()
{
   if (digitalRead(PIN_INPUT))
   {
    pulse_prev_start = pulse_start;
    pulse_start = micros();
   } else {
    pulse_width = micros() - pulse_start;
    if (pulse_width < PWM_WIDTH_FALSE) 
    {
      state_from_pwm = false;
    } else if (pulse_width > PWM_WIDTH_TRUE)
    {
      state_from_pwm = true;
    };
    digitalWrite(LED_BUILTIN, state_from_pwm);
   };
}


void setup() {

  pinMode(LED_BUILTIN, OUTPUT); 
  pinMode(PIN_INPUT, INPUT);
  Serial.begin(115200);
  attachInterrupt(digitalPinToInterrupt(PIN_INPUT), catch_int, CHANGE);
  interrupts();
}

unsigned long ts_next = 0;
unsigned long pw;
void loop() {
  if (millis() > ts_next)
  {
    ts_next = millis() + 1000;
    noInterrupts();
    pw = pulse_width;
    period = pulse_start - pulse_prev_start;
    interrupts();
    Serial.print(period); 
    Serial.print(" ");
    Serial.println(pw);
  };
}

#64 Re: Програмування Arduino » Допомога з написанням коду Arduino Nano (Arduino IDE) » 2025-06-08 12:16:32

Якась незвичайна серва у вас wink

#define PIN_INPUT 2 // Arduino Nano - pin2 or pin3 only
#define PWM_WIDTH_FALSE 1400
#define PWM_WIDTH_TRUE 1600

unsigned long pulse_start = 0;
unsigned long pulse_width = 0;
bool state_from_pwm = false;

void catch_int()
{
   if (digitalRead(PIN_INPUT))
   {
    pulse_start = micros();
   } else {
    pulse_width = micros() - pulse_start;
    if (pulse_width < PWM_WIDTH_FALSE) 
    {
      state_from_pwm = false;
    } else if (pulse_width > PWM_WIDTH_TRUE)
    {
      state_from_pwm = true;
    };
    digitalWrite(LED_BUILTIN, state_from_pwm);
   };
}


void setup() {

  pinMode(LED_BUILTIN, OUTPUT); 
  pinMode(PIN_INPUT, INPUT);
  Serial.begin(115200);
  attachInterrupt(digitalPinToInterrupt(PIN_INPUT), catch_int, CHANGE);
  interrupts();
}

unsigned long ts_next = 0;
unsigned long pw;
void loop() {
  if (millis() > ts_next)
  {
    ts_next = millis() + 1000;
    noInterrupts();
    pw = pulse_width;
    interrupts();
    Serial.println(pw);
  };
}

Ну давайте спробуємо виміряти, що у вас там за PWM.

#65 Re: Програмування Arduino » Допомога з написанням коду Arduino Nano (Arduino IDE) » 2025-06-08 11:48:29

Про серву схоже вгадав wink
Ви хочете щоб кожне відкривання серви перемикало стан пристрою (щоб лампочак вмикалась і вимикалась)?

#66 Re: Програмування Arduino » Допомога з написанням коду Arduino Nano (Arduino IDE) » 2025-06-08 11:40:37

#define PIN_INPUT 2 // Arduino Nano - pin2 or pin3 only
#define PWM_WIDTH_FALSE 1400
#define PWM_WIDTH_TRUE 1600

unsigned long pulse_start = 0;
unsigned long pulse_width = 0;
bool state_from_pwm = false;

void catch_int()
{
   if (digitalRead(PIN_INPUT))
   {
    pulse_start = micros();
   } else {
    pulse_width = micros() - pulse_start;
    if (pulse_width < PWM_WIDTH_FALSE) 
    {
      state_from_pwm = false;
    } else if (pulse_width > PWM_WIDTH_TRUE)
    {
      state_from_pwm = true;
    };
    digitalWrite(LED_BUILTIN, state_from_pwm);
   };
}


void setup() {

  pinMode(LED_BUILTIN, OUTPUT); 
  pinMode(PIN_INPUT, INPUT);
  attachInterrupt(digitalPinToInterrupt(PIN_INPUT), catch_int, CHANGE);
  interrupts();
}

void loop() {
}

Десь так. Очікуються імпульси на вході D2. Якщо ваші 20 - це 1/20 від 50 гц, тобто 1 мс, то варто взяти за межу середину допустимого інтервалу (1.5мс), і додати гістерезис +-100 мкс, для захисту від спрацьовувань близько до межі. Сподіваюсь, вгадав.
Хоча, якщо я вгадав, то мені здається, що ваша задача вирішується і без додаткового контроллера.

#67 Re: Програмування Arduino » Допомога з написанням коду Arduino Nano (Arduino IDE) » 2025-06-08 10:57:32

Конкретно що не так з вашим кодом. Ви 500 разів підряд читаєте значення з АЦП і рахуєте середнє значення. Зазвичай так роблять, коли інтервал часу, на якому усереднюють, відомий. У вашому випадку - ні. 500 відліків - невідомо скільки мікросекунд.
Далі. АЦП вертає значення від 0 до 1024, 1024 відповідає, якщо не помиляюсь, 3.3 В. Що таке 20 незрозуміло, але це дуже близько до рівня шуму. Скоріше за все, воно ловить завади від живлення.

#68 Re: Програмування Arduino » lin аналізатор » 2025-06-04 17:51:03

Няп він прислав прошивку під stm32f103 aka "Blue pill". Мабуть повинно зібратись під stm32cube ide.
Не думаю що ви цього хотіли wink

Вам потрібно:
1. записати в табличку, які команди надсилає руль при нажиманні кожної кнопки.
2. написати програму, яка буде слухати LIN порт (можна взяти готову, їх дофіга), ловити ці команди, і робити що потрібно вам (чи релюшками клацати, чи в CAN щось передавати).

Якщо виберете CAN, то пункти 1, 2 треба повторити з вашим оригінальним рульом.

Все.

#69 Re: Програмування Arduino » lin аналізатор » 2025-06-02 18:14:27

О, тепер врюхав  звідки така ціна wink Це дійсно врізається в вихлопну систему. Температура, тиск, агресивне середовище. Дешево це не може коштувати.

#70 Re: Програмування Arduino » lin аналізатор » 2025-06-02 17:01:10

звук як на симфоніческому  концерті Бетховена

Для дирчика з несправною вихлопною системою?  tongue

хтось з інтернетів пише:

Залез под машину — сразу бросился в глаза виновник злого спортивного выхлопа, а именно прогорела гофра

Коли я чую дивний звук - перша моя думка - в когось щось прогоріло. Переше враженння для того, хто не знає скільки це може коштувати wink

#71 Re: Програмування Arduino » lin аналізатор » 2025-06-02 13:55:39

vanya82111 пише:

1-Дві колонки,
2-усілітель,

roll
570 баксів, за пристрій, який потрібен виключно щоб бісити оточуючих
не розумію
roll

#72 Re: Програмування Arduino » lin аналізатор » 2025-05-30 13:32:01

2- LIN_slave_portable_Arduino, брати звідти приклад із сканером незнаю де, це типа скетч чи програма

Питання по ділу wink
Бібліотека. З такою ось назвою. Встановлюється прямо через IDE через library manager. І приклади з собою тягне. І їх видно в меню examples в тому ж ide wink

3-У мене TJA1020 підключено   до   USB-UART  на чіпі CH340, в  программі COM Port Toolkit 3.9 йшли якісь данні.

Збс. пора підключати до ардуїни і ловити дані нею.

4-А тепер TJA1020 треба підключити  прямо в Arduino Mega 2560?

Наприклад так. Список плат, на яких воно наче повинно поїхати без бубна, є. В мене просто такої дорогої іграшки немає, то я і не розглядаю wink Насправді, на 8266 воно теж без бубна дрібної правки не зібралось wink

6-встановлювати LIN_slave_portable_Arduino, брати звідти приклад із сканером, просто скачав LIN_master_portable-1.4.0 .а далі не знаю що куди встановлювати big_smile

// board pin definitions. Note: for supported Rx pins see https://docs.arduino.cc/learn/built-in-libraries/software-serial/
#if defined(ARDUINO_AVR_MEGA2560)
  #include <NeoHWSerial.h>          // use NeoHWSerial to avoid linker conflict for UART ISRs
  #define PIN_LIN_TX      18        // transmit pin for LIN
  #define PIN_LIN_RX      10        // receive pin for LIN
  #define PIN_TOGGLE      30        // pin to demonstrate background operation
  #define PIN_ERROR       32        // indicate LIN return status
  #define SERIAL_CONSOLE  NeoSerial // serial I/F for console output (comment for no output) 

Ну, я бачу в LIN_slave_SWSerial.ino таке. Я так розумію, що тут вказано, які піни до чого підключити. Очікується також, що діагностика через Serial.print буде валитись в послідовний порт і її буде видно через вбудований в ide монітор.

Якщо не білдиться - Arduino/libraries/LIN_slave_portable/src/LIN_slave_SoftwareSerial.cpp - треба внести таку зміну

@@ -63,7 +63,7 @@
 */
 LIN_Slave_SoftwareSerial::LIN_Slave_SoftwareSerial(uint8_t PinRx, uint8_t PinTx, bool InverseLogic, uint16_t MinFramePause, 
   LIN_Slave_Base::version_t Version, const char NameLIN[], uint32_t TimeoutRx, const int8_t PinTxEN):
-  LIN_Slave_Base(Version, NameLIN, TimeoutRx, PinTxEN), SWSerial(PinRx, PinTx, InverseLogic)
+  LIN_Slave_Base(Version, NameLIN, TimeoutRx, PinTxEN), SWSerial(PinRx, PinTx)
 {  
   // Debug serial initialized in begin() -> no debug output here

#73 Re: Програмування Arduino » ESP32 конфігурація » 2025-05-30 09:00:20

всі борди вже преконфігуровані.

Хм, здається ви таке праві wink Це конфігурація відноситься до плати, а не до проекту. Просто раз існує idf.py menuconfig - чому б не запустити wink


А що у вас в platformio.ini?

[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
upload_port = /dev/ttyACM0
debug_tool = esp-builtin
build_flags = !echo "-DGIT_VERSION="$(git rev-parse --short HEAD) "-DBUILD_DATE="$(date +%%Y%%m%%d)

Найдешевша китайська плата з непрацюючою керамічною антеною wink

#74 Re: Програмування Arduino » lin аналізатор » 2025-05-29 22:07:29

Всі колись починали wink
крч дивіться. якщо вирішили таки зробити цей проект
і по тій схемі, де ваш jtj1020 приймає сигнал від руля, а контроллер на ардуїні щось робить далі
то я б робив в такій послідовності.

спочатку - встановлюєте arduino ide, робите стандартний blink світлодіодом - щоб впевнитись що ардуїна працює і програми в неї ви можете заливати.
далі - встановлювати LIN_slave_portable_Arduino, брати звідти приклад із сканером, паяти jtj1020 і пробувати через нього побачити реакцію на кнопки.
а там буде видно. можна релюшками клацати, можна через ЦАП вивести потрібну напругу.. можна CAN адаптер припаяти. ліб для підримки CAN теж є, можливо, щось підійде.

що не ясно - питайте.

Але для спрощення мабуть краще взяти esp8266 або esp32.  Бо

Supported (=successfully tested) boards:
 - Arduino Mega 2560      https://store.arduino.cc/products/arduino-mega-2560-rev3
 - Adafruit Trinket       https://www.adafruit.com/product/1501
 - ESP8266 D1 mini        https://www.wemos.cc/en/latest/d1/d1_mini.html
 - ESP32 Wroom-32UE       https://www.etechnophiles.com/esp32-dev-board-pinout-specifications-datasheet-and-schematic/

Під інше треба підпилювати, а це задача з зірочками.

#75 Re: Програмування Arduino » lin аналізатор » 2025-05-29 20:22:40

Сорян, трохи вас обманув. З лібами до LIN не так просто; https://github.com/gicking/LIN_slave_portable_Arduino/blob/main/README.md - це наче повинно поїхати, але не без бубна. Ні на Arduino Nano ні на STM32 автор його не тестував.

Підвал форуму