роботы робототехника микроконтроллеры


 Страниц (3): [1] 2 3 »   

> Без описания
Duha Post Id


Рядовой


Сообщений всего: 3
Дата рег-ции: Февр. 2014  



Здравствуйте, а не могли бы Вы мне помочь с исходником пытаясь сделать реальный проект для самообучения столкнулся с проблемой, при нажатии кнопки на вход поступает 0, а с выхода выходит 1 и запускает двигатель, но при отпускании кнопки происходит какая то ерунда на всех выходах как гирлянды. Почитав информацию понял что необходимо сделать что-то с постоянным опросом входа. Помогите разобраться!
Заранее спасибо!

вот кусочек кода в котором и скорее всего ошибка:
while (1)
{
if(PINB.0==1)//ЕЗДА ВПЕРЕД ЕСЛИ НА Б0=1
{
PORTC.0=1; // ЕДИМ ВПЕРЕД (ПЕРЕДНИЙ ПРИВОД)
PORTC.2=1;
PORTC.1=0;
PORTC.3=0;

PORTD.0=1; // ЕДИМ ВПЕРЕД (ЗАДНИЙ ПРИВОД)
PORTD.2=1;
PORTD.1=0;
PORTD.3=0;
}
else;
{
PORTC.0=0; // СТОИМ НА МЕСТЕ
PORTC.2=0;
PORTC.1=0;
PORTC.3=0;

PORTD.0=0; // СТОИМ НА МЕСТЕ
PORTD.2=0;
PORTD.1=0;
PORTD.3=0;
}

if(PINB.1==1)//ЕЗДА НАЗАД ЕСЛИ НА Б1=1
{
PORTC.0=0; // ЕДИМ НАЗАД (ПЕРЕДНИЙ ПРИВОД)
...

PORTD.0=0; // ЕДИМ НАЗАД (ЗАДНИЙ ПРИВОД)
...
}
else;
{
PORTC.0=0; // СТОИМ НА МЕСТЕ
...

PORTD.0=0; // СТОИМ НА МЕСТЕ
...
}


фото схемы подключение из ПРОТЕУСА:

а это осциллограмма :

(Отредактировано автором: 13 Февраля, 2014 - 15:30:54)

 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



Duha пишет:
но при отпускании кнопки происходит какая то ерунда на всех выходах как гирлянды

Если подтяжки нет, то гирлянда будет точно.
Включите внутреннюю подтяжку для входов работающих на кнопки..
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Уберите ; после else
 
 Top
Duha Post Id


Рядовой


Сообщений всего: 3
Дата рег-ции: Февр. 2014  



исправил, дурацкая ошибка, но она не помогла.
привязка порта В делает еще хуже на выходах, гирлянда даже без нажатия на кнопку, а без привязки гирлянда но только при нажатии на кнопку и теми выходами которые указани в if.

Может тут проблема не в дребезге контактов, а?
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Если кнопки при нажатии соединяют ножки МК с VCC, то на этих ножках должны быть pull-down резисторы. Они прижимают ножки МК к GND пока не нажата кнопка и тем самым обеспечивают на ножках стабильный логический 0.

Если использовать внутренние pull-up резисторы МК, то нужно чтобы при нажатии кнопки соединяли ножки МК с GND.

И для борьбы с дребезгом задержку в 50 ms добавить не помешает.

(Отредактировано автором: 13 Февраля, 2014 - 23:24:34)

 
 Top
n1k3 Post Id


Лейтенант


Сообщений всего: 21
Дата рег-ции: Февр. 2014  



Добрый день!

А подскажите и мне с моим первым кодом для AVR. Конкретно для mega16.
Пытаюсь зажечь 2х разрядный семисегментный индикатор. Конкретно для начала хочу вывести цифры скажем от нуля до 50ти. Код такой: http://pastebin.com/A4R2HAMW

Для одного разряда испытал и массив numbers правильный и подключение ножек индикатора к порту B всё работает, цифры от 0 до 9 смог вывести без проблем. Как только решил ввести второй разряд ввел деление по модулю и остаток в программу, добавил два транзистора на порт А для поочередного зажигания первого/второго разряда - индикатор начал выводить какую то ерунду.. при отладке заметил что в переменные tens и nums с каждой итерацией цикла for в функции IndicatorOn лезут какие то странные цифры. При этом при первом проходе цикла цифры в переменных те что должны быть, при втором уже меняются на какие то невероятные... откуда они там берутся то? Или где в логике программы ошибка?
 
 Top
elmot Post Id



Гуру


Сообщений всего: 1141
Дата рег-ции: Дек. 2010  



Начнем с того, что numbers надо объявить вне функции и как const
В текущем варианте этот массив набивается в стек при каждом вызове функции.
Warnings от компилятора есть?
 
 Top
n1k3 Post Id


Лейтенант


Сообщений всего: 21
Дата рег-ции: Февр. 2014  



elmot пишет:
Начнем с того, что numbers надо объявить вне функции и как const
В текущем варианте этот массив набивается в стек при каждом вызове функции.
Warnings от компилятора есть?


Да, были! Как раз на него и был warning, вроде бы ругался на то, что он типа char, не обращал на это внимание.. дома посмотрю точнее, вынесу массив. Спасибо за подсказку.
 
 Top
elmot Post Id



Гуру


Сообщений всего: 1141
Дата рег-ции: Дек. 2010  



На Сшные ворнинги _нельзя_ не обращать внимания. Дьявол именно тамУлыбка
 
 Top
n1k3 Post Id


Лейтенант


Сообщений всего: 21
Дата рег-ции: Февр. 2014  



Вобщем сделал!
Ворнинг и правда исчез. Однако глюк остался. Моделирую ситуацию в протеусе и видимо глюк именно в нем.. Убрал подключение к ножке первого разряда индикатора, разряд не загорается, НО. Не смотря на то что сигнал не подается на базу транзистора ВТОРОГО разряда - второй разряд ВСЁ РАВНО загорается и показывает цифру предназначенную для первого разряда!

Это глюк ISIS ? Или транзисторы надо какие то другие.. тут поставил BC547.

PS скриншоты прилагаю. В первом МК выводит единицу на порт PA1, который никуда не подключен(по задумке должен быть подключен к первому разряду), на сегменты подаются сигналы для отображения цифры 0(предназначена соответственно для первого разряда), НО этот ноль всё равно загорается на втором разряде!
На втором скриншоте всё правильно - цифра 1 загорается. По задумке это шаг где должно гореть два разряда и показывать 01





(Отредактировано автором: 14 Февраля, 2014 - 22:41:39)

 
 Top
elmot Post Id



Гуру


Сообщений всего: 1141
Дата рег-ции: Дек. 2010  



ТС собирается лишиться толи МК, толи своего индикатора. Где балластные резисторы?

Ну насколько я вижу, Q1 постоянно открыт. А вот почему - разбирайтесь.
(Добавление)
Возможно R1 великоват, но я не электронщик, точно не подскажу.
 
 Top
morokoriss Post Id



Генералиссимус


Сообщений всего: 697
Дата рег-ции: Нояб. 2011  



Судя по схеме, первый разряд никогда гореть не будет. Транзистор только на второй разряд работает. Надо 4 транзистора на 4 разряда.
 
 Top
morokoriss Post Id



Генералиссимус


Сообщений всего: 697
Дата рег-ции: Нояб. 2011  



Вот если сделать так, то только первый будет работать. Смысл понятен?
(Добавление)
Это же четырёхразрядный семисегментный индикатор с ОБЩИМ КАТОДОМ! Кто землю подключать будет к сегменту?
Прикреплено изображение
1B698EBF-B42F-95AC-8BAE-7E65F9DAE8F7.png

 
 Top
elmot Post Id



Гуру


Сообщений всего: 1141
Дата рег-ции: Дек. 2010  



Выше по тексту было - ТС спецом второй катод отключил. Вот транзистор-то почему всегда открыт?
 
 Top
Duha Post Id


Рядовой


Сообщений всего: 3
Дата рег-ции: Февр. 2014  



Возможно ли сделать кнопку которая работает не на спад или всплеск а от постоянного сигнала, тоесть есть подали ноль на вход на выходе сигнал есть, отпустили кнопку, пропал.
 
 Top
Страниц (3): [1] 2 3 »
« С чего начать? »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru