реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> AVR + Си + мультиплексор = Матрица
isx
сообщение Apr 1 2012, 13:17
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 1-04-12
Пользователь №: 71 126



А как можно реализовать такую идейку.
Надо используя 2 порта МК пустить их через мультиплексор. Один порт МК должен работать как вход а второй как выход (с высоким уровнем).
Принцип такой: Пускаем на первую ногу мультиплексора (который как выход работает) высокоуровневый сигнал. Затем считываем состояние всех входов второго мультиплексора (который работает как вход) поочерёдно. Затем пускаем на вторую ногу мультиплексора (который как выход работает) высокоуровневый сигнал. И снова считываем состояние всех входов второго мультиплексора (который работает как вход) поочерёдно (и так далее, а затем процесс повторяется.)

Код
for (mult=0;mult<=5;mult++){

PORTB &= 0b11100011;
PORTB |= mult << 2;
_delay_ms(1);

for(multt=0;multt<=5;multt++){

PORTB &= 0b11100011;
PORTB |= multt << 2;
_delay_ms(1);

// здесь сам процесс обработки сигнала, он не суть важен

};
}

Вот то что я набросал, но только не могу сделать так, чтоб менялись ноги МК и мультиплексор тогда, когда переходим ко второму "FOR".

Сообщение отредактировал IgorKossak - Apr 1 2012, 16:53
Причина редактирования: [code], [codebox] для длинного кода
Go to the top of the page
 
+Quote Post
alexeyv
сообщение Apr 2 2012, 05:05
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



А зачем вообще два цикла?
Go to the top of the page
 
+Quote Post
Navovvol
сообщение Apr 2 2012, 10:15
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



Чет я нифига не понял. Чего собственно добивался топикстартер от этих двух циклов FOR? И интересно, когда вы считываете входа?
Вообщем надо сделать так: добавить таймер, который уходит по сравнению или переполнению каждую 1 милисекунду на обработку прерывания, где увеличивает значение переменной счетчика. В основном цикле сравнивать счетчик с заданым значением (например 5) , если досчитал - выполнить "шаманство" с выходом на мультиплексор, без всяких FOR. По аналогии добавить считывание входов (например каждую милисекунду). Вообщем надеюсь мысль ясна. А то в одном цикле еще цикл, да в каждом программаная задержка на милисекунду - это уже слишком.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th August 2025 - 03:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01972 секунд с 7
ELECTRONIX ©2004-2016