如何将attiny85与源文件集成?专门将Timer0更改为Timer1,以避免定时器的使用冲突

时间:2019-04-22 15:40:35

标签: arduino attiny

我正在尝试使用按钮和ATtiny85在计时器上控制伺服电机。只需按一下按钮,我就可以使用ATtiny使LED闪烁,但是一旦包含了伺服库,我的代码就无法工作。

我尝试使用Servo.h库和Servo8Bit.h库,但均无法使用。我以为问题可能出在一个用于两种不同事情的计时器上,所以我进入了Servo8Bit.h和Servo8Bit.cpp源文件,将所有Timer0更改为Timer1,将所有TCCR0B更改为TCCR1B。

当我尝试上传代码时,我收到以下错误消息:

/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 :(得分:0)

您要做的就是注释/取消注释头文件Servo8Bit.h中的正确选择:

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

,它将使用正确的设置进行编译等等。

您可能已尝试将各处的0更改为1,但失败了,因为timer0和timer1不同。与timer0不同,timer1没有两个控制寄存器A和B。