Digispark, dimmer и vector_4

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

Привет други! Не могу побороть один вредный трабл, но по порядку.

Нашел интересный проект автономного диммера на Тини85 http://forum.arduino.cc/index.php?topic=314773.0

Диммер в себе, с детектором ноля и прерываниями, рулится аналоговым напряжением на входе. То есть универсальнее некуда. Но вот никак не могу его на digispark клоне китайском запустить. Ругается на мультипликацию вектора прерывания, а куда там рыть я не нашел. Кто подскажет направление? IDE пробовал всякие. 1.6.5 и 1.6.8 пишут одинаково ошибку.

 

 

{archive_file_path}(wiring.c.o): In function `__vector_4':
C:\Users\Roma\AppData\Roaming\Arduino15\packages\digistump\hardware\avr\1.6.7\cores\tiny/wiring.c:93: multiple definition of `__vector_4'
sketch_may24b.cpp.o:C:\Program Files (x86)\Arduino/sketch_may24b.ino:62: first defined here
collect2.exe: error: ld returned 1 exit status
dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

Umka, вы понимате то, о чём говорит компилятор? Программный блок для диджиспарка без вашего на то благоволения забирает под свои нужды прерывание. Что можно сделать? Можно поковырять в кишках, найти нужные строки, и исключить использование прерывания. Разумеется перестанут работать какие-то чисто диджиспарковские функции, например не будет работать бутлоадер.  Либо второй вариант - шить МК не как диджиспарк, а как просто тини85, программатором.

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

Просто как тини85 все компилируется. Да, понимаю что прерывание занято, но не могу найти чем. Может сериал, может что-то еще. Мозгов не хватает найти в исходниках конфликтующую функцию. Это и спрашиваю.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Umka пишет:

найти в исходниках конфликтующую функцию. 

Функция по идее должна называться ISR

А параметром у нее может быть одна из трёх констант

#define TIM1_OVF_vect			_VECTOR(4)
#define TIMER1_OVF_vect			_VECTOR(4)
#define SIG_OVERFLOW1			_VECTOR(4)

Я бы поискал к кодах по названиям констант: TIM1_OVF_vectTIMER1_OVF_vect или SIG_OVERFLOW1.

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

Ну да, нашел ISR(MILLISTIMER_OVF_vect, ISR_NOBLOCK)

Нужно для USB. То есть сохранять загрузчик смысла нет. Вопросов больше нет, буду шить программтором.