Перейти к содержанию

Msp430 (Сигнал С Одной Ножки Мк Подать На Другую)


Рекомендуемые сообщения

Здравствуйте! Вопрос: как сигнал (такты с определенной частотой) с одного порта определенной ножки МК подавать на другую этого же порта?? сама задача заключается в том, что бы по нажатию разных кнопок, с помощью прерываний включать разные "штуки", но это все не важно я это могу сделать))

Мне надо, что бы при лог. 1 на ножке P2.2 сигнал со входа P2.3 поступал на P2.4, наверно, это делается как-то просто, но я не могу понять как. Обьясните как это сделать на C или дайте, что-нибудь где можно прочитать про это

post-146339-0-93896600-1360402812.png

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Для "коммутации" одного к другому по разрешающему сигналу можно использовать логический "И" или транзистор.

Дополнение:

А зачем это за пределы программы выносить?

Изменено пользователем tcoder
Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

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

там же нельзя написать типо:

P2.4OUT &= P2.3IN;

то есть с портами так может и будет работать (P2OUT) но с отдельными ножками как-то по другому делать нужно т.к. (P2.4OUT) неправильно

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

В общем я уже сам собрал с логическим "И" на диодах и резисторе (в обвязке МК), но если кто-то знает как это сделать программно - напишите

Ссылка на комментарий
Поделиться на другие сайты

Адресовать на порт(допустим А бит 1) переменную - спаять порты А бит1 и А бит2 паяльником - считать порт (допустим А бит 2). Только нафига это надо? :unknw:

Изменено пользователем chip-chip

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

Ссылка на комментарий
Поделиться на другие сайты

Да я вот перечитываю 10 раз уже, и не могу понять логику однозначно. Я так понял что сигнал подается СНАРУЖИ на P2.3, если в то же время СНАРУЖИ подан разрешающий сигнал на P2.2, то тогда необходимо сделать со входа P2.3 на выход P2.4

If-ами сделайте. Они точно везде будут работать.

Например так:

//Разрешена ли передача с вх3 на вых4
if (P2.2IN){
   P2.4OUT=P2.3IN;   //Разрешена, копируем с 3 на 4
}else{
   P2.4OUT=0;         //Не разрешена, ставим ноль (или вообще игнорируем)
}

По идее и это должно прокатить

P2.4OUT=P2.3IN & P2.2IN

Если я неправильно понял логику, объясните толком, какой из этих контактов ВХОД, какой ВЫХОД.

Изменено пользователем tcoder
Ссылка на комментарий
Поделиться на другие сайты

Адресовать на порт(допустим А бит 1) переменную - спаять порты А бит1 и А бит2 паяльником - считать порт (допустим А бит 2). Только нафига это надо? :unknw:

вы меня явно не так понимаете))

Да я вот перечитываю 10 раз уже, и не могу понять логику однозначно. Я так понял что сигнал подается СНАРУЖИ на P2.3, если в то же время СНАРУЖИ подан разрешающий сигнал на P2.2, то тогда необходимо сделать со входа P2.3 на выход P2.4

If-ами сделайте. Они точно везде будут работать.

Например так:

if (P2.2IN){
P2.4OUT=P2.3IN;
}else{
P2.4OUT=0;
}

Если я неправильно понял логику, объясните толком, какой из этих контактов ВХОД, какой ВЫХОД.

именно так! вот у меня вся проблема в том, что code composere нельза задать порт, как P2.3OUT можно только P2OUT - в этом вся проблема.

только разрешающий сигнал, не снаружи подается, а "снутри")) он появляется на ножке после нажатия кнопки.

Вообще мне нужно, что бы после срабатывания прерывания сигнал со входа одной ножки, подавался на выход другой. А контролировалось все это кнопкой, кнопка 1раз "нажата-отпущена" - сигнал подается на выход, 2рой раз "нажата-отпущена" - на выходе ноль.

Изменено пользователем abe
Ссылка на комментарий
Поделиться на другие сайты

В моем примере нет P2.3OUT

Если используется внутренний сигнал разрешения, то тогда используйте отдельную переменную для "проводки" сигнала, а не порт. Если надо заодно и в порт вывести разрешающий сигнал, сделайте это отдельно от операции "бит3=бит4 если разрешено"

P2.4OUT=P2.3IN & my_enable_signal

Или имеете ввиду, что к ОТДЕЛЬНЫМ БИТАМ вообще нельзя обращаться? Тогда используйте битовые маски и побитовый сдвиг. Можно через пару часов более детально разобрать решение, а то сейчас мне некогда... если Вам его раньше не подскажут.

Изменено пользователем tcoder
Ссылка на комментарий
Поделиться на другие сайты

Вообще мне нужно, что бы после срабатывания прерывания сигнал со входа одной ножки, подавался на выход другой. А контролировалось все это кнопкой, кнопка 1раз "нажата-отпущена" - сигнал подается на выход, 2рой раз "нажата-отпущена" - на выходе ноль.

Ну логика теперь понятна. Сейчас прикину, как там сделать, отпишу.

Вот довольно грубое решение, но должно работать:

if (P2IN & BIT3 & my_en){
   //Если разрешено и есть единица в сигнале
   P2OUT |= BIT4;  //Установка бита 4 в единицу
}else{
  //Если нет разрешения или входной сигнал =0
  P2OUT &= ~BIT4; //Установка бита 4 в ноль
}

- Переменная my_en - это переменная разрешения передачи, если my_en = BIT3 - передача разрешена, если my_en=0 - передача запрещена. Чтобы с каждым прерыванием менять состояние данной переменной на противоположное - это в функцию прерывания по кнопке:

my_en ^=BIT3;

- Убедиться, что значение констант BIT3 и BIT4 соответствуют вашим битам. (кто-то с нуля биты считает, а кто-то с единицы - константы BIT подразумевают счёт с нуля)

===

Что то мне подсказывает, что есть более изящное решение, основанное чисто на логических функциях, но что-то мне сегодня плохо думается.

Изменено пользователем tcoder
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...