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



我正在尝试使用按钮和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 分钟,电机应该移动,但代码甚至不会上传。

您所要做的就是在头文件中注释/取消注释正确的选择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。

最新更新