论坛

Atmel ATmega8或16上的6 PWM,串行Tx和Rx?

开始于 macmen_seattle 2004年5月21日

我正在(新手)努力使用将执行以下操作的代码,例如在ATmega上 running at
8MHz:

1.在一个方向上运行的六个电机(非伺服器)的PWM。 6-8位占空比 resolution
很好
2.采样一些传感器。
3.通过串行接收电动机速度命令。
4.通过串行发送传感器读数。
5.如果X毫秒后未收到任何命令,请杀死所有电动机。

看起来很简单,但是我无法确定应该由中断驱动什么 should be
轮询。 (我认为)仅将定时器用于PWM是不可行的,因为我需要运行 six motors.
运行PWM频率太高,我消耗了所有周期进行检查,以查看 if a motor
需要启动或停止。

还需要串行数据包协议来对数据包进行构架。包前延迟? 8th bit set
在数据包头上,并将其限制为7位数据? 0xAA作为标头,然后将其转义 if it appears
在数据中?

欢迎您提出建议。示例代码将不胜感激。 Thank
你提前。

格雷格·舒马赫

现在,我们将您带回您定期安排的线程。


>>>macmen_seattle @ macm ... 22/05/2004 10:54:34 am>>>

我正在努力(新手)使用将执行以下操作的代码,例如
一个ATmega在
8MHz:

1.在一个方向上运行的六个电机(非伺服器)的PWM。 6-8位
占空比分辨率
很好
2.采样一些传感器。
3.通过串行接收电动机速度命令。
4.通过串行发送传感器读数。
5.如果X毫秒后未收到任何命令,请杀死所有电动机。

看起来很简单,但我无法确定应该由中断驱动
应该是什么
轮询。 (我认为)单独使用PWM定时器是因为我需要
运行六个马达。
运行PWM频率太高,我消耗了所有的周期检查
看看电机
需要启动或停止。

还需要串行数据包协议来对数据包进行构架。延迟之前
包?第八位
在数据包头上,并将其限制为7位数据? 0xAA作为标题,然后
逃脱它
在数据中?

欢迎您提出建议。示例代码将是极大的
赞赏。谢谢
你提前。

格雷格·舒马赫

现在,我们将您带回您定期安排的线程。

---------------------

您不必费力地尝试在一个芯片中完成所有这些操作,而是拥有
使用多个芯片分解功能的选择?
例如,对每组3个电机使用一个AVR,然后再对另一个使用
AVR用于主控制和串行通信吗?
您可以使用6/8位总线和几条控制线
电机控制芯片,或在芯片之间使用简单的串行协议。
许多人会犯错误,即试图在一个芯片上做太多事情。
除非您有令人信服的理由(成本,电路板空间等)使用
芯片,如果您使用多个芯片,开发将变得更加容易
我认为在此应用程序中。

问候
戴夫:)