我正试图将an ATtiny84A配置为与SPI一起使用,但我对配置端口的数据表中所说的内容有些混淆。ATtiny84A具有数据表所称的“备用端口功能”,因此每个端口可以具有多个功能。在我使用SPI的情况下,为SPI时钟提供服务的引脚也为端口GPIO功能、ADC、I2C时钟等提供服务(见数据表第64页:端口A,第4位)。
我从数据表中了解到的是,当一个功能被设置时,它会自动配置端口。那么如果我尝试一次配置多个端口功能会发生什么呢?例如,如果我在A4端口上配置ADC,而在A4端口上配置时钟源的SPI呢?我找不到一个表明确说明如何配置端口启用或禁用其他功能,所以我想某种功能优先级被采取了?
此外,关于设置方向寄存器以允许SPI时钟通过的信息在哪里?这让我很困惑,因为正如我所说,数据表似乎说端口是自动配置的;但是,为了让时钟通过端口A4传输,我必须将1写入方向寄存器(将其设置为输出),时钟源才能输出,但我在数据表中找不到任何信息来支持这种行为。
下面是一些示例代码,用于从SPI时钟端口获得连续时钟:
USICR |=(1<
编辑:我将从数据表中总结我特别困惑/不知道如何处理的信息:
表10-2,第60页:我不确定配置备用端口功能时这些超控信号的用途。
表10-5,第64页:我在这张表中看到了USI时钟,但我不知道它包含的其他信息告诉了我什么。我看到USCK在DI行中,但我不知道它告诉我端口的配置是什么。