КТ315, МЕГА8. Как лучше организовать ключевой режим?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Вымогатель припоя
Аватара пользователя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Сообщение Alexeus »

КТ315, МЕГА8

Подскажите как КТ315 или другой н-п-н транзистор (просто КТ315 навалом у меня) лучше включить в качестве ключа. Нужно для режима передачи по SPI инвертировать сигнал на вход SS, вобщем по приходу высокого уровня (5в) на базу транзистора, замыкать SS на землю.
Реклама
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж

Сообщение pirotehnick »

Хмм... Оригинально...
Обычно вывод SS настраивается как выход. Если ты замкнёшь вывод SS на землю без токоограничивающего резистора в этом режиме, то этот вывод да и этот порт больше использовать не сможешь по понятным причинам :)).
Наверное ты имел ввиду открывать транзюк выводом SS, т.е. им подавать смещение на базу.


Ну а транзюк включается традиционно по схеме с общим эмиттером.
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Сообщение Alexeus »

SS вход. Я думаю, ничего страшного не произойдет если я замкну SS на землю. Я пользую мк в режиме Slave. Именно замыканием на землю активируется прием данных по SPI интерфейсу, а высокий уровень прерывает прием. Читаю иногда даташиты :)

Просто от стороннего устройства идет инверсный сигнал- когда нужно принимать (данные по шине идут), это устройство дает высокий лог. уровень, а мне нужен в этот момент низкий.

Поправьте если не так: я беру КТ315, к его базе через R1 подпаиваю выход устройства, сигнал которого мне нужно инвертировать. Эмитер сажаю на землю. между коллектором и +5в подпаиваю подтягивающий резистор R2, ну и так, для нагрузки (или не нужно? -в мк вроде уже стоят они), инверсный сигнал снимаю с коллектора транзистора.

1) R1 к базе транзистора, при небольших токах какой брать? я вроде около 12к насчитал.
2) R2 в 1к хватит думаю...
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж

Сообщение pirotehnick »

А, тогда понятно.

Так тоже пойдёт. Хотя при записи в порт я обычно конфигурирую пины на вход и выставляю их в состояние высокого уровня. В этом случае можно напрямую их подрубать к коллектору, но всё же лучше через резюк.


R1 от 4 до 20 КОм
R2 от 0 до 2КОм (если как вход при Rп = 40 КОм)
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Сообщение Alexeus »

что то не получается... пользую КТ315Б на базу через резистор 12к идут положительные импульсы, эмитер посажен на землю, коллектор через резистор 1к посажен на "+".

Сажаю вход SS просто на землю- данные с шины считываются, но бывает не с того места начинает читаться и неправильные байты получаются, путает полубайты...

Что бы всегда был байт такой каким его послал мастер, нужно вход SS посадить на синхроимпульс мастера - SS должен сажаться на землю когда мастер начинает передачу байта, затем мастер поднимает SS. Так вот так получилось, что с мастера этот синхроимпульс идет высоким импульсом в момент передачи, я его инвертирую с помощью транзистора. Сажаю SS на коллектор вышеописаной схемы- и тишина, ничего не принимается, если на базу подключить- тоже ничего.

что за ерунда... SS на подчиненном мк пока в высокоомном состоянии, не пробовал с подтяжкой (хотя в высокоомном состоянии резистор в 1к от коллектора является подтяжкой к "+"). схема работает, сигнал инвертирует- проверял светодиодом от коллектора через резистор на "+" -светится.
Реклама
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж

Сообщение pirotehnick »

Так.... Давай разбираться :)

Если МК - работает как подчинённый, то его вывод SS конфигурируется ны вход и на нём выставляется высокий уровень.
Данный вывод сажается на коллектор транзистора (можно через резистор 1 КОм). При подаче смещения на базу транзюк открывается и на входе SS (у подчинённого) появлется низкий уровень. Разумеется, вывод SS ведущего ус-ва подключается к базе транзистора.

Так ты сделал?

Ещё причиной таких глюков может быть сам транзюк. КТ315 - транзюки не лучшего качества, хотя подобный принцип у меня работал и с ними.

Попробуй взять импортный, с частотой передачи этак 5000 МГц.
Например 2SC3357 пойдёт.
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Сообщение Alexeus »

Я подключаюсь к уже готовому прибору, там два МК, один всегда мастер, второй подчиненный, а я просто сажусь на их шины clk, mosi/miso. Соответственно мне то не нужно менять состояние выхода SS тех мк, пусть они работают как должны, а я снимаю с них данные (сниффер).

Почитал повнимательнее даташит, при замыкании на землю активируется режим SPI, но если подать высокий уровень, то происходит сброс! модуля SPI, а затем снова подается низкий уровень, так и чередуется- может просто модуль не может работать в таком режиме актив/сброс -просто не успевает инициализироваться!?

Как же тогда быть, ведь мне нужно принять байт только когда на время его передачи специально включается низкий/высокий уровень.

а если оперировать включением/выключением режима SPI через регистр SPCR -это не будет перезагрузкой модуля? тогда можно подать этот сигнал начала передачи на другой вход порта и по высокому/низкому уровню включать и выключать модуль spi- тогда он будет включаться и принимать данные как раз по сигналу.

транзистор инвертирует отлично- приложу скриншот.
Вложения
ss.jpg
сигнал управления для SS входа.
(24.13 КБ) 735 скачиваний
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж

Сообщение pirotehnick »

Хмм... Если так, можно попробовать провести обманный ход. Если твой принимающий девайс как подчинённый, можно создать исключение, т.е. прицепить линию SS к другому входу твоего МК, а SPI оставить включённым (т.е. на SS принимающего МК низкий уровень) и по приёму данных проводить проверку уровня линии.
Либо через транзюк подключать линию SCK. Сигнала синхронизации не будет и в регистр ни чего не придёт, а SPI модуль останеться включённым.
Последний раз редактировалось pirotehnick Ср янв 28, 2009 00:12:01, всего редактировалось 1 раз.
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Сообщение Alexeus »

вот-вот... у меня такая же мысль насчет транзистора появилась, просто не рискнул высказать :) попробую так сделать,

1.по управляющему сигналу sck подключать/отключать.

2. можно наверное подать управляющий сигнал на pinb.0 а ss посадить на землю. и делать проверку, если на pinb.0 низкий уровень, то переходим к циклу приема по SPI.

..................

сделал по второму варианту- все равно лезут сдвиги как и было раньше, наверное связано с аппаратным SPI- после инициализации он начинает сразу работать, реагировать на sck и принимать данные, а программно по биту "0" в порту мы только выбираем момент когда считать, но в регистр до этого момента уже пришел неверный байт...

позже попробую первый вариант... а как, кстати включить транзистор что бы первый вариант сделать- это, похоже, уже пару транзисторов нужно?
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж

Сообщение pirotehnick »

наверное связано с аппаратным SPI- после инициализации он начинает сразу работать, реагировать на sck и принимать данные

Странно, я кога работал с картой MMC, всё было нормально, при этом модуль SPI был постоянно включен, да и если посмотреть на временную диаграмму SPI, то же ни каких проблем возникнуть не должно.
Кстати сигнал на SCK при котором девайс должен переходить в ожидание, должен быть противоположен сигналу, при котором SPI запихивает данные в свой регистр. А там есть 2 возможных варианта - по нарастающему и по падающему фронту. Т.е. если сигнал тактирования по падающему фронту, то на время ожидания на SCK должен быть высокий уровень!

Если использовать первый вариант могут возникнуть проблемы, связанные с заполнением регистра не нужными битами. Т.е. на момент исключения, в регистр возможно заноситься часть данных, затем устройство говорит что оно готово и данные начинают передаваться, но в регистре уже сидят не нужные биты и, возможно из-за этого возникает такая фигня. Т.е. сразу же после обнарухения сигнала, надо както сбросить регист.

кстати включить транзистор что бы первый вариант сделать- это, похоже, уже пару транзисторов нужно?

Да вроде бы и одного должно хватить

А вообще на какой скорости ты юзаешь SPI?
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Сообщение Alexeus »

ща картинку приложу

Странно, почему вход SS, подключенный напрямую к коллектору транзистора не включал spi, ведь транзистор нормально инвертировал...

-Второй раз попробовал с транзистором, отключил подтягивающий резистор на "+", на коллектор SS повесил- и заработало. Вроде нормально синхронизирует и получает нормальные байты (сравнивал с графической диаграммой шины данных) Хотя не думаю что в подтяжке дело было...
Вложения
сигналы.jpg
(54.51 КБ) 699 скачиваний
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»