И снова непонятки

вызываю три функции для чтения данных с ds1307 по очереди.
1-функция считывает время.
2-функция считывает дату.
3-регистр настроек.
функция READ_TWR во всех функциях чтения отрабатывает великолепно.считанные данные сохраняются в буфер TWI_buffer
затем функцией memcpy нужно данные перенести в структуру PtrRTC_struct.
Код: Выделить всё
read_Time_RTC(); // 1
read_Data_RTC(); // 2
read_status_RTC();// 3
при таком раскладе все ништяг. все данные по порядку переносятся в структуру.
Код: Выделить всё
void read_Time_RTC(void)
{
READ_TWR(ADDRESS_RTC,0x00,3);
memcpy(PtrRTC_struct,TWI_buffer,3);
}
void read_Data_RTC(void)
{
READ_TWR(ADDRESS_RTC,0x03,4);
memcpy(&(PtrRTC_struct->den_nedeli),TWI_buffer,4);
}
void read_status_RTC(void)
{
READ_TWR(ADDRESS_RTC,0x07,1);
memcpy(&(PtrRTC_struct->status_registr),TWI_buffer,1);
}
но я изначально автоматом указатель на структуру в в функции read_Time_RTC для emcpy указал вот так
memcpy(
&PtrRTC_struct,TWI_buffer,3);
в общем картина выглядела:
Код: Выделить всё
void read_Time_RTC(void)
{
READ_TWR(ADDRESS_RTC,0x00,3);
memcpy(&PtrRTC_struct,TWI_buffer,3);
}
void read_Data_RTC(void)
{
READ_TWR(ADDRESS_RTC,0x03,4);
memcpy(&(PtrRTC_struct->den_nedeli),TWI_buffer,4);
}
void read_status_RTC(void)
{
READ_TWR(ADDRESS_RTC,0x07,1);
memcpy(&(PtrRTC_struct->status_registr),TWI_buffer,1);
}
при такой записи ни одна функция не переносит данные в структуру, стоит только ликвидировать //read_Time_RTC(); // 1 так остальные начинают выполнять свои обязанности.что за чудное явление? как практически независимые функции взаимосвязаны?