Страница 1 из 2

соединить два стенда stk500

Добавлено: Ср май 04, 2011 11:22:59
racushka
Задача состоит из двух этапов:
1. есть стенд №1, с кнопок снимаем данные и формируем из него байт. Затем последовательно передаем эти биты на выводы PC6, PC7.
2. Есть стенд №2, его нужно подключить к первому стенду (портами ввода-вывода) и принять последовательные данные, сохранить их и вывести на светодиоды информацию, которая соответствует нажатым светодиодам на стенде №1.

Первый этап выполнен, а как теперь выполнить второй? И можно ли так сделать?

Re: соединить два стенда stk500

Добавлено: Ср май 04, 2011 11:42:38
pyzhman
С точностью до наоборот, т.е. там передаем, а здесь принимаем. Можно. Так работает UART к примеру.

Re: соединить два стенда stk500

Добавлено: Ср май 04, 2011 12:06:01
Fasterpast
Просто проводами соединяешь и всё. Для безопасности через резисторы можно =)
Куда с принимающей стороны подключать - зависит от цели. Если принимающий контроллер сильно загружен, то к ножкам с прерыванием. если нет, и его задача только принимать и зажигать светодиоды - можно и к любым...
РС6 и РС7 в передатчике - такт и данные или оба данные? Если второе - необходимо четко соблюдать задержки как в UART. Если первое - всё вообще легко, упрощенный аналог SPI, I2C и подобных.

Re: соединить два стенда stk500

Добавлено: Ср май 04, 2011 12:14:39
clawham
судя по всему єто учебній проектик...и скорее всего прблема не в проводках а в теории...а вообще по теории заговора...любіе внешние комуникации надо делать изолироваными....или релюхами или трансами или оптопарами или спец микрухами изоляторами....
ну и конечно очень удобно для этих целей юзать две оптопары + rs-485 трансивер... получается красиво дальнобойно надежно дешево и сердито...но эт уже лишене наверно будет

Re: соединить два стенда stk500

Добавлено: Ср май 04, 2011 14:00:34
racushka
проект действительно учебный, второй стенд является вроде как "usb хостом", т.е. логически передача информации осуществляется в соответсвие с usb интерфейсом.
а можно эти два стенда соединить теми шинами, которыми соединяю кнопки с портом и порт со светодиодами? ничего не случиться?

Re: соединить два стенда stk500

Добавлено: Ср май 04, 2011 14:42:11
clawham
в одном из 1000 вариантов и вправду всё соединить можно просто тремя проводками и ничего не случится
а по науке всё что подключается к компьютеру должно иметь развязку от шин устройства...
почему?
очень просто масса компа может оказаться не на нуле а на средней точке 140 вольт...
а вот второй стенд может быть заземленным или зафазенным....или вот человек кнопочку нажать захочет и коснется батареи...или железного поручня..да мало ли чего....результат - нехилый удар током а в случае прямого контакта второго сдтенда или аналогичности блоков питания так и вовсе испепеление проводов выгорание процев и прочие веервестические прелести

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 05:47:11
racushka
clawham писал(а):в одном из 1000 вариантов и вправду всё соединить можно просто тремя проводками и ничего не случится
а по науке всё что подключается к компьютеру должно иметь развязку от шин устройства...
почему?
очень просто масса компа может оказаться не на нуле а на средней точке 140 вольт...
а вот второй стенд может быть заземленным или зафазенным....или вот человек кнопочку нажать захочет и коснется батареи...или железного поручня..да мало ли чего....результат - нехилый удар током а в случае прямого контакта второго сдтенда или аналогичности блоков питания так и вовсе испепеление проводов выгорание процев и прочие веервестические прелести
и что это за развязка и как ее сделать?
Напугали меня, теперь страшно=(

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 06:17:42
pyzhman
Проект-то учебный, какая развязка, запугали ёлы-палы. Соединяете просто выход на вход, про землю/общий не забудьте. Все! А-то развязка, развязка...

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 08:28:02
clawham
а что такого страшного в друх оптопарах и 4-х резисторах?

со стороны передатчика это светодиод...который внутри светится и открывает транзюк(замыкает выход) при этом связь между ними только оптическая....
со стороны приёмника эт просто подтягивающий резистор и всё...

впрочем...хотите вероятность фыейерверка и непонимающие взгляды окружающих - пожалуйста....я когдато ЮСБ кончик из принтера на батарею положил...хватило на всю жизнь

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 08:34:41
pyzhman
Так, уважаемый. Мы STK вяжем или принтер с батареей? Две большие разницы, однако. Вообще говоря, вы конечно правы. Но цель у тс несколько попроще.

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 08:47:13
clawham
А чем человек ходящий в количестве 30 штук вокруг стендов и тыкающий везде свои пальцы не батарея при этом имеющая функцию сигнализации о протекающем по ней током в виде громкого орра и мата?

я с недавних пор и трансформаторы сетевые проверяю мегаомметром и напряжением 1000 вольт (приборчик промышленный для проверки изоляции) ...он свои деньги уже два раза отработал спасши комп и человека...

а так то конечно да...померяй тестером на постоянке и переменке две земли с разных плат и если там ноль...полный ноль....и ничего кроме нуля то тогда да...подключай напрямую и всё будет ГУТ...может быть....пока что....если ничего не изменится...

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 11:48:30
racushka
clawham писал(а):померяй тестером на постоянке и переменке две земли с разных плат и если там ноль...полный ноль....и ничего кроме нуля то тогда да...подключай напрямую и всё будет ГУТ...может быть....пока что....если ничего не изменится...
я честно говоря ничего не мерила, никогда, только видела... и ничего не паяла, тоже никогда, паяльник только пару раз в руках подержала (горячая штука и все)... т.ч. не очень понимаю о чем вы говорите...
взять мультиметр и посмотреть что на земле? или что? преподаватель ничего такого предостерегающего не сказал... странно

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 11:52:02
racushka
clawham писал(а):а что такого страшного в друх оптопарах и 4-х резисторах?
здесь вообще не понимаю что мне нужно сделать... куда что подключать и где брать тоже не понятно...
clawham писал(а):впрочем...хотите вероятность фыейерверка и непонимающие взгляды окружающих - пожалуйста....я когдато ЮСБ кончик из принтера на батарею положил...хватило на всю жизнь
фейерверка не надо, потому и спрашиваю=(
не отношусь я к любителям припаять что-нибудь на досуге... и в электронике не очень разбираюсь (так, общий курс), я больше программист, чем электронщик...

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 12:06:23
clawham
Что значит что куда подключать?
есть у вас с платы с кнопками 3 провода?
один земля второй такт третий данные?
ВОТ...вешаете оптопары на землю значком с полосочкой (катодом) а треугольничек(анод) через 1 килоом резистор) вешаете на сигнальные линии источника...когда МК захочет передать "1" внутри оптопары загорится светодиод
с другой стороны у Вас приёмник...там тоже 3 вывода...земля вход такта и вход данных
берете обе оптопары и их + выхода(колектор транзистора без стрелочки) вешаете на + питания той схемы
а вывод со стрелочкой(эммитер внутреннего фототранзистора) вешаете на сигнальные входные ножки второго МК и с них же на землю по 2 килоома резисторы...или 33 если 2 будет не работать...
ВСЁ!
я даж не знаю как схему-то нарисовать...
где брать оптопары? а где берутся вообще радиодетали? в маганизе на радиорынке или из блоков питания выковыриваются

всегда интересовало что может человек напрограммировать в МК если он вообще без понятия что такое ножка и зачем на ней напряжение....

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 12:31:56
pyzhman
racushka, все, что пишет clawham, верно, но оно вам не надо. Ваша задача соединить два stk - stk1 и stk2, отправить данные с первого и принять данные вторым. Берете три провода. Первый присоединяете к общему stk1 и к общему stk2. Это у вас будет общий/земля. Второй провод присоединяете к РС6 stk1 и PС6 stk2 (пусть будет так). Третий присоединяете к РС7 stk1 и РС7 stk2. Эти два последние провода - сигнальные. Данные, отсылаемые с РС6, будут приниматься на РС6, а отсылаемые с РС7 будут приниматься на РС7. Если не хочется возиться с проводами, возьмите шлейф и просто соедините порт С stk1 с портом С stk2. И программку дайте(отсылательную), ведь чтобы принимать, надо знать как.

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 12:47:22
racushka
pyzh_man писал(а):racushka, все, что пишет clawham, верно, но оно вам не надо.
Это хорошо, что не надо, потому что я ничего не поняла...
pyzh_man писал(а):Берете три провода.

Вообще проводов нет... Только шлейфы...
Поэтому шлейфом и собиралась подключать.
Там на каждом порту есть земля, это значит что дополнительно землю подключать не нужно?
pyzh_man писал(а):И программку дайте(отсылательную), ведь чтобы принимать, надо знать как.

Код: Выделить всё

.include "m16def.inc"
.def Temp = r24 	; регистр для хранения  временных данных
.def cntB = r23 	; счетчик бит
.def Temp1 = r25
.def Temp2 = r26
.def al= r27
.def bl= r28
; Инициализация
	ser 	Temp		; в Temp записываем 0xff
	out		DDRA,Temp	; PORTA настраиваем на выход
	out 	DDRB,Temp 	; PORTB настраиваем на выход
	out     DDRC,Temp   ; PORTC настраиваем на выход
	clr     Temp        ; в Temp записываем 0х00
	out     DDRD,Temp	; PORTD настраиваем на вход
	cbr     Temp2,0x80		
	sbr     Temp2,0x40
	ldi		al, 0b01000000
	ldi		bl, 0b10000000
; шина USB в состоянии покоя
ini:
	sbr		Temp2, 0x20
	out		portc,Temp2		
	clr     Temp		; очищаем временные переменные
	cbr		Temp2, 0x20
	out		portc, Temp2
; Тест ввода-вывода
LOOP:
	sbis 	PIND,0 		; проверяем состояние ключа 1
	cbr 	Temp,0x1	; ключ нажат, зажигаем светодиод 1
	sbic    PIND,0		; нет, гасим
	sbr     Temp,0x1


	sbis 	PIND,1 		; проверяем состояние ключа 2
	cbr 	Temp,0x2	; ключ нажат, зажигаем светодиод 2
	sbic    PIND,1		; нет, гасим
	sbr     Temp,0x2


	sbis 	PIND,2 		; проверяем состояние ключа 3
	cbr 	Temp,0x4 	; ключ нажат, зажигаем светодиод 3
	sbic    PIND,2		; нет, гасим
	sbr     Temp,0x4


	sbis 	PIND,3 		; проверяем состояние ключа 4
	cbr 	Temp,0x8	; ключ нажат, зажигаем светодиод 4
	sbic    PIND,3		; нет, гасим
	sbr     Temp,0x8


	sbis 	PIND,4 		; проверяем состояние ключа 5
	cbr 	Temp,0x10	; ключ нажат, зажигаем светодиод 5
	sbic    PIND,4		; нет, гасим
	sbr     Temp,0x10


	sbis 	PIND,5 		; проверяем состояние ключа 6
	cbr 	Temp,0x20	; ключ нажат, зажигаем светодиод 6
	sbic    PIND,5		; нет, гасим
	sbr     Temp,0x20


	sbis 	PIND,6 		; проверяем состояние ключа 7
	cbr 	Temp,0x40	; ключ нажат, зажигаем светодиод 7
	sbic    PIND,6		; нет, гасим
	sbr     Temp,0x40


	sbis 	PIND,7 		; проверяем состояние ключа 8
	cbr 	Temp,0x80	; ключ нажат, зажигаем светодиод 8
	sbic    PIND,7		; нет, гасим
	sbr     Temp,0x80

	out     PORTA,Temp  ; выводим состояние ключей в PORTA
	out 	PORTB,Temp 	; выводим информацию о состоянии ключей на светодиоды

//	ldi		Temp,0b10010001
; процедура вывода байта по USB
usb_out_byte:
	ldi		cntB,0x08		; загружаем счетчик битов
c1: 
	sbrs	Temp, 7	
	rjmp	lw
	rjmp	hh
	;out 	portc, al;low
	;sbrc	Temp, 7
	;rjmp	hh
	;out		portc,bl;high
//	brne	out_low
lw:
	out 	portc, al
	nop
	lsl		Temp		; сдвигаем на бит влево
	dec		cntB		; уменьшаем счетчик битов
	brne	c1			; проверяем на конец цикла
	rjmp strob

hh:
	out 	portc, bl
	nop
	nop
	lsl		Temp		; сдвигаем на бит влево
	dec		cntB		; уменьшаем счетчик битов
	brne	c1			; проверяем на конец цикла	
	rjmp 	strob
strob:
	ldi 	Temp1, 0b00000000
	out portc, Temp1 	; строб EOP
	nop
	nop
	nop
	nop	
	nop
	nop
	nop
	rjmp	ini

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 12:50:22
racushka
нужно как-то запихнуть данные в РОН какой-нибудь, с остальным я разберусь...

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 12:55:10
pyzhman
racushka писал(а):каждом порту есть земля, это значит что дополнительно землю подключать не нужно?
Нет конечно, не нужно.

Re: соединить два стенда stk500

Добавлено: Чт май 05, 2011 13:17:00
pyzhman
racushka, для чего вы при передаче "0" втыкаете один nop, а при передаче "1" два nop'а?

Re: соединить два стенда stk500

Добавлено: Пт май 06, 2011 05:27:31
racushka
pyzh_man
pyzh_man писал(а):racushka, для чего вы при передаче "0" втыкаете один nop, а при передаче "1" два nop'а?
все нопы для задержки, там разное количество тактов при разных условиях, на нопы не обращайте внимание, задача просто сделать так, чтобы каждый бит передавался 660 нс