Как интегрировать attiny85 с исходными файлами?Специально изменяя Timer0 на Timer1, чтобы избежать конфликтующего использования таймеров - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь управлять серводвигателем по таймеру с помощью кнопок и ATtiny85.Я могу использовать ATtiny, чтобы светодиод мигал при нажатии кнопки, но как только я включил библиотеку сервоприводов, мой код не работает.

Я попытался использовать библиотеку Servo.h и Servo8Bit.h библиотека, но ни одна не работаетЯ подумал, что проблема может быть в том, что один таймер используется для двух разных вещей, поэтому я пошел в исходные файлы Servo8Bit.h и Servo8Bit.cpp и изменил все Timer0 на Timer1 и все TCCR0B на TCCR1B.

IКогда я пытаюсь загрузить свой код, я получаю следующие сообщения об ошибках:

/private/var/folders/kd/6b3mdhb90xl1rm2j9_dvn7vr0000gn/T/AppTranslocation/EDE8B1E7-9D65-436D-87B1-4534CFB3B4CF/d/Arduino.app/Contents/Java/libraries/Servo8Bit-master/Servo8Bit.cpp: In static member function 'static void ServoSequencer::setupTimerPrescaler()':
/private/var/folders/kd/6b3mdhb90xl1rm2j9_dvn7vr0000gn/T/AppTranslocation/EDE8B1E7-9D65-436D-87B1-4534CFB3B4CF/d/Arduino.app/Contents/Java/libraries/Servo8Bit-master/Servo8Bit.cpp:493:9: error: 'TCCR1A' was not declared in this scope
         TCCR1A = 0;
         ^
/private/var/folders/kd/6b3mdhb90xl1rm2j9_dvn7vr0000gn/T/AppTranslocation/EDE8B1E7-9D65-436D-87B1-4534CFB3B4CF/d/Arduino.app/Contents/Java/libraries/Servo8Bit-master/Servo8Bit.cpp:498:13: error: 'TCCR1B' was not declared in this scope
             TCCR1B &= ~(1<< CS02); //clear
             ^
Using library Servo8Bit-master in folder: /private/var/folders/kd/6b3mdhb90xl1rm2j9_dvn7vr0000gn/T/AppTranslocation/EDE8B1E7-9D65-436D-87B1-4534CFB3B4CF/d/Arduino.app/Contents/Java/libraries/Servo8Bit-master (legacy)
exit status 1
Error compiling for board ATtiny25/45/85.

Ожидаемый результат: после загрузки кода я нажму кнопку.По истечении указанного промежутка времени, 10 минут, в этом случае двигатель должен двигаться, но код даже не загружается.

1 Ответ

0 голосов
/ 23 апреля 2019

Все, что вам нужно сделать, это прокомментировать / раскомментировать правильный выбор в заголовочном файле Servo8Bit.h:

//Options
//pick one, comment out the other one out:
//#define USE_TIMER0
#define USE_TIMER1

, и он будет скомпилирован с правильными настройками и т. Д.

Вы, вероятно, пытались изменить 0 на 1 везде и потерпели неудачу, потому что timer0 и timer1 не совпадают.Таймер1 не имеет двух управляющих регистров A и B в отличие от timer0.

...