Код
void rtc_write (unsigned char buffer)
{
unsigned char MASK;
RTC_DATA_DIR_SET;
for(i=8;i>=0;--i)
{
...
MASK>>1;
....
}
.............
.............
}
1. Где первоначальное задание значения MASK ?? (по умолчанию=0)
2. MASK>>1; - переменная сдвигается (ноль сдвинуть влево!!) , но никуда не записывается, надо "MASK>>=1;"
Код
unsigned char read_rtc()
{
unsigned char buffer=0;
RTC_DATA_DIR_CLR;
for(i=8;i>=0;--i)
{
buffer|=((buffer<<1)||(PORTE.IN&PIN3_bm));
RTC_SCL_UP;
delay_ms(1);
RTC_SCL_DOWN;
delay_ms(1);
}
return buffer;
}
Значение с шины надо считывать
ПОСЛЕ подачи тактового сигнала!
И вообще, где код вызывающий эти функции, сами они никогда не исполнятся?