#1 Re: Програмування Arduino » Генератор частоти з регулюванням шім » 2024-04-05 08:27:52

dimich пише:
GmmC пише:

можливо одночасно буде реалізувати також шім по двух чи одному каналу?

На одному таймері з довільною частотою два канала не вийде: у таймера два регістра-компаратора, і один із них використовується або як один із каналів ШІМ, або для керування частотою.

Подивіться режими, коли верхня межа лічильника задається регістром ICR, тоді обидва регістри-компаратори доступні для ШІМ.

#2 Re: Програмування Arduino » Генератор частоти з регулюванням шім » 2024-03-31 16:14:10

Частоту і коефіцієнт заповнення ШІМ на AVR не вийде встановлювати абсолютно довільно, лише ось такі дискретні значення:
Частота: f=16MHz/N, де N=1..65536
Коеф.заповнення: d=n/N, де N - те ж саме, яке використано для підбору частоти, n=0..N

#3 Re: Програмування Arduino » Допоможіть військовому(( » 2024-03-26 20:51:05

renoshnik пише:

  analogWrite(PIN_RELAY, 0);

Якщо я не помиляюсь, дана команда увімкне ШІМ з коефіцієнтом заповнення 1/256 (а параметр 255 дасть коефіцієнт заповнення 256/256 - завжди на одиничку більше, тобто за допомогою analogWrite неможливо отримати коефіцієнт заповнення 0/256)

#4 Re: Проекты » Счетчик импульсов для умного дома » 2024-03-12 17:44:57

Artur2K24 пише:

Як можна з Вами зв'язатись

Зліва під аватаркою натискаєте на "E-mail" і відправляєте повідомлення.

#5 Re: Програмування Arduino » Не працює код PWM вимикача на голому чіпі Attiny13 » 2024-03-09 10:53:17

pinMode(3, INPUT);
замініть на
pinMode(3, INPUT_PULLUP);
Якщо після цього і з тестером перестане працювати, значить спрацьовувало від наводок.

Як Вам радив dimich, виконуйте pulseIn() при вимкнених перериваннях
__builtin_avr_cli();
ch3 = pulseIn(3, HIGH, timeout);
__builtin_avr_sei();

#6 Re: Програмування Arduino » Не працює код PWM вимикача на голому чіпі Attiny13 » 2024-03-09 10:23:50

Daminski пише:

Але прикрий момент у тому, що з іншими пристроями, які генерують ШІМ сигнал аттіні знов не працює, навіть з такими налаштуваннями зчитування сигналу.

Чи є цьому якесь пояснення і чи можна тепер заставити тіні працювати і з іншими пристроями окрім тестера сервомашинок?

А Ви з піном не помилилися? Бо пін в високоімпедансному стані і від наводок щось зловить.

#7 Re: Апаратні питання » Керування сервоприводом. » 2024-03-08 00:39:20

Подавайте PWM на серву, але якщо дуже хочеться і є зайві гроші, звертайтесь, напишу Вам PWM->PDM конвертер.

#8 Re: Апаратні питання » Lock bit на arduino nano » 2024-02-22 17:47:21

Shaman2 пише:

В мене драйвер 3.5.2019.1, спробую останній 3.6.2021.12

У мене також версія 3.5.2019.1, але ніяких проблем немає, перемичку не використовую. Проблема, мабуть, в чомусь іншому.

#9 Re: Різне » Як залити HEX в м/к під Windows. Інструкція. » 2024-02-22 17:44:48

igor211 пише:

Добрий день. Скажіть  чи працює avrdude на windows 10?

У мене віндовс 10 і на ній працює. Драйвер USB-UART CH340 версії 3.5.2019.1
Можливо знадобиться такий лайфхак, коли будете використовувати avrdude з ключиком "-c avrisp"

Honey пише:

Конденсатор (між RST і GND, або RST і VCC) чи перемичка (між RST і VCC) використовуються як лайфхак, якщо драйвер USB-UART (CH340) неправильно керує сигналом DTR, в мене в віндовс 10 з цим проблем немає, в лінуксі пробема зникла коли перейшов на ядро 5.4.х (на 4.х ще була така проблема).

#10 Re: Програмування Arduino » Нужна помощь начинающему!!! 3-х режимный фонарик » 2024-02-18 23:09:43

г0сть пише:

Honey, людина просила простий приклад. Хоча ваш код і виконує його забаганку, але навряд чи він розбереться у ньому.

В шести рядках (куди ж вже простіший код?) має розібратися. Там та ж ідея "інтерпретатора", яку щойно докладно "для домогосподарок" розписав dimich. (dimich, респект!)

#11 Re: Програмування Arduino » Нужна помощь начинающему!!! 3-х режимный фонарик » 2024-02-18 20:34:07

#define LED_PIN 13
#define LED_ON  HIGH
#define LED_OFF LOW

short durations[] = {
// state 0
  1000, -1, // always OFF (loop)
// state 2 (SOS)
   100, // initial delay
  // loop start
   500, 500,  500, 500,  500, 1500, // ON/OFF durations
  1500, 500, 1500, 500, 1500, 1500,
   500, 500,  500, 500,  500, 2000,
   -18, // goto 18 steps back == loop start
// state 22
  0,
  1000, 500, 1000, 500, 1000, 500+5000,
  2000, 5000, 2000, 5000+10000,
  500, 1500, 1000, 2000,
  -14, // Чєрєз пять мінут наступаєт зіма
};
byte state = 22; // state = 2 for SOS
unsigned long start_time = 0;

void setup(void) {
  pinMode(LED_PIN, OUTPUT);
}

void loop(void) {
  digitalWrite(LED_PIN, (state & 1) ? LED_ON : LED_OFF);
  unsigned long cur_time = millis();
  if (cur_time - start_time >= durations[state]) {
    if (durations[++state] < 0)
      state += durations[state];
    start_time = cur_time;
  }
}

#12 Re: Апаратні питання » Lock bit на arduino nano » 2024-02-11 18:32:02

Shaman2 пише:

А думав що тут той самий принцип як і заливкою через usb, якщо заливаємо hex без бутлоадеру, то при перепрошивці бутлоадер не чіпається. А тут виявляється що потрібно заливати hex з назвою ....ino.with_bootloader.hex або прошивати бутлоадер при потребі окремо?

В бутлоадері запрограмовано, щоб він сам себе не затирав.
В avrdude просто вказуєте підряд обидві прошивки: -U flash:w:optiboot_atmega328.hex:i -U flash:w:myfirmware.hex:i

Shaman2 пише:

І ще тоді запитання: при наявності бутлоадера і залочці через lock bit через бутлоадер можно прошивку зляти? В гуглі одні пишуть так, інші пишуть ні

Прошивка сама себе може читати і при бажанні кудись відправити. Можна захистити від читання код бутлоадера з коду користувача - це може бути дійсно корисно. Можна навпаки - код користувача від бутлоадера (мабуть, це мали на увазі ті, хто писав що можна захистити), але це створить лише незручності, бо бутлоадер не зможе перевіряти те, що записав, а скинути лок можна лише стиранням всього флеш через ISP, програмно ніяк.

#13 Re: Апаратні питання » Lock bit на arduino nano » 2024-02-10 18:51:17

Доречі "відключити бутлоадер" і "затерти бутлоадер" це не одне й те ж, затертий бутлоадер все одно буде виконуватись, але оскільки в ньому порожні команди, то керування врешті передасться на прошивку користувача, а ці кілька десятків зайвих мікросекунд Ви не помітите.

#14 Re: Апаратні питання » Lock bit на arduino nano » 2024-02-10 18:43:52

Shaman2 пише:

Ще одне таке питання: після залочки (біт FC) на нано пропадає можливість запису прошивки через usb, процес просто висить.
Через arduinoISP прошивається. Це так і має бути?

Зашив прошивку через arduinoISP, біт скинувся на FF, але через usb вже не прошивається. Хоча юсб працює, через serial я отримую данні з прошивки

Коли Ви записуєте прошивку в ціль, то затирається бутлоадер.
Подивіться інструкцію, там є приклади, як відновити бутлоадер.

#15 Re: Апаратні питання » Lock bit на arduino nano » 2024-02-10 00:30:14

0x3c це приклад для tiny13a, я ж написав, що Вам для своєї m328p потрібно почитати в даташиті правильне значення. Я записую в tiny13a 0x3c (хоча по даташиту маю записувати 0xfc), щоб не виводило помилку.
Подивився даташит, Вам для m328p потрібно також писати 0xfc і у Вас і читається 0xfc, тобто все ок.
Якщо розберетесь як оновити драйвер, щоб був не потрібен лайфхак, відпишіться, будь ласка, в цю тему.

#16 Re: Апаратні питання » Lock bit на arduino nano » 2024-02-10 00:12:19

Shaman2 пише:

E:avrdude-v7.1-windows-windows-x64>avrdude -P COM70 -b 57600 -c avrisp -p m328p -U lock:r:-:h

Не помітив одразу... ArduinoISP працює ж на швидкості 19200 а не 57600. У Вас наявна проблема з драйвером CH340 і потрібен "лайфхак з RST". Тобто зараз драйвер смикає DTR і Ви заливаєте прошивку і читаєте лок не з цілі а з тієї нано, що напряму підключена до юсб.
Залийте спочатку ArduinoISP.hex (бо зараз Ви його затерли), а потім поставте конденсатор між RST і GND на програматорі і спробуйте ще раз прочитати лок, має бути 0xff.

#17 Re: Апаратні питання » Lock bit на arduino nano » 2024-02-09 23:35:51

Після заливки прошивки (це скидає лок в початкове значення 0xff) спробуйте спочатку прочитати (-U lock:r:-:h), читає 0xff чи 0x00 ?
Почитайте в даташиті на m328p, що які лок-біти означають, я давав приклад для t13a.
Ще там є прикол, що записуєш одне значення, а при читанні (перевірці) деякі біти дзеркаляться в інші позиції (наприклад в t13a записуєш 0xfc=0b11111100, а при читанні повертає 0x3c=0b00111100, біти з позицій 0 і 1 дзеркаляться в 6 і 7 позиції)

#18 Re: Апаратні питання » Lock bit на arduino nano » 2024-02-09 18:21:30

Shaman2 пише:

І ще одне питання: використовуються D11, D12, D13, тобто якщо в мене до цих ніг щось підключене, то доведеться спочатку відпаяти перед тим як вносити зміни по бітам? А якщо там вже зашита прошивка яка використовує ці ноги?
Тобто краще в нову ардуіно прошити лок біти, а потім вже розпаюваті і заливати прошивку?

Коли RST замикається на землю, робота прошивки зупиняється і всі ноги мк переходять в високоімпедансний стан (крім MISO), тому відповідь на питання чи можна не випаювати мк зі схеми залежить лише від Вашої схеми а не від прошивки, дивіться по схемі, як вона реагуватиме на наявність сигналів на SCK,MISO,MOSI.

Shaman2 пише:

І друге: на Вашій схемі небачу перемички чи конденсатора на RST програматора, він вже не потрібен?

Конденсатор (між RST і GND, або RST і VCC) чи перемичка (між RST і VCC) використовуються як лайфхак, якщо драйвер USB-UART (CH340) неправильно керує сигналом DTR, в мене в віндовс 10 з цим проблем немає, в лінуксі пробема зникла коли перейшов на ядро 5.4.х (на 4.х ще була така проблема).

#19 Re: Апаратні питання » Lock bit на arduino nano » 2024-02-09 14:52:35

Shaman2 пише:

чи достатньо nano використати як ArduinoISP для зміни лог бітів іншої нано чи все ж таки купляти окрему avrisp? На ютюбі бачив відео де було сказано що nano для avrdude і різних бітів не дуже підходить

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

Shaman2 пише:

І ще про порядок такої прошивки: я заливаю скетч, і потім окремо виставляю лок біти? А після лок бітів можно ще раз заливати прошивку чи вже все?

Лок-біти працюють так:
* їх можна встановити на будь-якому етапі
* їх можна скинути лише з одночасною очисткою флешу і еепром
* коли встановлені, то замість флеш і еепром читаються випадкові дані
Це дає можливість:
* захистити прошивку від читання
* багаторазово оновлювати прошивку
Не плутайте лок-біти з ф'юзами, деякі ф'юзи можуть "зацеглити" м/к, але лок-бітів це не стосується, вони безпечні.

#20 Re: Апаратні питання » Lock bit на arduino nano » 2024-02-09 13:47:41

Так, через бутлоадер неможливо змінити ні EEPROM, ні ф'юзи, ні лок-біти, можливо лише flash.
Гляньте цю тему, команда приблизно така (замініть t13a на свою m328 і значення лок-бітів з даташиту):
avrdude -P COM3 -b 19200 -c avrisp -p t13a -U lock:w:0x3c:m

#21 Re: Проекты » Управління електричним лінійним приводом з радіобрелка » 2024-02-05 16:30:54

СергійАм пише:

за допомогою стандартного радіобрелка

Можете взяти за основу мій код для читання радіобрелоків з цього поста.

#22 Re: Проекты » Счетчик импульсов для умного дома » 2024-01-31 14:05:44

Honey пише:

Для м/к з напругою 3.3V є такі варіанти:

3) є ще варіант (не відмовляючись від батарейки) подати на VCC лічильника 5V, а DQ підключити до м/к без перетворювача логічних рівнів (тобто на ньому буде до 3.3V) - на коротких шинах має працювати.
Найкращим для довгої шини є варіант (1), а якщо лічильник, м/к і батарейка розташовані в одному корпусі, то варіант (2).

#23 Re: Проекты » Счетчик импульсов для умного дома » 2024-01-31 04:21:48

Dimas пише:

по якій схемі і з якими налаштуваннями треба з‘єднати ваш модуль з єсп32?

Лічильник розрахований на стандартну напругу шини 1-wire 4.5-5.5V, цю напругу диктує батарейка - напруга шини має бути більшою від напруги батарейки мінімум на 0.65V, інакше лічильник відключає свій інтерфейс 1-wire і працює автономно в режимі лише підрахунку імпульсів. Для м/к з напругою 3.3V є такі варіанти:
1) перетворювач логічних рівнів для 1-wire, щоб на 1-wire було 5V
2) відмовитись від батарейки, закоротивши контакти в роз'ємі батарейки монетками, тоді лічильник зможе працювати з напругою 3.3V на 1-wire, але Ви втратите автономність - втрата зовнішнього живлення призведе до скидання лічильника. Цей варіант підійде лише якщо м/к зі своїм батарейним живленням зовсім поряд.

#24 Re: Проекты » Счетчик импульсов для умного дома » 2024-01-31 03:51:41

Dimas пише:

а як бути якщо маю доступ до тестового порту (той що зв‘язаний з діодом)

Берете оптрон (наприклад, PC817), передаючою частиною підключаєте до "тестового порту", а приймаючою - до лічильника імпульсів (емітер - GND, колектор - вхід A або B).
Якщо впевнені, що гальванічна розв'язка не обов'язкова, то можна те саме зробити на біполярному або польовому транзисторі. Але раджу на оптроні.

#25 Re: Апаратні питання » Періодичний збій роботи Ардуіно » 2024-01-21 23:26:53

Помилки на фізичному рівні будь-якого протоколу не вийде знизити до нуля, можна лише зменшити до прийнятного рівня, а боротися з ними потрібно на більш високому рівні протоколу шляхом виявлення і повторної відправки. В 1-wire є контрольна сума, подивіться, що повертає бібліотека у випадку невірної КС, якщо це і є -128, то повторюйте запит.
Щоб хоч якось вберегти мікроконтролер від наведених струмів у шині, поставте супресори на 5в ось таким чином, як на виході схеми:
schematic.png

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