Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » Вопросы чайника

Страниц (17): « 1 [2] 3 4 5 6 7 8 9 ... » В конец
 

16. zatmenie - 10 Января, 2010 - 21:25:02 - перейти к сообщению
вот не могу догнать как подключать и куда.
lamakazzz пишет:
Можете обратить внимание на
http://window.edu.ru/window_cata...68&p_page=13 - тут в виде html, а PDF версию смотрите выше, либо http://window.edu.ru/window_cata...file=stup081.pdf

Спасибо за книжку
17. SNEGOK23 - 12 Января, 2010 - 06:47:37 - перейти к сообщению
zatmenie пишет:
у avr 3 положения: вход, выход и отключено

а что, ноги мк еще и отключаются? 0_о
18. zatmenie - 12 Января, 2010 - 18:54:55 - перейти к сообщению
SNEGOK23 пишет:
zatmenie пишет:
у avr 3 положения: вход, выход и отключено
а что, ноги мк еще и отключаются? 0_о

Незнаю, я читал в книге
19. zatmenie - 12 Января, 2010 - 19:14:48 - перейти к сообщению
Вот как я подключил. по другому не знаю.
20. nest - 13 Января, 2010 - 01:29:05 - перейти к сообщению
SNEGOK23 пишет:
а что, ноги мк еще и отключаются?
если их "выставить" в режиме входа, то они приобретают так называемое "высокоимпендансное состояние" или "Z-состояние". Т.е. состояние высокого сопротивления. Это "почти" то же самое, что и отключение.
Кстати, многие микросхемы "твоёрдой" логики (логические микросхемы) имеют управляющий вход, переводящий определённые выводы (обычно ножки выходов) в Z-состояние.

zatmenie, что то я погорячился с диодной логикой. немного не складывается схема.
Вам нужно из трёх состояний ножки выделить три сигнала:
Для этого нужно подать с ноги МК на цепь из двух резисторов (как на картиинке тут внизу).
и оттуда же - как у вас подключена L293 (к IN1 - напрямую, IN2 - через инвертор). Этим вы получите разное направление вращения. Логические состояния спокойно "перетянут" резисторы (они должны быть одинаковые!).
Кроме того туда же нужно подключить двухпороговый компаратор, схематично обозначен как "У1" (на эту роль по всем параметрам подходит LM293 или LM2903), а его выход подключить к выводу ENABLE драйвера L293.
Когда на ножке МК "1" или "0", компаратор будет вы давать на ENABLE лог. единицу.
А когда нога окажется "повешенной в воздухе" (отключена), там установится уровень средний, между "0" и "1". В этом случае на выходе компаратора должен появиться логич. "0", который выключит драйвер двигателя и мотор остановится.
Про двухпороговый компаратор хорошо описано тут: "Основы схемотехники. Анало говые компараторы" Рисунок 7.
21. zatmenie - 13 Января, 2010 - 18:12:56 - перейти к сообщению
Тааак теперь вопросы по программе. Теперь как программно сделать из выхода вход? Нужно так: если кнопка 1 и кнопка 2 нажаты, тогда PORTB.0 становится входом и ножка "повисает в воздухе". Если кнопка 1 нажата, то PRTB.0 становится как 1. Если кнопка 2 нажата то PORTB.0 становится как 0.
Вот программа которая "получилась". Как и следовало ожидать она не работает потому что не доделана и потому что я чайник!
#include <tiny2313.h>

#include <delay.h>

#define OUT PORTB
#define motor_f 0
#define motor_b 0
#define motor_s 0

#define IN PIND
#define but_1 0
#define but_2 1

enum {F, B, S};

void go(unsigned char direction){

switch (direction) {
case F:
OUT.motor_f=1;
break;

case B:
OUT.motor_b=0;
break;

}
}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=0
PORTB=0x00;
DDRB=0x01;

// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

while (1)
{
if((but_1==0)&&(but_2==0)) //Если but_1 и but_2 равно 0, тогда PORTB.0 делаем как вход ???????????????
if(but_1==1)go(F); //Если but_1 равен 1, тогда PORTB.0 равен 1
if(but_2==1)go(B); //Если but_2 равен 1, тогда PORTB.0 равен 0

};
}
22. nest - 13 Января, 2010 - 22:39:19 - перейти к сообщению
zatmenie пишет:
как программно сделать из выхода вход?
почитайте в даташите (или ещё где) про ругистры DDRA, DDRB...
23. zatmenie - 14 Января, 2010 - 00:40:34 - перейти к сообщению
Кто может посоветовать мне самую хорошую книгу по AVR? Для начинающего. Что бы было все подробно и понятно изложено, с примерами на Си.

И другой вопрос. Как выставить режим совместимости 90s2313 с tiny2313?
24. zatmenie - 14 Января, 2010 - 19:49:13 - перейти к сообщению
nest пишет:
почитайте в даташите (или ещё где) про ругистры DDRA, DDRB...

Чето искал, искал и ничего не нашел, ну и ладно. я тут подумал и возможно нашел решение: что бы мотор не крутился нужно примерно 1000 раз в секунду менять 0 и 1 и мотор не успеет крутанутся. Вот! Как моя идея?
25. nest - 14 Января, 2010 - 19:55:52 - перейти к сообщению
zatmenie пишет:
Как моя идея?
плохо.
1) всё это время мотор и драйвер будет потреблять энергию
2) всё это время некоторые моторы будут "пищать" с выбраной частотой
3) в даташите на любой МК семейства AVR содержится минимум 10 раз упоминание о DDRA, DDRB, DDRC, DDRD ...
26. zatmenie - 14 Января, 2010 - 21:01:52 - перейти к сообщению
nest пишет:
плохо.
1) всё это время мотор и драйвер будет потреблять энергию
2) всё это время некоторые моторы будут "пищать" с выбраной частотой

Я знаю что плохо. я у своей училки спросил как можно сделать. она сказала что одной ногой никак. можно поставить лог.элемент или. Входы подключить к кнопкам, а выход к Енейбл1. тогда при нажатии какой либо кнопки енейбл1 быдет включен а МК будет выбирать направление вращения.
nest пишет:
3) в даташите на любой МК семейства AVR содержится минимум 10 раз упоминание о DDRA, DDRB, DDRC, DDRD ...

Проблема в том что я не знаю английский
27. ОЛЕГ - 14 Января, 2010 - 21:12:54 - перейти к сообщению
Вам нужна книжка Евстифеева.
Практически даташит, но на русском.
Есть в сети в свободном доступе.
28. nest - 14 Января, 2010 - 23:04:41 - перейти к сообщению
zatmenie пишет:
у своей училки спросил как можно сделать. она сказала что одной ногой никак.
вот эта схема и будет работать на три состояния: лево, право, отключить
29. zatmenie - 15 Января, 2010 - 17:08:34 - перейти к сообщению
ОЛЕГ пишет:
Вам нужна книжка Евстифеева.
Практически даташит, но на русском.
Есть в сети в свободном доступе.

Микроконтроллеры AVR семейства Classic
Микроконтроллеры AVR семейства Mega
Микроконтроллеры AVR семейства Tiny и Mega
Микроконтроллеры AVR семейства Tiny
Эти?

nest пишет:
вот эта схема и будет работать на три состояния: лево, право, отключить

Чето не врублюсь как подключить входы компоратора
30. nest - 15 Января, 2010 - 19:20:39 - перейти к сообщению
zatmenie пишет:
как подключить входы компоратора

вы вообще файл "Основы схемотехники. Анало говые компараторы" заглядывали ? (Рисунок 7. U1 и U2 брать с потенциометра между Uпит и GND.

Но если вам не нравится с компараторами, можно использовать и вашу идею с "дёрганьем" ножки. для этого можно взять ту же блок-схему:


убрать резисторы, а в качестве "У1" взять схему одновибратора с перезапуском (например, К555АГ3 / 74LS123. Более подробно об одновибраторах: Интернет Университет: "Одно вибраторы и генераторы" ). Тогда, если на ножке появиятся импульсы - однобибратор "отфильтрует" их и подаст на вход ENABLE драйвера двигаетелей низкий лог. уровень, и это выключит мотор. Длина импульса одновибратора должна быть чуть больше длины периода "дёрганья" ножки.