roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 13:21

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 16:21 
Не в сети
Аватара пользователя

Зарегистрирован: 28 янв 2008, 09:27
Сообщения: 78
Откуда: Россия
схема простая работает на "штуке" (см топик "наши достижения").
ATmega8 + L293D

прошиваю вот такую программу (WinAVR):
Код:
   #include <avr/io.h>
   #include <avr/delay.h>
   #define F_CPU 8000000UL  // 16 MHz
   
   void M_Front(void)
   {
      PORTD |= _BV(PD0);      // установить "1"
      PORTD |= _BV(PD1);      // установить "1"
      PORTD &=~_BV(PD2);      // установить "0"
      PORTD |= _BV(PD3);      // установить "1"
      PORTD &=~_BV(PD4);      // установить "0"
   }
   void M_Stop(void)
   {
      PORTD &= ~_BV(PD0);      // установить "0"
      PORTD &= ~_BV(PD1);      // установить "0"
      PORTD &= ~_BV(PD2);      // установить "0"
      PORTD &= ~_BV(PD3);      // установить "0"
      PORTD &= ~_BV(PD4);      // установить "0"
   }
   int main(void)              // начало основой программы
   {
   short i;
   DDRD = 0b00011111;            // все выводы порта D сконфигурировать как выходы+
 
    while (1) {
   if (PIND & (1<<5)){
              M_Front();
           for (i = 1; i < 8; i = i + 1)
           {
           _delay_ms(250);   // Ждем 0.25 сек.
           }
   
           M_Stop();  // установить "0" на всех линиях порта D
           for (i = 1; i < 16; i = i + 1)
           {
      _delay_ms(250);   // Ждем 0.25 сек.
           }
            }
}       // закрывающая скобка бесконечного цикла
}      // закрывающая скобка основной программы


беда в том, что при не подключенном PD5 двигалели вращаются.
т.е. (PIND & (1<<5)) возвращает True, хотя 100% ножка МК висит в воздухе.

_________________
Мои странички в интернете: http://groversuper.ucoz.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 19:23 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
так там не понятно что на ножке, вот если ее подтянуть к 0 или 1 резистором совсем по другому будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 19:27 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Grover писал(а):
100% ножка МК висит в воздухе.


А зачем она висит ? Не любишь определенности ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 20:12 
Не в сети
Аватара пользователя

Зарегистрирован: 28 янв 2008, 09:27
Сообщения: 78
Откуда: Россия
что означает слово "подтянуть" ?

_________________
Мои странички в интернете: http://groversuper.ucoz.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 20:15 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
http://www.avr123.nm.ru/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 20:19 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
соединить через резистор 10-100 ком с + или -
будет гарантированно + или -
можно воспользоватся внутренним резистором, есть там такой.
в курсе действительно подробно описан этот момент


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 21:22 
Не в сети
Аватара пользователя

Зарегистрирован: 28 янв 2008, 09:27
Сообщения: 78
Откуда: Россия
прошу меня простить :oops:

я сделал вывод: "Прочитал? Понял! - молодец, прочитай еще раз."

да, действительно, в avr123 есть ответ на мой вопрос.

_________________
Мои странички в интернете: http://groversuper.ucoz.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 21:30 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
а теперь буть добр напиши сюда
чтобы можно было новичкам посмотреть твою тему и найти решение
либо просто прочитать и узнать чтото новое


короче понял сам расскажи другому :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 21:58 
Не в сети
Аватара пользователя

Зарегистрирован: 28 янв 2008, 09:27
Сообщения: 78
Откуда: Россия
угу, как смогу :)

в программе:
Код:
...
...
DDRD = 0b00011111;       // пины с 0 по 4 выходы, а пины 5,6,7 - входы.
PORTD = 0b11100000;    // ВАЖНО: на пины 0 - 4 установил 0 (нет сигнала), а пины 5,6,7 установил 1, т.е. МК сама подаст логическую 1.
...
...
// Вместо if (PIND & (1<<5)), что означало если пин 5 содержит логическую 1, то ...
// пишем:
if (!(PIND & (1<<5))){ // означает: Если пин 5 НЕ содержит лог.1, то ...


на плате:
ножку МК, которая отвечает за ПИН 5 порта D (на atmega8 это №11), припаеваем к кнопке, кнопку с "другой стороны" припаеваем к резистору, а резистор на МИНУС !!!.

Что получилось:
получилось, что МК с программой реагирует не на наличие сигнала, а на его отсутствие.

какой в этом смысл:
как начал делать я : ножка через кнопку висит на ПЛЮС МК, а программа ждет пока кнопку нажмут и на кнопке появится ПЛЮС (лог.1)

именно тут и возникает трудность, если ножка ни к чему не присоединена, то это еще не значит, что на ней ни чего нет !!!.

И Я стал действовать от обратного: на ножке всегда ПЛЮС (лог.1) - это делает сама МК без пояльника - для этого и записываем в пин входа единицу, и если эту ножку "закоротить" на минус (коротить не надо - через резистор), то ток с пина убежит к МИНУСУ, а на ПИНЕ останется НОЛЬ.
И программу переделал так, что работает по отсутствии сигнала.

короче, по принципу от обратного.

во... правильно? я свободен? :roll:

_________________
Мои странички в интернете: http://groversuper.ucoz.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 22:21 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
не, ни фига не свободен. садись тройка.
Grover писал(а):
DDRD = 0b00011111; // пины с 0 по 4 выходы, а пины 5,6,7 - входы.PORTD = 0b11100000; // ВАЖНО: на пины 0 - 4 установил 0 (нет сигнала), а пины 5,6,7 установил 1, т.е. МК сама подаст логическую 1.

все правильно кроме последней фразы, хотя смысл рядом
Grover писал(а):
пины 5,6,7 установил 1, т.е. МК сама подаст логическую 1.

это называется включил подтягивающие резисторы
Port is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each
bit).
Вложение:
1.jpg
1.jpg [ 16.57 КиБ | Просмотров: 1733 ]

Grover писал(а):
если эту ножку "закоротить" на минус (коротить не надо - через резистор), то ток с пина убежит к МИНУСУ, а на ПИНЕ останется НОЛЬ.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 22:40 
Не в сети
Аватара пользователя

Зарегистрирован: 28 янв 2008, 09:27
Сообщения: 78
Откуда: Россия
так, а если ну вот очень надо реагировать на ПЛЮС ?

_________________
Мои странички в интернете: http://groversuper.ucoz.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 03 фев 2008, 22:48 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
а если хоть немножко подумать?
подсказка: все перевернуть с ног на голову


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 04 фев 2008, 09:26 
Не в сети
Аватара пользователя

Зарегистрирован: 28 янв 2008, 09:27
Сообщения: 78
Откуда: Россия
с ног на голову...
подтянуть МИНУС к пину, т.е. в программе в пин входа записываю 0 (Z состояние), на схеме подключаю ножку к МИНУСУ.
Кнопка будет соединять этот же пин с плюсом? сразу догадываюсь, что тут без сопративления на минус надо ставить...

?

_________________
Мои странички в интернете: http://groversuper.ucoz.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 04 фев 2008, 10:24 
Минусы вообще не подтягиваются.
Исправь обработку кнопки if (PIND & (1<<5)) и всё.


Вернуться к началу
  
 
 Заголовок сообщения: Re: порты не работают на вход :(
СообщениеДобавлено: 04 фев 2008, 14:59 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
$ilent писал(а):
Минусы вообще не подтягиваются.

почему нет? В МК переход 1-0-1 примерно по середине питания.
легко можно ножку через резистор на минус и кнопкой коммутировать на плюс. яб сделал без зазрений совести.
Grover писал(а):
подтянуть МИНУС к пину, т.е. в программе в пин входа записываю 0 (Z состояние),

получаем ножку ни к чему не подсоединенную - это не подтяжка.
подтяжка будет внешним резистором.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO