Светодиодный тетрис для кота

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
nds
Друг Кота
Сообщения: 4751
Зарегистрирован: Вс май 25, 2008 19:47:47
Откуда: РФ
Контактная информация:

Re: Светодиодный тетрис для кота

Сообщение nds »

на первый взгляд ничего криминального в коде незаметил
разве что написано как инопланетянином но и не такие заскоки бывают в процессе изучения программирования
код для поворота к слову в исходнике есть
если вдруг будет свободное время портирую под си написанную в студенческие времена версию тетриса
Вложения
Project1.zip
(189.42 КБ) 156 скачиваний
2B OR NOT 2B = FF
Реклама
Аватара пользователя
kotarnold
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Пн мар 14, 2016 15:38:50
Откуда: Питер

Re: Светодиодный тетрис для кота

Сообщение kotarnold »

Господа, я сваял тестовую программу, чтобы по очереди каждая из строк подсвечивалась и... я в шоке!



На всякий случай сам код:

Код: Выделить всё

#include <avr/io.h>
#define F_CPU 8000000
#include <util/delay.h>

int main(void)
{
	
	DDRA = 0xff;
	PORTA = 0xff;
	DDRB = 0xff;
	PORTB = 0xff;
	DDRC = 0xff;
	PORTC = 0xff;
	DDRD = 0xf0;
	PORTD = 0xff;

    while (1) 
    {
		PORTA=0b11111110;
		_delay_ms(100);
		PORTA=0b11111101;
		_delay_ms(100);
		PORTA=0b11111011;
		_delay_ms(100);
		PORTA=0b11110111;
		_delay_ms(100);
		PORTA=0b11101111;
		_delay_ms(100);
		PORTA=0b11011111;
		_delay_ms(100);
		PORTA=0b10111111;
		_delay_ms(100);
		PORTA=0b01111111;
		_delay_ms(100);
		PORTC=0b01111111;
		_delay_ms(100);
		PORTC=0b10111111;
		_delay_ms(100);
		PORTC=0b11011111;
		_delay_ms(100);
		PORTC=0b11101111;
		_delay_ms(100);
		PORTC=0b11110111;
		_delay_ms(100);
		PORTC=0b11111011;
		_delay_ms(100);
		PORTC=0b11111101;
		_delay_ms(100);
		PORTC=0b11111110;
		_delay_ms(100);
		PORTD=0b01111111;
		_delay_ms(100);
		PORTD=0b10111111;
		_delay_ms(100);
		PORTD=0b11011111;
		_delay_ms(100);
		PORTD=0b11101111;
		_delay_ms(100);
		}
}

Реклама
Аватара пользователя
B@R5uk
Собутыльник Кота
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Re: Светодиодный тетрис для кота

Сообщение B@R5uk »

Вот в этом месте:

Код: Выделить всё

      PORTA=0b01111111;
      _delay_ms(100);
      PORTC=0b01111111;
Вы устанавливаете полоску через порт C, но забываете сбросить полоску для порта A. Правильно надо так:

Код: Выделить всё

      PORTA=0b01111111;
      _delay_ms(100);
      PORTA=0b11111111;
      PORTC=0b01111111;
Аналогичная ситуация в других местах, где полоска переходит порта к порту. Если я не ошибаюсь, то таких место всего должно быть три (так как используется три порта: А, С и D).
Аватара пользователя
B@R5uk
Собутыльник Кота
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Re: Светодиодный тетрис для кота

Сообщение B@R5uk »

А вообще, если ОЧЕНЬ внимательно присмотреться (вы бы сделали, чтобы полоски ещё быстрее переключались!!!), то можно заметить, что светодиоды, подключенные к портам A и D работают нормально, а для порта C правильно работают только 4 полоски, 1 всегда светится и 3 не загораются вообще. Чтобы это лучше разглядеть, поправьте тестовую программу, как я написал выше, и увеличьте паузу между переключениями хотя бы до 300 мс.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
kotarnold
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Пн мар 14, 2016 15:38:50
Откуда: Питер

Re: Светодиодный тетрис для кота

Сообщение kotarnold »

Коллеги, если кому-то интересна данная тема, то я готов поделиться печатными платами. За цену доставки.
Реклама
Аватара пользователя
GoldenAndy
Поставщик валерьянки для Кота
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA
Контактная информация:

Re: Светодиодный тетрис для кота

Сообщение GoldenAndy »

kotarnold, а посмотрите-ка фьюзы у меги....
Если это мега 32, то у ней на порту С сидит ЖТАГ. И по умолчанию он включен. И контроллеру глубоко по боку, что вы туда выводите, там у него ЖТАГ.
PC5 TDI (JTAG Test Data In)
PC4 TDO (JTAG Test Data Out)
PC3 TMS (JTAG Test Mode Select)
PC2 TCK (JTAG Test Clock)
Проверьте в High fuse byte состояние бита JTAGEN...
Из последнего теста мне подсказывает что то, что странное свечение линии плюс несвечение другой - проделки жтага...
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Реклама
Ответить

Вернуться в «AVR»