0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 60
1

Прерывание по клоку или что то похожее..

30.06.2014, 22:18. Показов 6009. Ответов 20
Метки нет (Все метки)

Доброе суток уважаемы форумчане,прошу помощи, зашёл в тупик... :)

Столкнулся с такой проблемой, есть датчик и есть устройство мастер. Датчик имеет сдвиговый регистр(клок и выход данных) было бы всё просто, но датчик для активации сдвигового регистра должен получить сигнал типа чип селект, проблема в том что Мастер устройство не имеет чип селекта, только может слать клок по одному каналу и получать данные по другому. Пробую между ними на линию клока подключать stm32 что бы stm32 реагировал на клок и слал чип селект датчику. Но не знаю какую периферию лучше задействовать для реакции на клок, SPI,UART,таймеры и т.д.? клок от мастера 4MHz, длина слова 18 бит. и clock idle может быть и 0 и 1.

Посоветуйте что нибудь пожалуйста.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2014, 22:18
Ответы с готовыми решениями:

PWS не может зарегистрить что-то вроде 'msdasql.dll' или что-то похожее.
Ну вот. Сяду, думаю, вечерком и форум себе сделаю. А не тут-то было. Что-то случилось вроде с моим...

Код БД или что-то похожее
Есть разработанная в Access БД, в отчёте нужно выкладывать код. Где мне взять этот код БД?

класс или что-то похожее
У меня при нажатии на кнопку происходит такое действие: private void button2_Click(object sender,...

EWB или что-то похожее на mac os
Существуют ли вообще на mac os программы типа electronic workbench, multisim или что-то с похожим...

20
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 76
30.06.2014, 22:30 2
Я правильно понимаю что у вас Мастер это STM32?
Такого быть не может чтобы мастер не слал сигнал выбора устройства к которому он обращается (если речь идёт о SPI)
Если не изменяет память. то по моему ногу чип селекта в МК определяете вы сами какую нужно.
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
30.06.2014, 22:37 3
а просто на чипселект датчика дать 0 или 1 и забыть о нем?
датчик то - шибко умный? или можно его обмануть ? Может ему на селект дать активный уровень а данные он все равно по клоку будет давать ?
И на лишнем проводе сэкономите :)
0
1 / 1 / 0
Регистрация: 07.02.2106
Сообщений: 4,013
30.06.2014, 22:53 4
Цитата Сообщение от Sytromom
Посоветуйте что нибудь пожалуйста.
Для начала озвучить - что это за датчик . :))))
0
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 76
30.06.2014, 23:01 5
И желательно тогда пояснить, что за Мастер устройство такое хитрое)))
0
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 60
01.07.2014, 09:52 6
Всё просто, датчик это энкодер, мастер устройство это станок, станок умеет работать только по такому интерфейсу Synchronous Serial Interfosi (SSI). В том и дело что энкодер тоже должен быть с таким интерфейсом, но получается что интерфейс почти такой же но с чип селектом.

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

Сейчас ещё раз почитал об это интерфейсе, как я понял clock idle state всегда должен быть высокий уровень, значит уже должно быть по проще.
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
01.07.2014, 10:28 7
Цитата Сообщение от Sytromom
Всё просто, датчик это энкодер, мастер устройство это станок, станок умеет работать только по такому интерфейсу Synchronous Serial Interfosi (SSI). В том и дело что энкодер тоже должен быть с таким интерфейсом, но получается что интерфейс почти такой же но с чип селектом.

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

Сейчас ещё раз почитал об это интерфейсе, как я понял clock idle state всегда должен быть высокий уровень, значит уже должно быть по проще.
А поставить одновибратор ?
Логика его работы может быть такая - по первому импульсу клока он переводит CS в нужный уровень на определенное время. После которого сбрасывается.
При таком раскладе - первый импульс клока будет пропущен но остальными заберет ваши данные - или таки использовать CS контроллера. Хотя СТМ городить просто для согласования - расточительство! Какой нибудь ATTiny15 был бы более к месту - если дискретная логика не справляется. думаю все можно решить двумя таймерами 555 один будет формировать длинный импульс CS который растянется на всю посылку, второй - будет сдвигать на небольшую задержку сигнал клок. Два таймера 555 содержатся в корпусе сдвоенного таймера 556.
Просто не всегда полезно пихать контроллер для каждого чиха. Но это надо посчитать - стоимость платы и деталей и в случае контроллера и в случае таймеров.
Ну и открытый вопрос - когда мастер защелкивает принятый уровень - если по спаду клока - то все будет ок а вот если по фронту - задержка тактирования не прокатит.
Хотя проверить это 5 минут работы. Собрать тупо в воздухе схемку задержки и посмотреть.
0
1 / 1 / 0
Регистрация: 07.02.2106
Сообщений: 4,013
01.07.2014, 11:01 8
Цитата Сообщение от Sytromom
Всё просто, датчик это энкодер,
Нет не просто .
Неужели так трудно озвучить что за энкодер ?
Предлагаешь погадать ?
Так же не понятно - это замена неисправного энкодера , или что то самоляпное ...
0
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 60
01.07.2014, 11:32 9
Цитата Сообщение от botu_dork
А поставить одновибратор ?
Логика его работы может быть такая - по первому импульсу клока он переводит CS в нужный уровень на определенное время. После которого сбрасывается.
При таком раскладе - первый импульс клока будет пропущен но остальными заберет ваши данные - или таки использовать CS контроллера. Хотя СТМ городить просто для согласования - расточительство! Какой нибудь ATTiny15 был бы более к месту - если дискретная логика не справляется. думаю все можно решить двумя таймерами 555 один будет формировать длинный импульс CS который растянется на всю посылку, второй - будет сдвигать на небольшую задержку сигнал клок. Два таймера 555 содержатся в корпусе сдвоенного таймера 556.
Просто не всегда полезно пихать контроллер для каждого чиха. Но это надо посчитать - стоимость платы и деталей и в случае контроллера и в случае таймеров.
Ну и открытый вопрос - когда мастер защелкивает принятый уровень - если по спаду клока - то все будет ок а вот если по фронту - задержка тактирования не прокатит.
Хотя проверить это 5 минут работы. Собрать тупо в воздухе схемку задержки и посмотреть.
Вот это идея, попробую, stm32 ещё и конфигурацию шлёт в датчик иногда.

Цитата Сообщение от dosykus_2
Нет не просто .
Неужели так трудно озвучить что за энкодер ?
Предлагаешь погадать ?
Так же не понятно - это замена неисправного энкодера , или что то самоляпное ...
куплен на замену, китайский, есть бумажное описание, но сам энкодер не гуглится к сожелению. в общем как всегда .
0
1 / 1 / 0
Регистрация: 07.02.2106
Сообщений: 4,013
01.07.2014, 13:01 10
Уууу... тогда все понятно .
0
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 60
01.07.2014, 13:48 11
Цитата Сообщение от dosykus_2
Уууу... тогда все понятно .
не всё так плохо всёж :) Напрямую по SPI с stm32 работает хорошо :)
0
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 60
02.07.2014, 20:28 12
Всё таки на таймерах не получится, потому что частота клока может быть 4МГц может быть и 50кГц, если я правильно понимаю, на таймерах можно выставить только определённую длительность не зависимо от клока, а значит что для 50кГц будет хорошо, для 4МГц будет не очень. И нет под рукой таймеров что бы попробовать.

Пока что по пробовал сделать на МК от friiscale следующим образом: Настроил МК как SPI слйэв, с Мастер-устройства завёл клок на МК и параллельно на датчик. MISO МК завёл на чип селект датчика. Когда приходит клок от мастер-устройства, МК по MISO выдаёт как бы данные(все нули) на чип селек датчика. Вроде всё хорошо, но проблема в том что не могу сделать что бы MISO idle state был высокий уровень. И вторая проблема если MISO МКа настроен выдать по клоку 8 бита, а клок 18 бит, то получается что клок сдвигает один раз 8 бит, второй раз 8 бит и 3 раз уже 2 бита, потому что 18 тактов закончилось.

В stm32 можно что то подобное сделать?
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
02.07.2014, 20:42 13
ну тогда или дискретная логика или CPLD. Контроллеры хреново работают с количеством бит не кратным 8 :(
Я имею ввиду - аппаратные контроллеры. Ну или ногодрыг - софтварный SPI.
0
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 60
02.07.2014, 21:01 14
Цитата Сообщение от botu_dork
ну тогда или дискретная логика или CPLD. Контроллеры хреново работают с количеством бит не кратным 8 :(
Я имею ввиду - аппаратные контроллеры. Ну или ногодрыг - софтварный SPI.
А можно поподробней, я и спрашиваю в какую сторону копать, пока только освоил SPI чуть чуть :)
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
02.07.2014, 21:56 15
ну либо нечто на обычных сдвиговых регистрах и логике( например 74я серия) , Либо чипы Альтера или Xilinx.
Либо на своем контроллере ( friiscale ваш) делается эмуляция SPI slave.
То есть клок с заводского контроллера идет как сигнал внешнего прерывания вашего friiscale, по получении фронта - контроллер выставляет ногу подключенную как CS к вашему энкодеру - далее все то что вы описали выше ( как опрбованное) только во первых - контроллер должен стоять в разрыв а не паралельно сигналам. во вторых - тупо повторять изменение сигналов на входе для выхода на энкодер, и передавать ответ от энкодера обратно не используя аппаратный SPI а просто выставлением уровня пинов.
0
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 60
02.07.2014, 22:07 16
Цитата Сообщение от botu_dork
ну либо нечто на обычных сдвиговых регистрах и логике( например 74я серия) , Либо чипы Альтера или Xilinx.
Либо на своем контроллере ( friiscale ваш) делается эмуляция SPI slave.
То есть клок с заводского контроллера идет как сигнал внешнего прерывания вашего friiscale, по получении фронта - контроллер выставляет ногу подключенную как CS к вашему энкодеру - далее все то что вы описали выше ( как опрбованное) только во первых - контроллер должен стоять в разрыв а не паралельно сигналам. во вторых - тупо повторять изменение сигналов на входе для выхода на энкодер, и передавать ответ от энкодера обратно не используя аппаратный SPI а просто выставлением уровня пинов.
Хочу всё это на stm32 попробовать, что надо задействовать для детектирования фронта? Таймеры? Или SPI, пробовал просто GPIO на stm32l152 но как то медленно получается если клок входящий 4МГц, может как то надо частоту тактирования GPIO поднять?
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
02.07.2014, 22:11 17
По L не скажу - не знаю их! более применима серия F103 у нее клок на GPIO до 50 мегагерц если не путаю с более быстрыми чипами. L заточены под минимальное потребление и поэтому тормоза.

Вот например про использование внешних прерываний http://eugenemcu.ru/publ/13-1-0-80
0
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 60
02.07.2014, 22:14 18
Так вообщем на GPIO пробовать? Скажите мне это заветное слово, таймер или gpio или spi или ещё что то?:) Я просто даже не знаю за что хвататься :)
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
02.07.2014, 22:18 19
ну из ваших параметров - таймер и SPI отпадают :) остается только одно заветное слово :) оно то и отождествляет собой православный ногодрыг :) GPIO :)
для него обычно юзают не менее православные контроллеры 8051 :)
0
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 60
02.07.2014, 22:22 20
сразу тогда вопрос по 8051, где то тут читал что для чистого ногодрыга, битбандинга и т.д. лучше как раз что типа 8051?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2014, 22:22

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Regex или что нибудь похожее
Ребята, устал бороться, кукушка едет. Кто знает Regex или что нибудь подобное, помогите. Кто...

Нужна документация или что - то похожее по OpenCV
Искал на зарубежных ресурсах, но находил одну и ту же статью с конченой документацией + нерабочими...

Откололся транзистор(или что-то похожее) на карте
Решил почистить и разобрать свою radeon hd 5970 , отверткой отколол толи резистор,толи чип,короче...

Массив массивов в VBA или что-то похожее (см. сообщении)
Здравствуйте, умные люди. Есть такая задача: на листах Excel различного рода таблички разного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.