Кот в поисках идей

Обсуждаем цифровые устройства...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Лично я не очень понимаю мысль о просторе для программиста... По вашему мнению, в схемках без дисплея этого простора нет? В чем видится этот простор? Лично я вижу неплохие задачки для программиста даже в автомате световых эффектов - знаете, как в китайских гирляндах? Не смотря на кажущуюся элементарность, там есть над чем помозговать ;)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Мышонок
Друг Кота
Сообщения: 3792
Зарегистрирован: Чт сен 14, 2006 11:42:09
Откуда: Обитаю на чердаке
Контактная информация:

Сообщение Мышонок »

А ведь ARV прав. Планы Бонапартьи, но вы не Наполеон Бонапарт!
Ставьте реальные задачи. В том же мультиметре, например, обработка результатов измерений - дело десятое, прежде необходимо сами измерения произвести. А вот на светодиодных мигалках и надо начинать практиковаться, недаром все учебники по МК именно с них и начинают.
Память очень интересная штука: бывает так, что запомнишь одно, а вспомнишь другое...
Кашпо
Опытный кот
Сообщения: 764
Зарегистрирован: Пт фев 02, 2007 10:19:58
Откуда: Железногорск

Сообщение Кашпо »

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

и таких примеров можно привести много. и многие из них находишь сам, бодаясь с железом. тут уж не до волка с яйцами становится ;-)
Аватара пользователя
Abakt
Вечно гонимый
Сообщения: 568
Зарегистрирован: Ср янв 10, 2007 19:15:51

Сообщение Abakt »

Кашпо писал(а):на который теоретически должна прийти наша единица


но даже теоретически единица должна появится не мгновенно а через некоторое время.
Кашпо
Опытный кот
Сообщения: 764
Зарегистрирован: Пт фев 02, 2007 10:19:58
Откуда: Железногорск

Сообщение Кашпо »

Abakt писал(а):
Кашпо писал(а):на который теоретически должна прийти наша единица
но даже теоретически единица должна появится не мгновенно а через некоторое время.
Я понимаю, что тут не в скорости света дело ;-).

Ну естественно не мгновенно. никто мгновенно её там и не требует.
Команда чтения выполняется не одновременно с записью в порт. А а позже (сколько это в тактах не скажу, так как пишу на СИ).
Я просто тоже довольно прикладной программист, немного занимавшийся раньше электроникой и решивший вспомнить молодость, помахать так сказать паяльником.
Реально на вышеприведённом эффекте я столкнулся когда делал опрос клавиатурной матрицы. Вроде бы с виду всё просто, ан нет.
Аватара пользователя
coder
Открыл глаза
Сообщения: 57
Зарегистрирован: Вт фев 06, 2007 14:09:10
Откуда: Россия.Пермь
Контактная информация:

Сообщение coder »

Я системшик :)
Как-то, лет 7 назад, писал графический 3D движок на АСМе :)
Так что с АСМом и графикой дело имел, а с контроллером, я думаю разберуть! А если вопросы будут, так для того и форум! :)
Оne

Сообщение Оne »

Для работы с МК хорошо помогает логический склад ума и опыт работы с цифровой логикой. Мы с товарищем пищем на C (CodeVision), писали одну и ту же прогу, то что он обычно пишет так:

Код: Выделить всё

PORTB.0=1;
PORTB.2=1;
PORTB.5=1;
PORTB.7=1;
У меня выглядит так:

Код: Выделить всё

operand|=0b10100101;
PORTB=oprand;

Хотя не всегда это и нужно. Вообщем написание программы, это тоже искусство :wink:
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

А если написать

Код: Выделить всё

РORTB |= 0b10100101;
 

ваще красота... :)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Чевой-то я не понимаю красоты...

Код: Выделить всё

operand |= что-то-там
PortB = operand

этот код изменяет operand путем логического ИЛИ с константой, а затем это все выводит в порт.

"Приятель" изменял биты порта с размазыванием по времени, не задействуя промежуточную переменную.

А

Код: Выделить всё

ProtB |= что-то-там 
- это сначала считывание PortB, потом логическое ИЛИ результата с константой, а потом вывод этого в порт обратно...

Три примера - ВСЕ ПРИНЦИПИАЛЬНО РАЗНЫЕ. Или никто на такие мелочи внимания не обращает? Или я чего-то не понимаю...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
coder
Открыл глаза
Сообщения: 57
Зарегистрирован: Вт фев 06, 2007 14:09:10
Откуда: Россия.Пермь
Контактная информация:

Сообщение coder »

Согласен с ARV, это совершенно разные куски кода...
Так и получается, думали одинаково, получили разные результаты!
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

А на всех вас взгляд, какая задача стояла перед человеком, написавшим эти куски кода? И в каком случае он ее не достиг?
Аватара пользователя
coder
Открыл глаза
Сообщения: 57
Зарегистрирован: Вт фев 06, 2007 14:09:10
Откуда: Россия.Пермь
Контактная информация:

Сообщение coder »

Продолжаем собирать "геймпад". Вопросик, как сделать клавиатуру?
16 клавиш, матрица 4х4. Если нажата одна клавиша, всё понятно. А как читать клавиатуру, чтоб опредилить все нажатые клавиши в данный момент?
Аватара пользователя
Abakt
Вечно гонимый
Сообщения: 568
Зарегистрирован: Ср янв 10, 2007 19:15:51

Сообщение Abakt »

ARV писал(а):
А

Код: Выделить всё

ProtB |= что-то-там 
- это сначала считывание PortB, потом логическое ИЛИ результата с константой, а потом вывод этого в порт обратно...


что-то-там - это выражение, т.е. может быть и константой а может быть переменной или результат вычисления их комбинации.
Последний раз редактировалось Abakt Пн фев 19, 2007 11:54:42, всего редактировалось 1 раз.
Аватара пользователя
Abakt
Вечно гонимый
Сообщения: 568
Зарегистрирован: Ср янв 10, 2007 19:15:51

Сообщение Abakt »

coder писал(а):Продолжаем собирать "геймпад". Вопросик, как сделать клавиатуру?
16 клавиш, матрица 4х4. Если нажата одна клавиша, всё понятно. А как читать клавиатуру, чтоб опредилить все нажатые клавиши в данный момент?


для этого вам нужно независимое подключение всех клавишь к выводам МК.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Независимое подключение всех 16 кнопок?! слишком расточительно. Матрица, как и хочет автор, это верное решение. Надо только, наверное, "строки" от "столбцов" матрицы отделить диодами, что ли...

А метод опроса элементарен: подаем единицу на 1-ю строку - смотрим, на какие столбцы она пришла (придет на те, кнопки которых замкнуты), потом подаем на 2-ю строку - и снова смотрим столбцы и т.д. В итоге получаем состояние всех кнопок. В момент подачи сигнала на какую-то строку остальные строки должны быть в Z-состоянии.

Это так, идея на скорую руку, наверное, можно и проще и лучше...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Abakt
Вечно гонимый
Сообщения: 568
Зарегистрирован: Ср янв 10, 2007 19:15:51

Сообщение Abakt »

а если 7 кнопок нажато ? а если 12 ?

вопрос был:

как читать клавиатуру, чтоб опредилить

ВСЕ нажатые клавиши в данный момент?


если клавиш 16 - то сколько может быть нажато в некий момент ?
Аватара пользователя
coder
Открыл глаза
Сообщения: 57
Зарегистрирован: Вт фев 06, 2007 14:09:10
Откуда: Россия.Пермь
Контактная информация:

Сообщение coder »

Каждую кнопку на отдельную ногу, эт действительно расточительно!
ARV дело говорит, у меня примерно тоже решение вырисовывалось в голове! Только получается, надо каждую кнопку диодом снабдить.
Можно на какой-нить логике контроллер клавы собрать (16 входов, 2 выхода) последовательный! :idea:
Может ещё какие идеи?
Аватара пользователя
Abakt
Вечно гонимый
Сообщения: 568
Зарегистрирован: Ср янв 10, 2007 19:15:51

Сообщение Abakt »

coder писал(а):Каждую кнопку на отдельную ногу, эт действительно расточительно!
ARV дело говорит, у меня примерно тоже решение вырисовывалось в голове!

Только получается, надо каждую кнопку диодом снабдить.


и как вы определите что нажато 5 кнопок ? или 12 ?
Yak
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Пн ноя 13, 2006 16:42:35
Откуда: подмосковье

Сообщение Yak »

16 клавиш, матрица 4х4. Если нажата одна клавиша, всё понятно. А как читать клавиатуру, чтоб опредилить все нажатые клавиши в данный момент?
У микрочипа есть апноут. На 1 ножке МК до 99 кажись кнопок. Смысл в том, что на каждую кнопку вешается резистор с возрастающим номиналом, к примеру 100 ом, 120 ом, 140 и т.д. Все эти хрени (кнопка и резюк) соединяются параллельно, точка соединения резисторов - на порт АЦП (c подтяжкой на землю) точка соединения кнопок - на VCC. И опрашиваем ацп, получившийся результат +-2 будет код нужной кнопки. можно нажимать вместе...

В момент подачи сигнала на какую-то строку остальные строки должны быть в Z-состоянии
Неа. В Z не советую - глюк будет. Только подтяжка к питанию. А активный уровень - "0". Уже дважды такие клавы делал.

не в тему: пишу сообщение, звонит курьер, типа халявные образцы принес, а домофон открыть не могу))))) - типа жильцы не пускают, думают разносчик листовок)))))) а я в офисе.... сказал хоть кому отдать)))))
Аватара пользователя
Abakt
Вечно гонимый
Сообщения: 568
Зарегистрирован: Ср янв 10, 2007 19:15:51

Сообщение Abakt »

ну и то хлеб.
Ответить

Вернуться в «Цифровая техника»