Заголовок сообщения: Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср май 03, 2017 22:44:33
Модератор
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4510 Откуда: Планета Земля
Рейтинг сообщения:1 Медали: 1
Помощь и то, что Вы ожидаете от форумчан - немного разные вещи Мало вероятно, что найдутся энтузиасты, которые разработают Вам схему и напишут ПО для МК за "спасибо"
Подскажите, пожалуйста. Есть два МК, если все упростить, то к МК1 подключены светодиоды и кнопки, к МК2 - кнопки и вся основная схема. Необходимо реализовать двусторонний обмен по интерфейсу SPI. (Atmega 16, Atmega 48)
С МК 1 должны посылаться биты на на МК 2, который будет выполнять определенные действия. В то же время с МК2 должны посылаться биты на МК1, которые будут зажигать светодиоды.
МК2 - основной, на нем завязана вся работа (схема управления нагрузкой с настройкой режимов посредством меню на жки дисплее).
С МК1 на МК2 настроил передачу битов, но вот не могу въехать как сделать одновременно и обратную операцию. При этом всем МК 2 выполняет другие действия.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
ИМХО. Раз МК2 основной, значит он должен быть ведущим. Производить обмен данными можно двумя способами: 1 По внешнему прерыванию от инициатора МК1. 2 Через определённый промежуток времени принудительно производить обмен данными.
Раз МК2 занят разного рода деятельностью, то обмен по SPI необходимо реализовать на аппаратном уровне… Пакет данных как мне видится, должен иметь 2 байта. Первый это команда, второй информационный (информация об этой команде).
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Я не совсем понимаю вопрос… Так это обычный обмен ведомого с ведущим через определённый промежуток времени. Промежуток времени ты определяешь сам в зависимости от поставленных задач. ИМХО. 5 раз в секунду делаешь обмен... вполне достаточно для получения информации по кнопкам от МК1.
P.S. Если не совсем понимаешь как работает SPI или не знаешь как настраивать регистры, то вот в этой книге всё подробно написано - https://yadi.sk/i/p3Ej_rure7zgU
Передача по SPI идёт одновременно от ведущего к ведомому и от ведомого к ведущему… похоже тебе нужно книжку покурить… там всё подробно изложено. Удачи!
В общем случае, когда SPI реализован всеми линиями данных (их две - от мастера к слейву и от слейва к мастеру), обмен В ОБОИХ направлениях происходит ОДНОВРЕМЕННО. Мастер тактирует этот обмен клоками, а два сдвиговых регистра (один у мастера, другой у слейва) обмениваются своим содержимым друг с другом. Таким образом, можно передать СОСТОЯНИЕ (слово состояния) слейва к мастеру. Передать таким образом СОБЫТИЕ нельзя. Событие с той или иной латентностью может передавать только мастер. Сиречь, частота обменов должна быть выбрана такой, чтобы чтение состояний слейва не пропускало событий слейва, которые апдейтят оное состояние (флаги).
Сейчас гляну у Евстифеева. Но про то ,что Вы говорите написано в интернете, но не понятно как на стороне слейва сделать так, чтобы в SPDR, по окончании передачи с мастера на слейв, сохранилась та инфа, которая нужна и ее можно было бы прочитать на мастере
Добавлено after 53 minutes 27 seconds: Нихрена не получается, ладно
МК1 (ведомый), должен помещать в регистр SPDR нужную информацию до обмена по SPI между МК… это делается в любое время, но не во время обмена. Когда МК2 организовывает обмен с МК1, в регистре SPDR МК1 необходимая информация для МК2 должна уже быть. Допустим тебе нужно передавать состояние кнопок с МК1 на МК2… так вот реализовываешь мастером (МК2) с ведомым (МК1) обмен через допустим каждые 200 мс… МК1 информацию по кнопкам будет записывать в регистр SPDR при старте самого МК1, а последующая запись в регистр SPDR будет производится в прерывании по приёму байта от МК2. То есть в прерывании считал из регистра SPDR то что приняли от МК2, а затем «в него же» записали состояние кнопок. При следующем обмене эта информация будет передана в МК2… Вот примерно так.
Сейчас гляну у Евстифеева. Но про то ,что Вы говорите написано в интернете, но не понятно как на стороне слейва сделать так, чтобы в SPDR, по окончании передачи с мастера на слейв, сохранилась та инфа, которая нужна и ее можно было бы прочитать на мастере
Добавлено after 53 minutes 27 seconds: Нихрена не получается, ладно
Аппаратный блок работает в жестко заданном режиме. Если задача выходит за рамки, определенные простейшим стандартным функционалом прийдется добавить программные доработки необходимого и/или перейти полностью на программную обработку, добавить аппаратные линии согласования взаимодействия между МК, разработать свой протокол-примитив для синхронизации обмена.
Или в качестве альтернативы (полнодуплексный обмен) применить UART.
Товарищи, подскажите по такой странной ситуации: есть усилитель и на входе спектроанализатор на атмеге8. При работающем АЦП на выходе усилителя появляется небольшой гул и случайные низкочастотные всплески ( больше всего похоже, будто басовую струну легонько дергают). Причем есть особенность, на входе АЦП сигнал поднимается на ОУ к середине питания, если отключаю питание ОУ, по гул и всплески передаются даже просто через питание, сигнальный кабель от спектра отключаю. Если ОУ запитан, но всплески слышны только при подключении сигнального кабеля к спектру. В обоих случаях на светодиодной матрице спектра в такт всплескам подпрыгивают столбики, будто и правда кто-то подает их на вход. Если программно выключаю АЦП, то при всех соединениях никаких артефактов в звуке нет. Питание меги и предварительных усилителей с одного трансформатора, но с разных LM7812(усил) и LM05(мега), усилитель мощности с отдельного транса. на меге стоит 0.1мкФ прямо под ней на ножках питания, + подается на Avcc через дроссель 10мкГн. Опорное напряжение - Vcc, Aref с кондером 0.1мкФ или без пробовал. Подключение ОУ по схеме от Wiselord , только без входных переменников http://radiokot.ru/circuit/audio/other/39/12.png
И если питаю спектр от отдельного БП ничего не меняется
Выяснил новые подробности: дело на в АЦП, а в выводе информации на матрицу, стоит мне отключить питание столбцов и басиста как не бывало. Использую обычные сдвиги 74HC595, столбцы через транзисторы IRLML6401TRPBF
Классическая проблема - протекание питающего индикатор тока по общему земляному проводнику с ненулевым сопротивлением. На этом сопротивлении выделяется напряжение, которое затем усиливается...
при питании матрицы и 74хх от отдельного БП все норм. Попробовал снять отдельные 5В с другой ветки, эффект меньше, но все равно достаточен. Я вроде и земли разделил: земли матрицы и 74хх и земля ОУ+ МК встречаются только на плате БП. Как бороться с такой проблемой?
Значит, протекание тока не устранено - где-то у вас земли имеют общий протяжённый участок. Об этом красноречиво говорит то, что при питании от отдельного источника питания всё в порядке. Т.к. этот источник питания имеет соединение земель с усилителем только в одной точке. А вот когда питаете от источника усилителя - это оказывается не так. Где именно - сказать смогу только после изучения конструкции, которой у меня нет. Поэтом ограничиваюсь только советами. По-хорошему, в сложных случаях, когда имеются "блуждающие" земляные токи, для передачи сигналов нужно использовать дифференциальные сигнал. Ну, или как минимум этот механизм - сигнальный провод + сигнальная земля. Сигнальная земля при этом - это такой же вход, как и сигнальный, только инвертирующий (тут надо к основам применения ОУ отсылку сделать, у них вход '+' и вход '-', так сигнальный - это вход '+', сигнальная земля - вход '-')
Здравствуйте. Поделитесь опытом. Какие задачи лучше решать на ПЛИС, а какие на МК? Как можно организовать обмен между ПЛИС и МК? Может есть несложный проектик для примера? Спасибо.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения