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


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

> Описание: с лапок мк
lelick Post Id


Лейтенант


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



Если PD1 соединить с GND то по идее долно отрабатваться услове
if (!(PIND & (1<<PIND1)))
Так же пробовал подавать 5v+ на PD1, а 5V- к GND точно так же ни чего не просходит.
Обьясните в чем причина?

Делал по этой статье
http://myrobot.ru/stepbystep/r_firstbot2.php
 
 Top
digger Администратор Post Id



Администратор


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



Приведите Вашу программу.
 
 Top
lelick Post Id


Лейтенант


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



полностью как в статье

CODE:
#include <avr/io.h>
int main(void) // начало основной программы
{

DDRC = 0xff; // все выводы порта C сконфигурировать как выходы
DDRD = 0x00; // все выводы порта D сконфигурировать как входы


PORTD = 0xff; // установить "1" на всех выводах порта D,
// включаем подтягивающие резисторы

while (1) { // Бесконечный цикл

// ПРОВЕРЯЕМ СИГНАЛ НИЗКОГО УРОНЯ ОТ ФОТОДАТЧИКА

if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D
{
// ---------- вращаем моторы вперед ----------

PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
PORTC &= ~_BV(PC4); // установить "0" на линии 4 порта C

// --------------------------------------------------
}
else
{
// ---------- вращаем моторы назад ----------

PORTC &= ~_BV(PC1); // установить "0" на линии 1 порта C
PORTC |= _BV(PC2); // установить "1" на линии 2 порта C
PORTC &= ~_BV(PC3); // установить "0" на линии 3 порта C
PORTC |= _BV(PC4); // установить "1" на линии 4 порта C

// --------------------------------------------------
}


} // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы
 
 Top
redcat Post Id



Главнокомандующий


Сообщений всего: 387
Дата рег-ции: Янв. 2009  



а у тебя
DDRD = 0x00 ???????????
и
PIND = 0xFF ???????
(Добавление)
чтото я опоздал с ответом....
Котроллер-то работает вообще?
 
 Top
бот_м_16 Супермодератор Post Id



Супермодератор


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



Поставь вместо PIND1 просто 1 и всё типтоп
 
 Top
digger Администратор Post Id



Администратор


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



Попробуйте сначала отработать считывание сигнала применяя для контроля обычный светодиод.

В WinAVR (AVR GCC) одинаково уверенно можно применять следующие варианты записи условий для проверки наличия низкого уровня на входе.

CODE:

if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D

if (!(PIND & (1<<PD1))) // проверить "0" на линии 1 порта D

if (!(PIND & (1<<1))) // проверить "0" на линии 1 порта D

if (!(PIND & _BV(PIND1))) // проверить "0" на линии 1 порта D

if (!(PIND & _BV(PD1))) // проверить "0" на линии 1 порта D

if (!(PIND & _BV(1))) // проверить "0" на линии 1 порта D

if (!(PIND & 0b00000010)) // проверить "0" на линии 1 порта D

if (!(PIND & 0b10)) // проверить "0" на линии 1 порта D

if (!(PIND & 0x02)) // проверить "0" на линии 1 порта D

 
 Top
lelick Post Id


Лейтенант


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



redcat пишет:
а у тебя
DDRD = 0x00 ???????????
и
PIND = 0xFF ???????
(Добавление)
чтото я опоздал с ответом....
Котроллер-то работает вообще?
Дык работать то работает на PORTС то сигнал подает

digger пишет:
Попробуйте сначала отработать считывание сигнала применяя для контроля обычный светодиод.
А какая разница? светодиод или двигатель?
 
 Top
redcat Post Id



Главнокомандующий


Сообщений всего: 387
Дата рег-ции: Янв. 2009  



Я кстати намедни пожёг один бит порта D светодиодом!!!! Резистор маленький был по сопротивлению, а диод ентот грёбаный хавать много хотел! Теперь при установке 1 на этот бит, контроллер виснет на глушняк!!!
 
 Top
бот_м_16 Супермодератор Post Id



Супермодератор


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



ВЫвод перед тем как паять читать DS на всё то что будеш паять!
 
 Top
Ulman Post Id



Рядовой


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



А как проверить единицу?
 
 Top
redcat Post Id



Главнокомандующий


Сообщений всего: 387
Дата рег-ции: Янв. 2009  



if (!(PIND & _BV(PD1))) // проверить "0" на линии 1 порта D

if ((PIND & _BV(PD1))) // проверить "1" на линии 1 порта D
 
 Top
Страниц (1): [1]
« Программирование микроконтроллеров »


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





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