Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 07.09.2012, 21:37  
Faworit
Прописка
 
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
Faworit на пути к лучшему
По умолчанию 10 бит в SPI протоколе

Нужно связать мегу8 и ЦАП TLC5615 по SPI протоколу, но тут вопрос, ЦАП 10 битный а протокол 8 бит, получается что второй блок цап "урежит" сам? Или я ошибаюсь? Может кто поделится кодом, или показать на примере, хочу понять логику.
Реклама:
Faworit вне форума  
Сказали "Спасибо" Faworit
warel (29.06.2019)
Непрочитано 07.09.2012, 22:45  
Алекс Василич
Прописка
 
Аватар для Алекс Василич
 
Регистрация: 14.06.2012
Сообщений: 263
Сказал спасибо: 2
Сказали Спасибо 129 раз(а) в 103 сообщении(ях)
Алекс Василич на пути к лучшему
По умолчанию Re: 10 бит в SPI протоколе

Да ничего там не "урежет". Ну даташит то прочитай. Два байта, то есть, 16 бит, 4 старших бита - пустые.
Протокол то может и по 8 бит, но количество передаваемых байт - не ограничено.
Ты должен по SPI передать последовательно 2 байта. Для 0 Вольт на выходе нужно передать 0х00 0х00.
Для почти Vrefin на выходе - передать 0x08 0x00.
Для почти удвоенного Vrefin напряжения на выходе - передать 0x0F 0xFC
Минимальное значение приращения от нуля - 0х00 0х04

Последний раз редактировалось Алекс Василич; 07.09.2012 в 23:08.
Алекс Василич вне форума  
Сказали "Спасибо" Алекс Василич
warel (29.06.2019)
Непрочитано 07.09.2012, 22:58  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,014
Сказал спасибо: 3,025
Сказали Спасибо 3,196 раз(а) в 2,168 сообщении(ях)
ForcePoint на пути к лучшему
Стрелка Re: 10 бит в SPI протоколе

1. Да-да, RTFM. Передаётся от мастера 16 бит. Для осмысления временных диаграмм знание английского не обязательно.
2. Есть для tiny26 + TLC5606. Но - на ассемблере и для USI. Интересно?
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
warel (29.06.2019)
Непрочитано 08.09.2012, 10:30  
Faworit
Прописка
 
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
Faworit на пути к лучшему
По умолчанию Re: 10 бит в SPI протоколе

Алекс Василич, о том что можно передавать разное количество байт это понятно, а вот передаю пакет.... и у меня не верные выходные напряжения на цапе ;( никак не въеду почему.
ForcePoint, да на чем написано мне пофиг, мне ведь понять сам принцип передачи на цап пакета, буду благодарен за програмку, я пишу и на аврке(си) и на асме и агоритмбилдере, так что разберусь с асемблером.
Faworit вне форума  
Сказали "Спасибо" Faworit
warel (29.06.2019)
Непрочитано 08.09.2012, 11:20  
Алекс Василич
Прописка
 
Аватар для Алекс Василич
 
Регистрация: 14.06.2012
Сообщений: 263
Сказал спасибо: 2
Сказали Спасибо 129 раз(а) в 103 сообщении(ях)
Алекс Василич на пути к лучшему
По умолчанию Re: 10 бит в SPI протоколе

Значение Vrefin не должно превышать VDD-2 Вольта. Выходное напряжение не будет превышать VDD-0,4 Вольта, независимо от входного кода. Чтобы использовать полный диапазон входных кодов, нужно Vrefin вибирать не больше (VDD-0,4)/2
SPI должен работать в режиме 0. Из-за неправильного режима данные могут либо не приниматься вообще, либо ошибка выходного напряжения будет ровно в 2 раза (слово сдвигается на 1 бит вправо)
Миниатюры:
Нажмите на изображение для увеличения
Название: 225.gif
Просмотров: 66
Размер:	45.0 Кб
ID:	38459  

Последний раз редактировалось Алекс Василич; 08.09.2012 в 11:55.
Алекс Василич вне форума  
Эти 2 пользователя(ей) сказали Спасибо Алекс Василич за это сообщение:
Faworit (09.09.2012), warel (29.06.2019)
Непрочитано 08.09.2012, 11:34  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,014
Сказал спасибо: 3,025
Сказали Спасибо 3,196 раз(а) в 2,168 сообщении(ях)
ForcePoint на пути к лучшему
Стрелка Re: 10 бит в SPI протоколе

Вот как-то так было. Правда комментариев почти что нет и для осмысления надо снова лезть в DS на ЦАП. Регистровая переменная voltage - это то, что требуется получить на выходе ЦАПа, двойной сдвиг и маскирование в подпрограмме DAC_out - это как раз приведение данных к формату для записи в регистр ЦАП. Зачем понадобилась задержка delay_cnt - уже не помню точно, вероятно там задавался произвольный (аж 16-и битный) "отступ" запуска АЦП от выдачи на ЦАП.

Код:
.....
; *** Константы ***
.....
.equ	LED_OUT =	PA1
.equ	FS =		PB3
.....
.....
; *** Регистры ***
.....
.def	voltage_l =	r26
.def	voltage_h =	r27
.....
.....
.cseg	; *** Сегмент кода ***
.....
.....
DAC_out:			; Передача на ЦАП
.if	debug==0
	push	voltage_l
	push	voltage_h
	lsl	voltage_l
	rol	voltage_h
	lsl	voltage_l
	rol	voltage_h
	andi	voltage_h,0x0F
	ori	voltage_h,0x40

	ldi	temp2,(1‹‹USIOIF)
	out	USISR,temp2
	out	USIDR,voltage_h
	cbi	PORTA,LED_OUT
	cbi	PORTB,FS
do_dac_transfer1:
	sbi	USICR,USITC
	sbis	USISR,USIOIF
	rjmp	do_dac_transfer1

	ldi	temp2,(1‹‹USIOIF)
	out	USISR,temp2
	out	USIDR,voltage_l
do_dac_transfer2:
	sbi	USICR,USITC
	sbis	USISR,USIOIF
	rjmp	do_dac_transfer2
	sbi	PORTB,FS
	sbi	PORTA,LED_OUT

	rcall	delay_cnt
	pop	voltage_h
	pop	voltage_l
.endif	;debug==0
	reti
.....
.....
; Собственно программа
.....
.....
	ldi	temp1,(1‹‹TXPIN)+(1‹‹FS)+(1‹‹PB1)+(1‹‹PB0);(1‹‹PB2)
	out	portb,temp1		; 0b01001011
	ldi	temp1,(1‹‹TXPIN)+(1‹‹FS)+(1‹‹PB2)+(1‹‹PB1)
	out	ddrb,temp1		; 0b01001110	Настройка порта Б
.....
.....
	mov	voltage_l,zero_voltage_l
	mov	voltage_h,zero_voltage_h
	ldi	temp1,(1‹‹USIWM0)|(1‹‹USICS1)|(1‹‹USICS0)
	out	usicr,temp1		; Разрешение SPI/USI
	rcall	DAC_out			; Вывод в ЦАП начального значения
.....
.....
; Дальше - основные циклы работы программы.

Последний раз редактировалось ForcePoint; 08.09.2012 в 11:36.
ForcePoint вне форума  
Эти 2 пользователя(ей) сказали Спасибо ForcePoint за это сообщение:
Faworit (09.09.2012), warel (29.06.2019)
Непрочитано 09.09.2012, 15:30  
Faworit
Прописка
 
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
Faworit на пути к лучшему
По умолчанию Re: 10 бит в SPI протоколе

Немного был занят, получил от Вас описание, думаю что этого будет достаточно. Всем спасибо, тема закрыта.
Faworit вне форума  
Сказали "Спасибо" Faworit
warel (29.06.2019)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32 и 9 бит SPI... всё так плохо? st__1 Микроконтроллеры, АЦП, память и т.д 94 07.08.2012 21:05
EAS-Бит (Противокражный Бит) Противокражная RFID-система в библиотеке (архиве, музее) user9 Микроконтроллеры, АЦП, память и т.д 1 18.06.2012 22:23
10 бит по воздуху Fitz Видеотехника 72 23.10.2011 13:43
Бит защиты 12F629 svn69 Микроконтроллеры, АЦП, память и т.д 4 10.07.2007 18:16
Бит в переменной SerDV Микроконтроллеры, АЦП, память и т.д 3 18.11.2005 15:42


Часовой пояс GMT +4, время: 08:36.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot