Arduino Nano v2
Это строка из библиотеки Encoder. У меня энкодер работал на прерываниях, а теперь почему-то не хочет, говорит что якобы у 168P нет прерываний. Хотя судя по даташиту они должны быть.
Видимо какая то кривая библиотека. Ссылку бы ?
Да, библиотека действительно кривая. Попробовал скомпилировать простой скетч с прерываниями - скомпилировался нормально. Сейчас поковыряюсь в библиотеке, скорей всего там просто какой-нибудь список доступных контроллеров, в котором нет ATmega168P
Ссылка на библиотеку GitHub - PaulStoffregen/Encoder: Quadrature Encoder Library for Arduino
P.S. Скорей всего вот здесь: utility/interrupt_pins.h - я не нашел ATmega168P, есть просто ATmega168 и ATmega168PB
interrupt_pins.h 35 строка
Да, добавил в нее
||defined(__AVR_ATmega168P__)
и скетч скомпилировался, залился и работает.
Всем ОГРОМНОЕ СПАСИБО за участие! Очень многое для себя узнал.
Тоже сначала (по незнанию, наверное, больше) использовал для энкодера внешние прерывания.
А потом по совету @anonimSimen (или по другому - на его примере) начал через прерывания таймера обрабатывать и в результате “жить, как говорится, - хорошо!”
Ребята помогите разобраться с MEGA168PA (кварц 12 МГц), инфа:
BN: Unknown board
VID: 0x1A86
PID: 0x7523
SN: (null)
Загрузка скетча в Arduino IDE выдаёт ошибку:
avrdude: Version 7.2-arduino.1
Copyright the AVRDUDE authors;
see https://github.com/avrdudes/avrdude/blob/main/AUTHORS
System wide configuration file is C:\Users\Aqel\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\3.0.1\avrdude.conf
Using Port : COM3
Using Programmer : urclock
Overriding Baud Rate : 57600
AVR Part : ATmega168P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : possible i/o
RETRY pulse : SCK
Serial program mode : yes
Parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Alias Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- -------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 512 4 0 3600 3600 0x00 0x00
flash 65 10 128 0 yes 16384 128 128 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 1 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 1 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 1 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 1 0 4500 4500 0x00 0x00
signature 0 0 0 0 no 3 1 0 0 0 0x00 0x00
calibration 0 0 0 0 no 1 1 0 0 0 0x00 0x00
Programmer Type : Urclock
Description : Urclock programmer for urboot bootloaders using urprotocol
Urboot protocol for ATtiny4
avrdude urclock_res_check() error: protocol expects sync byte 0xe0 but got 0x00 in urclock_program_enable()
avrdude main() error: initialization failed, rc=-1
- double check the connections and try again
- use -B to set lower the bit clock frequency, e.g. -B 125kHz
- use -F to override this check
avrdude urclock_disable() error: protocol expects OK byte 0x00 but got 0xe0
avrdude done. Thank you.
Failed uploading: uploading error: exit status 1
Грешу на загрузчик (как писали выше мигает светодиод), если пытаюсь прошить загрузчик:
avrdude: Version 7.2-arduino.1
Copyright the AVRDUDE authors;
see https://github.com/avrdudes/avrdude/blob/main/AUTHORS
System wide configuration file is C:\Users\Aqel\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\3.0.1\avrdude.conf
Using Port : COM3
Using Programmer : stk500v1
Overriding Baud Rate : 19200
avrdude stk500_getsync() warning: attempt 1 of 10: not in sync: resp=0x60
avrdude stk500_getsync() warning: attempt 2 of 10: not in sync: resp=0x66
avrdude stk500_getsync() warning: attempt 3 of 10: not in sync: resp=0x9e
avrdude stk500_getsync() warning: attempt 4 of 10: not in sync: resp=0x66
avrdude stk500_getsync() warning: attempt 5 of 10: not in sync: resp=0x06
avrdude stk500_getsync() warning: attempt 6 of 10: not in sync: resp=0x18
avrdude stk500_getsync() warning: attempt 7 of 10: not in sync: resp=0x78
avrdude stk500_getsync() warning: attempt 8 of 10: not in sync: resp=0x66
avrdude stk500_getsync() warning: attempt 9 of 10: not in sync: resp=0x86
avrdude stk500_getsync() warning: attempt 10 of 10: not in sync: resp=0x7e
avrdude main() error: unable to open programmer stk500v1 on port COM3
avrdude done. Thank you.
Failed chip erase: uploading error: exit status 1
Как запустить в работу её?
PS: в Arduino IDE установлена MiniCore и выставлен кварц на 12 МГц, пробовал загрузить скетч/загрузчик и через стандартные плату 168…
сначала через программатор через ISP записать загрузчик
Есть USBasp, но мне бы хоть какую инструкцию, что бы ардуино не запороть?
Подключить программатор к разъему ISP на самой плате, выбрать нужную плату и нужные опции платы в Arduino IDE, нажать на “Записать загрузчик”
ЗЫ: после записи загрузчика для атмеги 168p из мини-коре снова записать загрузчик из штатного пакета не выйдет ))
Откуда у вас эта плата? Что это за плата? Кварц 12 МГц точно от 168 ?
Обычно 12 МГц это USB-UART
- плату купил у китайцев с Алика,
- кварц на ней стоит 12 МГц,
- да? на USBasp тоже на 12 МГц кварц.
Я уже прошил загрузчик (через USBasp) и скетчи нормально грузятся в неё.
Благодарю за подсказки!
…Arduino Nano.
Не встречал нанки с 12 МГц. Может действительно спутали с кварцем на USB-TTL ? Там действительно стоит 12 МГц
Если вы прошили загрузчик с меньшей частотой, то скетчи будут заливаться, но работать будут с неправильными временными интервалами
я думаю фото нанки разрешит все сомнения
…кварц на второй внизу видно 12 МГц…
Ну гипотетически правильно написано: и кварц и, что на 12МГц. Вот только атмега подключена к керамическому резонатору и он на первой картинке и он на 16(8)МГц. А ведь хотел ещё в начале темы спросить, но думал что самолепная плата