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


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

> Без описания
VCOM Супермодератор Post Id



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


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



смотри выше мой пост Ж)))
 
 Top
1_ulyanovsk Post Id



Маршал


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



Я ошибся маленько лишь в том что порты D входы а С выходы но вот снимок и все равно не работает на КАК БЫ незатронутые порты выводятся 1111 (Это в самом начале когда на D я ничего не подаю) Да ! Там не PINC а PIND ))) опечатка ))) Но не работает . Точнее как.. То что на С0-С3 выводит правильно но как погасить С4-С7 ??
(Добавление)
А вот такое еще ?
#include <avr/io.h>
#include <avr/signal.h>
#define F_CPU 8000000UL

int ii,A,N, out,temport;

int main(void)
{
DDRC=0xff;
DDRD=0x0;
DDRB=0x0;
while(1)
{
PORTC=(PIND & 0b1111);
PORTC=(PINB & 0b11110000);
}
}
Регистры которые мне нужно обойти, оставить не тронотымы - принимают значения 0 ! ! А нужно что бы вообще ни чего не выводилось на них. Такое возможно ? Или только пслетовательно можно выставлять ? Каждый бит
Прикреплено изображение
778885.jpg

(Отредактировано автором: 12 Октября, 2009 - 22:35:52)

 
 Top
VCOM Супермодератор Post Id



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


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



Так давай с самого начала Ж))) Откуда что надо взять и куда засунуть. А то я уж чегото запуталсо Ж))))
(Добавление)
И вообще какаято ерунда написана. У тебя DDRC настраивает все пины на выход. А ты потом PINC читаешь... Зачем?
 
 Top
1_ulyanovsk Post Id



Маршал


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



Правильно вот это:

int main(void)
{
DDRC=0xff;
DDRD=0x0;

while(1)
{
out=PIND;
temport=(0xF0 | out);
PORTC=(POTRC | temport);
}
}
я извиняюсь, сам уже запутался. Читаю со входа - его же и вывожу на вывод но только первые бита.
 
 Top
VCOM Супермодератор Post Id



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


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



Ну дак работает? Ж)))
 
 Top
Alex_cnc Post Id



Лейтенант


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



Kakie eshe soveti po povody BM9010?
 
 Top
nest Администратор Post Id



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


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



а каковы конкретные вопросы по BM9010?
 
 Top
Белый Волк Супермодератор Post Id



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


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



Alex_cnc
http://prottoss.com/projects/AVR...b_programmer.htm
 
 Top
1_ulyanovsk Post Id



Маршал


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



VCOM пишет:
Ну дак работает? Ж)))

Уважаемый, ну не работает ((((( Этот скрипт выводит лишние 0и11110000 в порт вывода. А остальные 0b00001111 как нужно выводит. От лишних разрядов нв порту вывода 0b11110000 как избавиться ? ума не приложу

(Отредактировано автором: 13 Октября, 2009 - 21:41:33)

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



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


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



может, надо расставить знаки препинания ?
а то непонятно, 1_ulyanovsk, что вы пишите...
 
 Top
1_ulyanovsk Post Id



Маршал


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



nest пишет:
может, надо расставить знаки препинания ?
а то непонятно, 1_ulyanovsk, что вы пишите...

Если смотреть на картинку - то порт С- вывод. Я хотел что бы на С0-С3 выводился нужный код, а С4-С7 оставались без изменения какие бы они ни были. То есть оперировать первыми 4-мя разрядами порта С (параллельно). Вот. У меня сейчас они выставляются последовательно поэтому приходится вводить задержку пока не выстроится нужная комбинация (скрипт не приводится). нельзя ли что бы С0-С3 выводились в один заход и без влияния на С4-С7. А Ваш скрипт сразуже выводит на С4-С7 единицы с использованием лог. НЕ. Как это разрешить (С0-С3 код ) без влияния на С4-С7.
 
 Top
nest Администратор Post Id



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


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



-взять PORTD и свести его по AND с числом 0xF0.
-взять байт с нужным кодом в первой тетраде и свести его по AND с числом 0x0F.
-полученные оба байта свести между собой через OR
-вывести полученный байт в PORTD

если и дальше будет хотеться оперировать с битами - то лучше подучить ассемблер.

(Отредактировано автором: 13 Октября, 2009 - 22:34:52)

 
 Top
1_ulyanovsk Post Id



Маршал


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



nest пишет:
-взять PORTD и свести его по AND с числом 0xF0.
-взять байт с нужным кодом в первой тетраде и свести его по AND с числом 0x0F.
-полученные оба байта свести между собой через OR
-вывести полученный байт в PORTD

если и дальше будет хотеться оперировать с битами - то лучше подучить ассемблер.

БОЛЬШОЕ СПАСИБО ! Поэкспериментирую. Тоже слышал что асемблер для операций с портами бодрее но пока не доходят руки его начать изучать. еще раз спасибо - вторй день порт мучаем )
 
 Top
nest Администратор Post Id



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


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



на СИ, наверное, будет выглядеть примерно так:
CODE:

out=0x01; <- исходный байт с нужным кодом в первых четырёх битах. will be brocken
temportd=(PORTD & 0xF0);
out=(0x0F & out);
PORTD=(out | temportd);

(Отредактировано автором: 13 Октября, 2009 - 22:36:00)

 
 Top
А.Е.ГОЛОВАНОВ Post Id



Рядовой


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



ПРИВЕТСТВУЮ
не подскажите как atmega8-16ai подключить к LPT порту делаю как на сайте сказано не получается пишет ошибку lpt порта монтаж проверял 5 раз все нормально
 
 Top
Страниц (17): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец
« Программирование микроконтроллеров »


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





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