Мелкие вопросы по МК и ПЛИС.
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
DJ_Kiridza, Ваятеле тут можно посоветовать что-то конкретное. Под ваше описание подойдёт любая мега, главное чтоб у неё ног хватало и памяти. А АЦП, уарт, подтяжка и т.п. есть у всех.
- DJ_Kiridza
- Мучитель микросхем
- Сообщения: 458
- Зарегистрирован: Пн дек 13, 2010 13:01:59
- Откуда: Украина
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Про меги понятно, немного гуглом пробежался, я про аналоги среди PIC-ов например...
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
PIC-ам такая как у AVR производительность и арсенал периферии, в данном диапазоне цен, только снится.
- DJ_Kiridza
- Мучитель микросхем
- Сообщения: 458
- Зарегистрирован: Пн дек 13, 2010 13:01:59
- Откуда: Украина
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Ок, пасиб, тогда вопрос снимаю...
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Re: Мелкие вопросы по МК и ПЛИС.
AI_Disable писал(а):Дак я об этом и говорю. Фьюз SCOPT как рас существует для того, чтобы "повесить" эти кондёры, но "изнутри" контроллера, а не снаружи.
Спасибо, попробуем
Re: Мелкие вопросы по МК и ПЛИС.
Господа, мне снова требуется ваш совет. ATmega48
Нужен опрос пяти кнопок + программный антидребезг. Проблема в том, что делать задержки непозволительно - в основном цикле каждый такт в дефиците.
Есть такая идея: в прерывании таймера опрашиваем кнопки, если нажата одна, то увеличиваем состояние соответствующего ей регистра (придётся задействовать 5 регистров - думаю взять R10-R15). Когда значение в регистре достигнет определённого значения - выставляем флаг в еще одном регистре (как бы регистре состояния кнопок).
В основном цикле просто проверяем состояние флагов, т.е. не тратим лишние такты.
Смущает количество тактов уже внутри прерывания, хотя всё равно, выигрыш в скорости должен буть ощутимым, т.к. прерывание должно быть примерно 1/32 от тактовой (мне с него еще меандр надо снять на одну из ног)...
Вообще, как это правильно реализуется?
Нужен опрос пяти кнопок + программный антидребезг. Проблема в том, что делать задержки непозволительно - в основном цикле каждый такт в дефиците.
Есть такая идея: в прерывании таймера опрашиваем кнопки, если нажата одна, то увеличиваем состояние соответствующего ей регистра (придётся задействовать 5 регистров - думаю взять R10-R15). Когда значение в регистре достигнет определённого значения - выставляем флаг в еще одном регистре (как бы регистре состояния кнопок).
В основном цикле просто проверяем состояние флагов, т.е. не тратим лишние такты.
Смущает количество тактов уже внутри прерывания, хотя всё равно, выигрыш в скорости должен буть ощутимым, т.к. прерывание должно быть примерно 1/32 от тактовой (мне с него еще меандр надо снять на одну из ног)...
Вообще, как это правильно реализуется?
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Не находите, что лучше использовать таймер для реализации задержек? Плюс к тому: сколько длится основной цикл? Если он меньше 0.1с, то можно его использовать как задержку...
Re: Мелкие вопросы по МК и ПЛИС.
Есть две команды:
Какая из них переводит из двоичного в двоичнодесятичный, а какая и двоичнодесятичного в двоичный?
Код: Выделить всё
bin2bcd
bcd2binКакая из них переводит из двоичного в двоичнодесятичный, а какая и двоичнодесятичного в двоичный?
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Ну, следуя логике,
bin2bcd - из двоичного в двоичнодесятичный
bcd2bin - из двоичнодесятичного в двоичный

bin2bcd - из двоичного в двоичнодесятичный
bcd2bin - из двоичнодесятичного в двоичный
Re: Мелкие вопросы по МК и ПЛИС.
Спасибо.
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Re: Мелкие вопросы по МК и ПЛИС.
Не находите, что лучше использовать таймер для реализации задержек? Плюс к тому: сколько длится основной цикл? Если он меньше 0.1с, то можно его использовать как задержку...
Основной цикл чем меньше, тем лучше. Дело в том, что этот самый основной цикл будет не один, а несколько, в зависимости от режима работы.
Из этих самых режимов проблема только с одним: смысл его - пропустить через себя поток данных, т.е. тупо с трёх ног перекинуть состояние на другие три. Читаем биты, выставляем, зацикливаем. Но надо предусмотреть выход из этого режима - т.е. тот самый опрос кнопок.
Использовать таймер - вариант (благо их там три), но как? Так же в прерываниях?
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
ploop писал(а):Использовать таймер - вариант (благо их там три), но как? Так же в прерываниях?
Ну вариантов много, и каждый из них будет лучшим в том или ином контексте... Но, как минимум, могу предложить ничего не инкрементировать по сколько-то там раз, а использовать, например, CTC режим и записывать в OCR длинну необходимой паузы.
Т.е.: в месте, где надо проверять кнопку, проверяем её состояние; пишем значение в OCR; запускаем таймер; в прерывании, от этого таймера, снова смотрим состояние кнопки; если нажата устанавливаем флаг.
---
Блин, честно говоря не до конца понял ситуацию. Вы вообще не хотите ничего опрашивать в цикле? Даже флаги? Тогда, да, единственный вариант, засунуть всё в прерывание и установить его цикличность так, чтоб один цикл - достаточное время для антидребезга.
Re: Мелкие вопросы по МК и ПЛИС.
Т.е.: в месте, где надо проверять кнопку, проверяем её состояние; пишем значение в OCR; запускаем таймер; в прерывании, от этого таймера, снова смотрим состояние кнопки; если нажата устанавливаем флаг.
Это одну. А остальные?
Блин, честно говоря не до конца понял ситуацию. Вы вообще не хотите ничего опрашивать в цикле? Даже флаги? Тогда, да, единственный вариант, засунуть всё в прерывание и установить его цикличность так, чтоб один цикл - достаточное время для антидребезга.
Нет, флаги проверять как раз нормально. Всего несколько лишних тактов. А вот опросить пять кнопок - уже дофига выйдет (там одних условных переходов не оберёшься).
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
имхо, как раз-таки надо "трансляцию уровней" делать по прерываниям (хоть по таймеру, хоть по запросу от пинов), а опрос кнопок тупо и неспеша делать в главном цикле... я для себя сделал некую заготовку для работы с кнопками, и пользуюсь ею уже давно - практически ни разу не возникало проблем с тем, чтобы отказаться от программных задержек для подавления дребезга и программного же опроса кнопок...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
ploop писал(а):Это одну. А остальные?
Если нужно опрашивать пять кнопок, а не одну, то тут уж ничего не поделаешь.
ЗЫ: Я так понимаю, тут попахивает ассемблером, так что отхожу...
Re: Мелкие вопросы по МК и ПЛИС.
ЗЫ: Я так понимаю, тут попахивает ассемблером, так что отхожу...
Дык это.. воняет уже
Я на нём пока и пишу. Ладно, спасибо за помощь.
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
согласен с ARV. Давно сделал заготовку по антидребезгу, правда кнопок было не так много, максимум 3, при этом никаких проблем с задержками девайса в целом не наблюдалось (значительных задержек).
Вот примерный алгоритм опроса кнопок:
1) принимаем условие: дребезг контактов 50мс.
2) заводим на каждую кнопку одну переменную в памяти (ОЗУ) для счета циклов
обращаемся к ней командами lds и sts
3) заводим на каждую кнопку по 2 флага. первый флаг - флаг того, что был факт нажатия кнопки (либо помеха),
второй флаг - флаг необходимости выполнить действие
4) заводим таймер на прерывания каждые 50мс/100*=500мкс (100* для примера, имеем в виду, что макс значение байта 255,
так чтобы, если дребезг останется, можно было увеличить количество циклов)
5) см. блок схему опроса кнопки (ставляется в обработчик прерывания)

флаг факта нажатия - это и есть первый флаг.
действия "по нажатию" и "по отпусканию" кнопки использовать на выбор, второй флаг я использую здесь, если действие длинное. Далее в основном цикле опрашиваю флаг и выполняю действие. Если же действие типа "установить единичку на выводе ХХ, порта YY", то не заморачиваюсь со вторым флагом, а выполняю действие прямо здесь, в прерывании.
Вроде все объяснил, как надо. Есть еще вопросы?
Вот примерный алгоритм опроса кнопок:
1) принимаем условие: дребезг контактов 50мс.
2) заводим на каждую кнопку одну переменную в памяти (ОЗУ) для счета циклов
обращаемся к ней командами lds и sts
3) заводим на каждую кнопку по 2 флага. первый флаг - флаг того, что был факт нажатия кнопки (либо помеха),
второй флаг - флаг необходимости выполнить действие
4) заводим таймер на прерывания каждые 50мс/100*=500мкс (100* для примера, имеем в виду, что макс значение байта 255,
так чтобы, если дребезг останется, можно было увеличить количество циклов)
5) см. блок схему опроса кнопки (ставляется в обработчик прерывания)
флаг факта нажатия - это и есть первый флаг.
действия "по нажатию" и "по отпусканию" кнопки использовать на выбор, второй флаг я использую здесь, если действие длинное. Далее в основном цикле опрашиваю флаг и выполняю действие. Если же действие типа "установить единичку на выводе ХХ, порта YY", то не заморачиваюсь со вторым флагом, а выполняю действие прямо здесь, в прерывании.
Вроде все объяснил, как надо. Есть еще вопросы?
- Вложения
-
- опрос кнопки_res.jpg
- Блок схема опроса кнопки с антидребезгом
- (41.02 КБ) 889 скачиваний
Ставим плюсы: )
Re: Мелкие вопросы по МК и ПЛИС.
Спасибо, ibiza11
Примерно такой же алгоритм я и описал. Только собирался делать опрос не в прерывании, а по мере надобности.
Примерно такой же алгоритм я и описал. Только собирался делать опрос не в прерывании, а по мере надобности.
- DJ_Kiridza
- Мучитель микросхем
- Сообщения: 458
- Зарегистрирован: Пн дек 13, 2010 13:01:59
- Откуда: Украина
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Для Атмеги16-8AU, если работать от внутреннего генератора, максимальная частота 8, если убрать фузу деления на 8, так? на сколько это точные и честные 8? можно положится на эту частоту или если нужна болие-мение точность - то лучше внешний кварц?
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Re: Мелкие вопросы по МК и ПЛИС.
С завода этот фьюз включен, т.е. реальная частота - 1МГц. Если снять, то будет 8
А вот точность зависит от многих факторов - напряжение питания, температура, фаза луны... Но в принципе, смотря для чего. Если не нужны жесткие тайминги то вполне можно использовать без кварца.
А вот точность зависит от многих факторов - напряжение питания, температура, фаза луны... Но в принципе, смотря для чего. Если не нужны жесткие тайминги то вполне можно использовать без кварца.