我正在开发一种系统,该系统允许设置一个方波周期,然后在设置好之后,便以设置的周期驱动带有方波的led。 无论如何,如果我设置周期,则输出方波会不一致,周期周期会有很大的变化。
我使用的是标准CTC计时器,因为我需要多个输出,所以我不能使用单个pwm输出。我还使用了我经常使用的一段代码,所以我确定这段代码可以正常工作。
if(oldtack!=tack)
{
oldtack=tack;
if((oldtack%(period/2))==0)
{
PORTB^=((1<<PORTB0)|(1<<PORTB1)|(1<<PORTB2)|(1<<PORTB3)|(1<<PORTB4)|(1<<PORTB5));
}
}
以上是我经常使用的,已经过测试并且很确定能正常工作的代码。
与通常的代码唯一不同的是LCD。
我正在使用I2C LCD显示器和我在互联网上找到的图书馆。恐怕此LCD及其库会影响系统运行周期的精度,我需要尽可能精确。
你能帮我吗?
这里是整个代码:https://pastebin.com/J6zCzcqi
编辑 我正在使用此库:https://davidegironi.blogspot.com/2013/06/an-avr-atmega-library-for-hd44780-based.html