Ви не увійшли.
Вітаю! Намагаюсь зробити, щоб запрацював елементарний код PWM вимикача на Attiny13 і він чомусь не працює. В якості генератора PWM імпульсів використовую тестер для сервомашинок. Доречі цей самий код, який я наведу нижче, нормально працює з заводським модулем Attiny85, який має свій завантажувач та вставляється в USB. Не можу зрозуміти в чому проблема при завантаженні цього ж коду на голий чіп Attiny13. Для прошивки чіпа використовую Arduino Nano, прошиваю через макетну плату та перемички.
Ось код:
void setup() {
pinMode(3, INPUT);
pinMode(0, OUTPUT);
digitalWrite (0, LOW);
}
void loop() {
int ch3 = pulseIn(3, HIGH);
if (ch3 < 1200) {
digitalWrite (0, LOW);
}
if (ch3 > 1800) {
digitalWrite (0, HIGH);
}
}
Ще буває мені видає помилку при заливці скетча в голий чіп Attiny13, але незваєаючи на це, натискаю кнопку завантаження скетчу вдруге і все записується. Інші коди, без PWM працюють нормально.
avrdude warning: attempt 1 of 10: not in sync: resp=0x15
avrdude warning: attempt 2 of 10: not in sync: resp=0x15
avrdude error: protocol expects OK byte 0x10 but got 0x14
avrdude error: protocol expects sync byte 0x14 but got 0x01
avrdude error: protocol expects sync byte 0x14 but got 0x10
avrdude error: initialization failed, rc=-1
- double check the connections and try again
- use -B to set lower ISP clock frequency, e.g. -B 125kHz
- use -F to override this check
avrdude error: unknown response=0x12
avrdude error: unknown response=0x12
Підскажіть, будь ласка, в чому може бути справа?
Неактивний
Про ф'юзи гляньте в цій темі, щоб не повторюватись
Дякую, трохи почитав цю тему, подивився калькулятьр ф'юзів, але не розумію як це мені може допомогти. Коли я прошиваю Attiny мені перший раз видає помилку, що написана червоним текстом на початку теми, а на другу спробу завантажити скетч - нормально прошиває чіп і працює будь який простий код. Але саме функція pulseIn() таке враження, що взагалі не працює і нічого не считує. Хоча сигнальний провід від тестера сервомашинок підключений в наступний пін після піна з ключем (ніжка №2, пін PB3).
Чи ці ф'юзи можуть якось впливати на роботу функції pulseIn()?
Неактивний
Нарешті розібрався як за допомогою командної строки зчитувати ф'юзи, знайшов приклади на ютубі. Але всерівно щось не так. Аттіні прошивається нормально, а в командній строці при спробі зчитати інформацію про ф'юзи видає помилку, наче плата не підключена. Хоча порт вказував вірний, як пише в Arduino IDE (COM4), а тут чомусь пише "com1"... І ось яку помилку видає зараз в командній строці:
avrdude: ser_open(): can't open device ".com1": ═х єфрхЄё эрщЄш єърчрээ√щ Їрщы.
Що це тепер може бути?
Остання редакція Daminski (2023-11-10 23:53:16)
Неактивний
Ви вказали в команді перед COM4 якийсь не той ключик, а по замовчуванню воно використовує COM1.
Команда для читання ф'юзів така:
avrdude -P COM4 -b 19200 -c avrisp -p t13a -U lfuse:r:-:h -U hfuse:r:-:h
Неактивний
Ви вказали в команді перед COM4 якийсь не той ключик, а по замовчуванню воно використовує COM1.
Команда для читання ф'юзів така:
avrdude -P COM4 -b 19200 -c avrisp -p t13a -U lfuse:r:-:h -U hfuse:r:-:h
Дякую, тепер хоч без ієрогліфів показало щось, але всерівно якась помилка
avrdude warning: attempt 1 of 10: not in sync: resp=0x15
avrdude warning: attempt 2 of 10: not in sync: resp=0x15
avrdude error: protocol expects OK byte 0x10 but got 0x14
avrdude error: protocol expects sync byte 0x14 but got 0x01
avrdude error: protocol expects sync byte 0x14 but got 0x10
avrdude error: initialization failed, rc=-1
- double check the connections and try again
- use -B to set lower ISP clock frequency, e.g. -B 125kHz
- use -F to override this check
avrdude error: unknown response=0x12
avrdude done. Thank you.
Неактивний
О, через ще 100500 спроб щось вийшло! Довелось прибрати з "t13a" літеру "a", хоча в мене мікросхема Attiny 13А. Що тепер робити далі, щоб запрацювало зчитування PWM сигналу? І щось дивне сталось з контролером. Чомусь перестав працювати код, навіть самий простий типу блінк.
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x1e9007 (probably t13)
avrdude: reading lfuse memory:
Reading | ################################################## | 100% 0.02s
avrdude: writing output file "<stdout>"
0x3a
avrdude: reading hfuse memory:
Reading | ################################################## | 100% 0.02s
avrdude: writing output file "<stdout>"
0xfb
avrdude: safemode: Fuses OK (E:FF, H:FB, L:3A)
avrdude done. Thank you.
Остання редакція Daminski (2023-11-12 04:50:47)
Неактивний
Заміна t13a на t13 ну аж ніяк не впливає на те, що "спрацювало", бо t13a це псевдонім для t13.
З ф'юзами тіні у Вас все гаразд, можете підставити в калькулятор і подивитися, що вони означають.
Залийте на NANO "програматор" з Arduino IDE, здається проблема з ним. Якщо цікаво, в examples має бути ArduinoISP.ino - це і є вихідний код "програматора".
Неактивний
Хм, може й дійсно проблема з моїм програматором у вигляді ардуіно нано. Ще подивився на те, які налаштування мають ті ф'юзи, що скинув вище. В них параметр CKDIV8 (ділитель частоти на 8) відключений. Але дивно чому всерівно не було ніякої реакції на PWM сигнал.
А ось що мені видав IDE, коли спробував повторно записати скетч з ArduinoISP на свою плату ардуіно нано. В принципі це те ж саме, що мені писало, коли прошивав Attiny13A за допомогою NANO. Як це виправити?
Помилка запису завантажувача.
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x15
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x15
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude: stk500_disable(): unknown response=0x12
А коли натиснув ще раз на кнопку "Записати завантажувач", то виникла вже така помилка:
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Помилка запису завантажувача.
Через деякий час пробував завантажити простий скетч блінк в свою ардуіно нано, видає ту ж саму помилку. Виходить, що якимось чином палата ардуіно зіпсувалась
Остання редакція Daminski (2023-11-13 15:58:59)
Неактивний
Спробуйте замінити кабель USB-miniUSB і підключити в інший USB-порт, бо щось у Вас проблема з самого початку має імовірнісний характер і прогресує.
Потестуйте на пункті 5 інструкції, має бути 100% стабільність і повторюваність.
Можна ще зробити так (скачати флеш):
avrdude -P COM4 -b 115200 -c arduino -p m328p -U flash:r:flashdump.hex:i
А потім повторювати (порівнювати зі скачаним):
avrdude -P COM4 -b 115200 -c arduino -p m328p -U flash:v:flashdump.hex:i
Неактивний
Спробуй не використовувати 0-й пін, на деяких платах він погано працює
Спробуйте замінити кабель USB-miniUSB і підключити в інший USB-порт, бо щось у Вас проблема з самого початку має імовірнісний характер і прогресує.
Потестуйте на пункті 5 інструкції, має бути 100% стабільність і повторюваність.
Можна ще зробити так (скачати флеш):
avrdude -P COM4 -b 115200 -c arduino -p m328p -U flash:r:flashdump.hex:i
А потім повторювати (порівнювати зі скачаним):
avrdude -P COM4 -b 115200 -c arduino -p m328p -U flash:v:flashdump.hex:i
Дякую, ваш рецепт з командами допоміг повернути до нормальної роботи мою Arduino Nano
Хочу уточнити, що коректно працює AVRdude з вашого посилання і тільки якщо я її папку розміщаю на диску С:. А от "вбудована" версія AVRdude, котра йде в папці з ардуіно (C:/Users/user/AppData/Local/Arduino15/packages/arduino/tools/avrdude6.3.0-arduino17) чомусь взагалі не реагує на команди. Можливо тому що файл avrdude.conf знаходиться в іншій папці (C:/Users/user/AppData/Local/Arduino15/packages/arduino/tools/avrdude6.3.0-arduino17/etc).
Буду ще раз пробувати зчитати ф'юзи в аттіні. Також купив програматор USBasp і в ньому виявилась застаріла прошивка, для заміни якої потрібен другий такий самий програматор Тож сподіваюсь щось вдасться зробити за допомогою ардуіно в якості програматора для аттіні.
Остання редакція Daminski (2023-11-17 04:27:36)
Неактивний
avrdude: AVR device initialized and ready to accept instructions
avrdude: device signature = 0x1e9007 (probably t13a)
avrdude: reading lfuse memory ...
avrdude: writing output file <stdout>
0x3a
avrdude: reading hfuse memory ...
avrdude: writing output file <stdout>
0xfb
avrdude done. Thank you.
Наскільки я зрозумів, зараз ф'юзи 3A FB і в калькуляторі ф'юзів на них відключено параметр "Divide clock by 8 internally; [CKDIV8=0]", тобто ділителя частоти не має бути. А при цьому чомусь простий код PWM вимикача всерівно не працює В чому ще може бути причина? Частота прошивки 9.6МГц, в якості PWM сигналу використовую тестер для сервомашинок... Але тепер радує, що вже не видає помилку при прошивці, яка була з самого початку
Остання редакція Daminski (2023-11-17 05:04:21)
Неактивний
З ф'юзами тіні все гаразд, дільник на 8 відключений. А Ви тестували скетч на нано і параметри 1200 і 1800 підібрали на ній? Тоді переконайтеся, що при компіляції скетчу для нано була виставлена частота процесора 16МГц, а для тіні 9.6МГц. І взагалі, переконайтеся, що pulseIn на тіні працює. Згідно її опису, якщо імпульс не виявлено, то вона повертає 0, додайте в код: digitalWrite(1, ch3 ? HIGH : LOW); і подивіться, що на пін 1 коли є ШІМ і коли немає. Щоб не чекала дуже довго, додайте третій параметр таймаут.
Якщо avrdude.conf лежить в іншому каталозі, то шлях до нього можна задати в командному рядку ключиком -C, без ключика avrdude шукає конфіг в каталозі, який в ного був зашитий при компіляції.
USBasp можна прошити за допомогою нано:
avrdude -P COM4 -b 19200 -c avrisp -p m8a -U flash:w:usbasp.atmega8.2011-05-28.hex
Прошивку взяти звідси і на USBasp замкнути перемичку Selfprogramming (дивіться схему USBasp).
Неактивний