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


 Страниц (17): В начало « ... 9 10 11 12 13 14 [15] 16 17 »   

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



Маршал


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



nest
:) да asm ("nop"::); помогло.
Только это не решение. Теперь такой код:
CODE:

// ехать вперед
/ ехать вперед
PORTC |= 0b00100100; // на PINC2 и PINC5 подаем высокий уровень сигнала - 5В
PORTC &= ~0b00011000; // на PINC3 и PINC4 подаем низкий уровень сигнала - 0В
while((PIND & 0b00000100) != 0b100)
{ // ожидание сигнала логической 1
asm ("nop"::); // пустая операция
}
PORTC &= ~0b00111100;
//_delay_ms(1000);
// ехать назад
PORTC |= 0b00011000; // на PINC3 и PINC4 подаем высокий уровень сигнала - 5В
PORTC &= ~0b00100100; // на PINC2 и PINC5 подаем низкий уровень сигнала - 0В
while((PIND & 0b00000100) == 0b100)
{ // ожидание сигнала логического 0
asm ("nop"::); // пустая операция
}
PORTC &= ~0b00111100; // стоп - на PINC2-5 подаем низкий уровень
while(1) // вечный цикл
{
PORTC |= 0b00000010; // высокий уровень на PC1 - зажечь светодиод
_delay_ms(1000); // ожидание 1с
PORTC &= ~0b00000010; // низкий уровень на PC1 - потушить светодиод
_delay_ms(1000); // ожидание 1с
}

В мк сразу проскакивает до вечного цикла. Если убрать строчку перед вечным циклом
PORTC &= ~0b00111100; // стоп - на PINC2-5 подаем низкий уровень
то рабоает точно по коду: едет вперед, после подачи высокого уровня на PD2 едет назад и после подачи низкого уровня на PD2 продолжает ехать и мигает светодиод.
Оптимизация отключена. Также пробовал все уровни оптимизации в WinAVR - результат один.(в некоторых случаях оптимизация в режиме s = optimize for size меняет поведение МК, только правильным оно не стает)
 
 Top
mctim Post Id



Маршал


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



Я вот что заметил: если двигатели отключить от МК, то этот код выполняется правильно.
Если схему от двигателей держать на растоянии 15 см - тоже правильно работает. Или если держать палец возле(!) МК. Получается это двигатели вызывают перепады и МК глючит?
Тут дело в том что я поставил по 3 конденсатора на двигатели, на стабилизатор питания и возле МК тоже как описано здесь http://myrobot.ru/articles/mc_stab.php .
Что же тут сделать еще? Замешательство
 
 Top
Белый Волк Супермодератор Post Id



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


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



mctim
Микроконтроллер ловит электромагнитные помехи.
Что у Вас находится на PD2?
 
 Top
nest Администратор Post Id



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


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



mctim, запитайте драйвер двигателя от батареи, а МК - через стабилизатор.
 
 Top
mctim Post Id



Маршал


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



Белый Волк, nest
Вот такая схема у меня. Улыбка

(Добавление)
nest
nest пишет:
mctim, запитайте драйвер двигателя от батареи, а МК - через стабилизатор.

у меня МК через стабилизатор а драйвер напрямую от источника. Источник - 4 АА.
Двигатели - обычные моторчики от игрушки.
 
 Top
nest Администратор Post Id



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


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



С6, С4, С5 - по сколько ?
(Добавление)
mctim пишет:
Получается это двигатели вызывают перепады и МК глючит?

покажите плату.
возможно некрасиво развели питание ...
 
 Top
mctim Post Id



Маршал


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



nest пишет:
С6, С4, С5 - по сколько ?

С6 - 0,1 mF
C4, C5 - 0,047 mF
там внизу схемы написано Подмигивающий
nest пишет:
покажите плату. возможно некрасиво развели питание ...

Плата действительно некрасивая Жуть

 
 Top
nest Администратор Post Id



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


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



мдэ :)

поставьте кондёр 10 мкФ на пятивольтовое питание! : ))))
 
 Top
mctim Post Id



Маршал


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



nest .
В смысле С10 заменить с 0,1 mF на 10 mF?
 
 Top
nest Администратор Post Id



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


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



параллельно к С10 :)

золотое правило:
на каждый корпус микросхемы - 0,1 или 0,01 мкф блокировочный "кондёр" возле каждого корпуса, возможно ближе к ножкам питания.
плюс "электролит" минимум 5-10 мкФ на каждые 5-10 корпусов.

С6, С7 я бы убрал.
 
 Top
mctim Post Id



Маршал


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



Добавил 10 mF - не помогло.
Снял С6, С7 - не помогло.
Грустный
 
 Top
nest Администратор Post Id



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


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



подпаяйте мотор прямо к ногам L293
подайтне +5в на МК прямо с ноги стабилизатора
 
 Top
mctim Post Id



Маршал


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



двигатель подпаял - не помогло.
питание подал прямо - не помогло.
хоть в клетку фарадея суй!
Грустный
 
 Top
nest Администратор Post Id



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


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



оба провода к моторам пропустить через катушку, последовательно.
C1 - пару тысяч пФ.
Прикреплено изображение
Image4.png

 
 Top
mctim Post Id



Маршал


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



nest, в этом определенно есть смысл. Как лучше возле двигателя или можно на плате разместить?
(Добавление)
вот еще что: какая тут зависимость от количества витков и толщины провода?
 
 Top
Страниц (17): В начало « ... 9 10 11 12 13 14 [15] 16 17 »
« Программирование микроконтроллеров »


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





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