Страница 350 из 628
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт авг 21, 2012 10:06:37
zero648
Я, конечно, слабо представляю принцип опроса энкодера, с ними не приходилось пока работать, но может попробовать использовать АЦП, поставить делитель напряжения и распихать энкодеры между сопротивлениями?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт авг 21, 2012 10:09:55
Gudd-Head
Хм... использовать по аналогии резистивный сигнал:
http://radiokot.ru/circuit/digital/automat/40/ ?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт авг 21, 2012 12:26:45
zero648
Да, именно это я и подразумевал.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт авг 21, 2012 13:07:42
ploop
Хехе, интересная идея!
Хорошо подойдёт, если надо использовать готовый ограниченный канал связи, например 3 провода.
А мне пока таких выкрутасов не надо. Да и АЦП все заняты будут наверное.
Если нет стандартных решений, поступлю самым простым способом: возьму корпус пожирнее. благо делаю на STM32. Хотел 48-ногий, придётся, видимо, 64х-ногий брать. Хотя 100-нигие почему-то дешевле мне попадались

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт авг 21, 2012 13:47:46
Gudd-Head
Можно ещё один контр чисто за энкодерами следить.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт авг 21, 2012 22:17:09
SmarTrunk
По алгоритмам опроса энкодера (механического) как-то все тухло, в обучалках. Обычно дается гнилой алгоритм, дающий 4 импульса на один "щелчок" энкодера, с сомнительной защитой от дребезга. А дребезг есть, в механических энкодерах, порядка 5мс (по паспорту), но бывает и хуже, и еще хуже может стать по мере износа.
Когда мне было нужно, пришлось смотреть осциллограмму, придумывать свой алгоритм, с защитой от дребезга, и самому писать программу. Работает отлично. Делал опрос с частотой 1 кГц (2кГц если предполагается крутить совсем быстро). С дребезгом дело в том, что при быстром вращении невозможно избавиться от дребезга просто задержкой, как в случае кнопок.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт авг 21, 2012 23:22:30
ibiza11
SmarTrunk писал(а):Когда мне было нужно, пришлось смотреть осциллограмму, придумывать свой алгоритм, с защитой от дребезга, и самому писать программу. Работает отлично. Делал опрос с частотой 1 кГц (2кГц если предполагается крутить совсем быстро). С дребезгом дело в том, что при быстром вращении невозможно избавиться от дребезга просто задержкой, как в случае кнопок.
похвастались и все??

а показать?

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 03:57:05
КРАМ
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 06:42:56
ploop
Да у меня как-бы нет проблем с опросом. Просто жадный я, ног хотел сэкономить

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 07:39:21
КРАМ
Это я не Вам,
ploop, это я про это:
SmarTrunk писал(а):По алгоритмам опроса энкодера (механического) как-то все тухло, в обучалках. Обычно дается гнилой алгоритм...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 11:18:44
SmarTrunk
ibiza11
Попробую вечером выложить скан алгоритма.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 11:42:27
Леонид Иванович
Спойлер
Код: Выделить всё
//----------------------------------------------------------------------------
//Модуль поддержки энкодера
//Энкодер подключается к портам ENC_F1 (фаза 1) и ENC_F2 (фаза 2).
//Для подавления дребезга используется анализ двух последовательных
//состояний. Это позволяет обойтись без временных задержек.
//Функция Encoder_Init() должна вызываться один раз в начале программы.
//Функция Encoder_Exe() должна вызываться в основном цикле.
//При повороте энкодера на шаг вправо или влево вызываются функции
//To_Do_Step_Up() и To_Do_Step_Dn() соответственно.
//----------------------------------------------------------------------------
#include "Main.h"
#include "Encoder.h"
//----------------------------- Константы: -----------------------------------
#define ENC_F1 (1 << PC0) //фаза энкодера F2
#define ENC_F2 (1 << PC1) //фаза энкодера F1
#define Pin_ENC_F1 (PINC & ENC_F1)
#define Pin_ENC_F2 (PINC & ENC_F2)
enum { State0, StateA, StateB, StateAB }; //состояния энкодера
//----------------------------- Переменные: ----------------------------------
static char EncPrev; //предыдущее состояние энкодера
static char EncPrevPrev; //пред-предыдущее состояние энкодера
//----------------------- Инициализация энкодера: ----------------------------
void Encoder_Init(void)
{
DDRC &= ~(ENC_F1 | ENC_F2); //настройка портов на ввод
PORTC |= ENC_F1 | ENC_F2; //включение подтягивающих резисторов
EncPrev = State0; //инициализация предыдущего состояния
EncPrevPrev = State0; //инициализация пред-предыдущего состояния
}
//------------------------- Обработка энкодера: ------------------------------
void Encoder_Exe(void)
{
char EncCur = 0;
if(!Pin_ENC_F1) EncCur = StateA; //опрос фазы 1 энкодера
if(!Pin_ENC_F2) EncCur |= StateB; //опрос фазы 2 энкодера
if(EncCur != EncPrev) //если состояние изменилось,
{
if(EncPrev == StateAB && //если предыдущее состояние StateAB
EncCur != EncPrevPrev ) //и текущее и пред-предыдущее не равны,
{
if(EncCur == StateB) //если текущее состояние StateB,
To_Do_Step_Up(); //шаг вверх
else //иначе
To_Do_Step_Dn(); //шаг вниз
}
EncPrevPrev = EncPrev; //сохранение пред-предыдущего состояния
EncPrev = EncCur; //сохранение предыдущего состояния
}
}
//----------------------------------------------------------------------------
Код спрятал в спойлер
Gudd-Head
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 14:00:48
Prosperous
Здравствуйте! Столкнулся вот с такой проблемой. Есть у меня программатор JTAGICE mkII. Так вот. Написал программу, зашил flash и eeprom контроллера. Потом с помощью этого программатора и AVRstudio4 решил ее отладить по шагам. Подключил, нажал билд анд рун. прога прокомпилировалась. выскочил вопрос хочу ли я перепрошить eeprom (в коде присутствует конструкция uchar eePrg[65] EEMEM = {} ) и внезависимости от ответа лампа программатора начинает быстро мигать и нечего больше не происходит. ждал долго, полчаса где-то. В чем косяк? Спасибо
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 14:04:27
Gudd-Head
Prosperous писал(а):Есть у меня программатор JTAGICE mkII.
Это не программатор, это полноценный отладчик.
Prosperous писал(а):лампа программатора начинает быстро мигать и ничего больше не происходит.
Так а что должно происходить? Точки останова стоят где-нибудь в проге?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 17:30:07
Prosperous
ну мне казалось, что там должна появиться такая желтая стрелочка, как при отладке на встроенном в студию симуляторе, нет?
Надо ставить точки останова обязательно? если это так, ну тогда я балбес

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 18:33:59
vitalik_1984
Это нужно поместить в частые вопросы, своей головой то подумать сложно?Как можно увидеть стрелку на скорости 1МГц ?Я уж не говорю про более высокие частоты.
Конечно нужно делать остановы.Только так скорость вашего восприятия совпадает со скоростью программы.
Так же если все время на стрелку смотреть можно всю жизнь просидеть и не отловить всех жуков.Чтобы не смотреть там где вам не нужно контроллер работает в обычном режиме.
Можно так же запустить и нажать на паузу. вроде при этом должно остановиться в том месте, где это нажатие застало программу.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 18:48:26
Prosperous
своей головой подумать не сложно, если на этом собаку съел. Спасибо за ответ )
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 18:54:05
vitalik_1984
Никаких собак я не ел

и кошек люблю

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 21:14:20
mr.boroda
возникла необходимость у atmega8 использовать первую ножку PC6/reset в качестве входа(кнопку повесить).
Как эту задумку сделать? Там фьюзы по моему нужно менять.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср авг 22, 2012 22:42:08
nibiluk
Ага, менять нужно, и при этом больше последовательным программатором не прошьете, если доктора нет. Так что убедитесь что прошивка рабочая, залейте её, а потом фьюзы меняйте.