roboforum.ru

Технический форум по робототехнике.

непонимаю как бегущий огонь сделать

непонимаю как бегущий огонь сделать

Myp » 24 фев 2007, 19:56

Код: Выделить всёРазвернуть
      PIND.4 = 0;
     PIND.6 = 1;
     delay_ms(5000);
     PIND.6 = 0;
     PIND.5 = 1;
     delay_ms(5000);
     PIND.5 = 0;
     PIND.4 = 1;
     delay_ms(5000);


вроде всё просто так почему не работает?
должен получиться типа бегущий огонь
а в итоге такой результат

загорается 6 пин
загорается 5 пин
тухнут оба пина
загорается 5 и 4 пин
тухнет 5 пин
тухнут все

1. 000
2. 100
3. 110
4. 000
5. 011
6. 001

Myp » 24 фев 2007, 20:25

блин вобще дурь какаято

Код: Выделить всёРазвернуть
      PIND.4 = 1;
     delay_ms(5000);
     PIND.4 = 0;
     delay_ms(5000);

в итоге одновременно моргает 5 и 6 нога а 4 всегда ноль...

этож бред какойто :shock:

D-M » 24 фев 2007, 20:35

надо в симуляторе попробовать
потому что когдая я делал что-то подобное тоже ни пойми что получалось, а оказывается просто паять неумею :lol:

D-M » 24 фев 2007, 20:37

ток щас в код всмотрелся, ты зачем в PIN единицы и нули пишешь? :shock:

Myp » 24 фев 2007, 20:40

ну так эта
чтоб моргало
записал типа единичку он горит
записал нолик не горит


тока я нехрена непойму в каком именно месте я дурак

D-M » 24 фев 2007, 20:41

да нет наверно эт я дурак,
НО!!!
PIN Read only

Myp » 24 фев 2007, 20:49

бугагага
это у меня  после празника, с похмелья туплю =)
недавно тока проснулся, аспирину выпил и пошёл кодить...



а вобще с какого фига тогда у меня светик моргает???

Код: Выделить всёРазвернуть
PINB.4 = 1;
PINB.4 = 0;
это работает :shock:

D-M » 24 фев 2007, 20:52

Myp писал(а):

а вобще с какого фига тогда у меня светик моргает???



я бы предположил что это глюки :lol:

Re: непонимаю как бегущий огонь сделать

avr123.nm.ru » 24 фев 2007, 20:58

Myp писал(а):
Код: Выделить всёРазвернуть
      PIND.4 = 0;
     PIND.6 = 1;
     delay_ms(5000);
     PIND.6 = 0;
     PIND.5 = 1;
     delay_ms(5000);
     PIND.5 = 0;
     PIND.4 = 1;
     delay_ms(5000);


должен получиться типа бегущий огонь


Как обычно - в курс:

http://avr123.nm.ru/02.htm

Порт_B имеет (как и другие порты МК)
минимум 3 сопоставленных ему регистра


и далее подробно. И названы те МК у которых писать в PIN бессмысленно и те у которых такая запись переключает ножку.

avr123.nm.ru » 24 фев 2007, 21:03

чуть ниже

"таблица состояния ножки МК"

http://avr123.nm.ru/z1.htm

БОЛЬШИМИ КРАСНЫМи БУКВАМИ:

Внимание !  Очень важно!

Битовые операции !

....   и для всех популярных компиляторов примеры.

avr123.nm.ru » 24 фев 2007, 21:07

Короче - записывать что-то в регистр PINx бессмысленно !  
Имеет смысл только чтение из него.

Myp » 24 фев 2007, 21:27

avr123.nm.ru писал(а):Короче - записывать что-то в регистр PINx бессмысленно !  
Имеет смысл только чтение из него.

я это знаю

но блин
я писал и у меня ноги меняли состояние


PINB.4 = 1;
PINB.4 = 0;
это работает
:?

Myp » 25 фев 2007, 00:07

не ну правда сами попробуйте =)
чесное слово это мне не приглючилось

TamTam » 25 фев 2007, 12:04

Вот те бегущие огни в одну строчку правдо это я не в этих целях юзал

#define ADC_LINE_CHANGE_DEC      PORTB=(( (PORTB-(4<<1)) & (3<<4) )) | (PORTB& (~(3<<4)));
#define ADC_LINE_CHANGE_INC       PORTB=(( (PORTB+(1<<4)) & (3<<4) )) | (PORTB& (~(3<<4)));

avr123.nm.ru » 25 фев 2007, 12:17

использовать это наверно так ?

Код: Выделить всёРазвернуть

#include < микроконтроллер .h>
#include <delay.h>

#define PORT_DEC      PORTB=(( (PORTB-(4<<1)) & (3<<4) )) | (PORTB& (~(3<<4)));

#define PORT_INC       PORTB=(( (PORTB+(1<<4)) & (3<<4) )) | (PORTB& (~(3<<4)));

main{

DDRB = 255;

while(1){

       PORT_INC

       delay_ms(пауза между переключениями);

           }
      }


Rambler\'s Top100 Mail.ru counter