gpt4 book ai didi

c - PIC32与RTC集成

转载 作者:行者123 更新时间:2023-11-30 17:37:16 24 4
gpt4 key购买 nike

我正在使用 PIC32MX795f512L 并使用 MCP79410 RTC 集成基于时间的功能。由于某些应用目的,我使用外部 RTC (MCP79410)。

我只想使用两个警报中断,但我只能访问一个警报中断。如果我启用了 ALM0 和 ALM1,则只有我使用的最后一个警报起作用。另一个报警中断不起作用。

我尝试过的代码:

void RTCInit(void){
I2CConfigure(I2C2, I2C_ENABLE_SLAVE_CLOCK_STRETCHING);
I2CSetFrequency(I2C2,SYSTEM_CLK,RTC_CLK);
I2CSetSlaveAddress(I2C2,RTC_WRITE_ADDR,0,I2C_USE_7BIT_ADDRESS);
I2CEnable(I2C2,TRUE);
}


void ConfigI2C(void){
PORTSetPinsDigitalIn(IOPORT_E, BIT_9);
INTCONSET = 0x00000002;
INTSetVectorPriority(INT_EXTERNAL_2_VECTOR, INT_PRIORITY_LEVEL_3);
INTSetVectorSubPriority(INT_EXTERNAL_2_VECTOR, INT_SUB_PRIORITY_LEVEL_1);
INTEnable(INT_INT2, INT_ENABLED);
}

我尝试过的警报:

void SetALMTime(void)
{
int temp;
WriteAddress[0] = RTC_WRITE_ADDR;
DelayMs(2);
WriteOnI2C(ADDR_ALM0MIN,0x01); //min to be alarmed ALM0
DelayMs(2);
WriteOnI2C(ADDR_ALM0CTL,0x10); // alarm0 compare min
DelayMs(2);
WriteOnI2C(ADDR_ALM1MIN,0x00); //min to be alarmed ALM1
DelayMs(2);
WriteOnI2C(ADDR_ALM1CTL,0x10); // alarm1 compare min
DelayMs(2);
WriteOnI2C(ADDR_CTRL,0x30);
DelayMs(2);
}

最佳答案

在 RTCInit 函数中,确保启用控制寄存器 (0x07) 的位 5 和 4。启用两个警报都需要这两位。该函数中列出的宏似乎都没有说明有关启用两个警报的信息。请使用 MCP79410 数据表第 4.1.1 RTCC 寄存器地址部分作为引用。

这是数据表的链接: MCP7941X datasheet

问候。

关于c - PIC32与RTC集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22450972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com