Страница 3 из 3
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 00:37:25
Ser60
Изнутри, если интересно, сфоткаю как-нибудь когда в 'девайс' полезу. А пока вот (генератор сигналов):
Спойлер

Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 00:38:57
Pavel_1978
Да я Вас прекрасно понял что лично Вы используете такие энкодеры, но речь идет о промышленной аппаратуре.
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 00:42:32
Ser60
Извините, я Вас с самого начала неверно понял. Про промышленную аппаратуру ничего сказать не могу.
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 09:12:07
cargo29
нет тут обычный механический, кстати попробовал поставил в цикл добавлять звук крутило не останавливается так что можно и так сделать но лучше перестраховатся транзистор поставить и диоды на выводы мк,
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 09:24:39
Ser60
Поставьте просто пару резисторов как я советовал выше и это решит проблему замыканиа ног МК на землю или + через контакты энкодера.
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 09:53:54
cargo29
можно и так, еще вопрос по этой же теме.
функция
Код: Выделить всё
void com_to_sab_vol(char data)
{
DDRD |= (1<<DDD3)|(1<<DDD4); //
if (data == VOLUME_P) // добавляем звук
{
delay_ms(100);
PORTD &=~ (1<<PORTD4)|(1<<PORTD3); // 0b00000000
delay_ms(50);
PORTD |= (1<<PORTD4); // 0b00000010
delay_ms(50);
PORTD |= (1<<PORTD3); // 0b00000011
delay_ms(50);
PORTD &=~ (1<<PORTD4); // 0b00000001
delay_ms(50);
}
if (data == VOLUME_M) // убавляем звук
{
PORTD &=~ (1<<PORTD4)|(1<<PORTD3); // 0b00000000
delay_ms(50);
PORTD |= (1<<PORTD3); // 0b00000010
delay_ms(50);
PORTD |= (1<<PORTD4); // 0b00000011
delay_ms(50);
PORTD &=~ (1<<PORTD3); // 0b00000001
delay_ms(50);
}
delay_ms(100);
DDRD &=~ (1<<DDD3)|(1<<DDD4); //
}
///////////////////////////////////////////////////////////////////////////////
VOLUME_P = 8
VOLUME_M = 7
когда отправляю 7 убавляет на один бывает иногда на 2 раза а когда, отправляю через usar команды, 8 команда добавить звук то оно до максимума добавляется как будто не очищается в чем может быть проблема?
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 09:57:42
cargo29
может что то есть в прерывании
Код: Выделить всё
/////////////////////////////////////////////////////////////////////////////// прерывание для считывания показаний с саба - звука
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
NewState=PIND & 0b00011000;
if(NewState!=OldState)
{
switch(OldState)
{
case 8: //01 2
{
if(NewState == 24) upState++;
if(NewState == 0) downState++;
break;
}
case 0: //00 0
{
if(NewState == 8) upState++;
if(NewState == 16) downState++;
break;
}
case 16: //01 1
{
if(NewState == 0) upState++;
if(NewState == 24) downState++;
break;
}
case 24: //11 3
{
if(NewState == 16) upState++;
if(NewState == 8) downState++;
break;
}
}
OldState=NewState;
}
TCNT1H=0x00;
TCNT1L=0x00;
}
///////////////////////////////////////////////////////////////////////////////
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 10:30:19
cargo29
пересмотрел не могу найти ошибку
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 11:43:45
cargo29
помогите найти ошибку
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 11:59:47
cargo29
проект
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 12:02:06
cargo29
в студио не могу отладку сделать
ругается разбил проект на файлы и некоторые библиотеки не знает
Спойлер
Error 2 The "Message" task was not found. Check the following: 1.) The name of the task in the project file is the same as the name of the task class. 2.) The task class is "public" and implements the Microsoft.Build.Framework.ITask interface. 3.) The task is correctly declared with <UsingTask> in the project file, or in the *.tasks files located in the "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" directory. C:\Program Files\Atmel\Atmel Studio 6.0\Vs\FakeObjProjects.targets 5 5 ObjProject2
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 19:28:51
Ser60
В функции com_to_sab_vol() когда переключаете PORTD на вывод вначале, неясно содержимое порта D. В сочетании с состоянием кнопок энкодера это может сформировать нежелательную ступеньку. Аналогично в конце функции, когда переключаете PORTD на ввод, контакты энкодера начинают влиять на процесс и это может тоже сформировать ступеньку. Я думаю в этой функции следует сначала проверить состояние кнопок энкодера и начинать формировать последовательность импульсов начиная и заканчивая этим состоянием.
Re: мега8 и энкодер
Добавлено: Сб июн 14, 2014 19:42:35
cargo29
решил вопрос да вначале нужно было установить порты на 1 оба