2. Полный бред, такое первый раз слышу

.
Проблему нашел, дело было в кривых руках ...
Точнее, делитель сигнала CLK, перепутал резисторы, поставил на место и все работает.
Судя по ДШ на АЦП данные появляются после первого спада, а не фронта как советовали выше.
Всем спасибо.
Для архива, может кому понадобится.
Частота Атмеги 16,9344 МГц.
CODE
// Модуль для работы с ADS1244
// Размер данных 24 бит (Только чтение)
// Инициализация пинов сдесь ставим свои данные
.equ ads_port = PORTD //
.equ ads_pin = PIND //
.equ ads_ddr = DDRD //
// Распиновка ног
.equ ads_clk = PD3 // Serial Clock Output
.equ ads_di = PD4 // Serial Data Input
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 25ц импульс
nop
nop
nop
cbi ads_port,ads_clk // CLK -> 0
ret //
ads1244: // чтение байта с 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 // выход
Сообщение отредактировал Павлик - Oct 4 2011, 08:05