Показать сообщение отдельно
Старый 13.11.2010, 00:48   1
Старший модератор
 
Аватар для INFERION
 
Регистрация: 15.02.2010
Адрес: Украина, Полтава
Сообщений: 1498
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
По умолчанию Требуется шаман с бубном, или почему не работает?

Уже недели две валяется драйвер для сини, в котором я не могу достучатся до ЦАП (AD5174.pdf). Ну думаю может где-то в протоколе ошибся, или программный SPI кривой. Собрал специальный стенд, для дебаггинга, на 25-й тиньке. В стенде только МК, ЦАП и самый необходимый обвес для их взаимопонимания. Программу взял с драйвера. Ну думаю с первого раза не запустится, и... обламался. ЦАП на стенде ведёт себя очень даже послушно. Без проблем выполняет все мои команды, на всех моих программных реализациях SPI. А в драйвере тот же самый чип, с той же самой программой не работает... Прощупал осциллографом - пакеты гуляют идентичные. Схему, разводку и монтаж проверял уже раз 10. Ошибок нет. Что за фигня? Может порчу кто-то навёл?

Схема драйвера:
Нажмите на изображение для увеличения
Название: Драйвер.PNG
Просмотров: 362
Размер:	106.1 Кб
ID:	2153
Программа:
Код:
	.INCLUDE "tn84def.inc"

;Векторы прерываний

	rjmp	RESET
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti


;Конфигурация

RESET:	Ldi	R16, HIGH(RAMEND)	;инициализация стека
	out	SPH, R16
	Ldi	R16, LOW(RAMEND)
	out	SPL, R16

	ldi	R16, 0b10000000	;Отключить аналоговый компаратор
	out	ACSR, R16

	ldi	R16, 0b00100000	;Sleep, режим Idle
	out	MCUCR, R16

	ldi	R16, 0b10001100	;Выключить цифровой входной буфер на PA2, PA3 и PA7
	out	DIDR0, R16

	ldi	R16, 0b00000001	;Запуск таймера0, clk/1
	out	TCCR0B, R16

	ldi	R16, 0b00000001	;Включение Over0
	out	TIMSK0, R16

	ldi	R16, 0b00001001	;PB0 и PB3 - подтягивание
	out	PORTB, R16

	ldi	R16, 0b00000111	;PB0, PB1, PB2 - выходы
	out	DDRB, R16

	ldi	R16, 0b01000010	;PA1 и PA6 - подтягивание
	out	PORTA, R16

	ldi	R16, 0b00110001	;PA0, PA4 и PA5 - выходы
	out	DDRA, R16


	sei

back:	sleep
	inc	R18
	brne	back
	inc	R19
	brne	back

	sbi	PORTA, 0

	cbi	PORTB, 0
	ldi	R17, 0b00001010
	ldi	R16, 0b00011100
	rcall	spi
	ldi	R16, 0b00000010
	rcall	spi
	sbi	PORTB, 0

loop:	cbi	PORTA, 5
	sleep
	sbi	PORTA, 5

	cbi	PORTB, 0
	ldi	R17, 0b00001010
	ldi	R16, 0b00000101
	rcall	spi
	ldi	R16, 0b01010101
	rcall	spi
	sbi	PORTB, 0

	rjmp	loop



;Программный SPI ЦАП

;0
spi:	bst	R16, 7
	bld	R17, 2
	out	PORTB, R17
	cbi	PORTB, 1
;1
	bst	R16, 6
	bld	R17, 2
	out	PORTB, R17
	cbi	PORTB, 1
;2
	bst	R16, 5
	bld	R17, 2
	out	PORTB, R17
	cbi	PORTB, 1
;3
	bst	R16, 4
	bld	R17, 2
	out	PORTB, R17
	cbi	PORTB, 1
;4
	bst	R16, 3
	bld	R17, 2
	out	PORTB, R17
	cbi	PORTB, 1
;5
	bst	R16, 2
	bld	R17, 2
	out	PORTB, R17
	cbi	PORTB, 1
;6
	bst	R16, 1
	bld	R17, 2
	out	PORTB, R17
	cbi	PORTB, 1
;7
	bst	R16, 0
	bld	R17, 2
	out	PORTB, R17
	cbi	PORTB, 1
	ret


Схема стенда:
Нажмите на изображение для увеличения
Название: Стенд AD5174.PNG
Просмотров: 285
Размер:	35.5 Кб
ID:	2154
Программа:
Код:
	.INCLUDE "tn25def.inc"

;Векторы прерываний

	rjmp	RESET
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti
	reti


;Конфигурация

RESET:	Ldi	R16, LOW(RAMEND)	;инициализация стека
	out	SPL, R16

	ldi	R16, 0b10000000	;Отключить аналоговый компаратор
	out	ACSR, R16

	ldi	R16, 0b00100000	;Sleep, режим Idle
	out	MCUCR, R16

	ldi	R16, 0b00000001	;Запуск таймера0, clk/1
	out	TCCR0B, R16

	ldi	R16, 0b00000010	;Включение Over0
	out	TIMSK, R16

	ldi	R16, 0b00101000	;PB3 и PB5 - подтягивание
	out	PORTB, R16

	ldi	R16, 0b00011111	;PB0, PB1, PB2, PB3 и PB4 - выходы
	out	DDRB, R16


	sei

back:	sleep
	inc	R18
	brne	back
	inc	R19
	brne	back

	cbi	PORTB, 3
	ldi	R17, 0b00100100
	ldi	R16, 0b00011100
	rcall	spi
	ldi	R16, 0b00000010
	rcall	spi
	sbi	PORTB, 3

loop:	cbi	PORTB, 4
	sleep
	sbi	PORTB, 4

	cbi	PORTB, 3
	ldi	R17, 0b00100100
	ldi	R16, 0b00000101
	rcall	spi
	ldi	R16, 0b01010101
	rcall	spi
	sbi	PORTB, 3

	rjmp	loop



;Программный SPI ЦАП

;0
spi:	bst	R16, 7
	bld	R17, 0
	out	PORTB, R17
	cbi	PORTB, 2
;1
	bst	R16, 6
	bld	R17, 0
	out	PORTB, R17
	cbi	PORTB, 2
;2
	bst	R16, 5
	bld	R17, 0
	out	PORTB, R17
	cbi	PORTB, 2
;3
	bst	R16, 4
	bld	R17, 0
	out	PORTB, R17
	cbi	PORTB, 2
;4
	bst	R16, 3
	bld	R17, 0
	out	PORTB, R17
	cbi	PORTB, 2
;5
	bst	R16, 2
	bld	R17, 0
	out	PORTB, R17
	cbi	PORTB, 2
;6
	bst	R16, 1
	bld	R17, 0
	out	PORTB, R17
	cbi	PORTB, 2
;7
	bst	R16, 0
	bld	R17, 0
	out	PORTB, R17
	cbi	PORTB, 2
	ret


Печатные платы: AD5174.rar.

В общем помогите, как говорится, люди добрые кто чем может ...

[Исправлено: INFERION, 13.11.2010 в 00:59].
INFERION вне форума   Ответить с цитированием Вверх