Читаю как раз 3 байта верно, а не 1 байт.
Ошибка была при инициализации линии CLK , включена была подтяжка, АЦП было в режиме sleep.
Устранил, сделал просто.
Частоту МК ставил 1 МГц, 8МГц, 16,93МГц. Делал задержки между клоками, результат одинаков.
Скрин анализатора прикрепляю.
CODE
read_ads: // чтение
sbic ads_pin,ads_di //
rjmp read_ads //
rcall ads1244 //
sts ads_h,data //
rcall ads1244 //
sts ads_m,data //
rcall ads1244 //
sts ads_l,data //
sbi ads_port,ads_clk // CLK -> 1 импульс
nop
nop
nop
cbi ads_port,ads_clk // CLK -> 0
ads_wait2: //
sbis ads_pin,ads_di //
rjmp ads_wait2 //
ret //
ads1244: //
clr data // очищаем регистр перед приемом байта
ldi loop,8 // bit counter
read_ads_c: // цикл
lsl data // data << 1
sbi ads_port,ads_clk // CLK -> 1 импульс
nop
nop
nop
cbi ads_port,ads_clk // CLK -> 0
nop
nop
nop
sbic ads_pin,ads_di // Пропускаем следующую команду, если на входе Di низкий уровень
inc data // data = + 1
dec loop // bit counter - 1
brne read_ads_c // если счетчик цикла > 0, переходим к началу цикла
ret // выход
Эскизы прикрепленных изображений