Перейти к содержанию
bbh_blocked_dnftl

Dx Portal "зависает" Мк Attiny 2313


Рекомендуемые сообщения

Приветствую всех!

 

 

 

Какие причины могут быть "зависания" МК. Пример: простейший бегущий огонь, посредством битовых сдвигов работает некорректно. То бежит с одинаковым ритмом, то раз и остановился на одном диоде и горит какое то время потом опять пробежал пару бит и опять горит, и всё в таком духе...В протеусе к слову, всё бегает прекрасно.

 

 

 

Вопрос к знатокам, перечислите пожалуйста возможные причины такого поведения МК.

 

 

 

Заранее благодарю всех откликнувшихся. Голову уже сломал.....

 

 

 

Вот схема

 

http://forum.cxem.net/uploads/monthly_08_2016/post-188855-0-60401400-1472268630_thumb.jpg

 

 

Вот прошивка

 

#include #include typedef unsigned char byte;unsigned char trig, var_no, i, b, flag, flag1, flag2;int count, LONG, WAIT;eeprom byte memory_var;eeprom int memory_speed;// Port B initializationvoid main(void){PORTB=0x00;DDRB=0b11111111;PORTD=0b00000001;DDRD=0x00;if(memory_var) // если режим выбран ранее{if (memory_var==0xFF){var_no=1;}else{var_no=memory_var; // пишем последнее запомненное состояние на выход}}if(memory_speed) // если скорость выбрана ранее{if (memory_speed==0xFFFF){LONG=70;}else{LONG=memory_speed; // пишем последнее запомненное состояние на выход}}// ****************************** НАСТРОЙКА ТАЙМЕРА ПО ПЕРЕПОЛНЕНИЮ И ПРЕРЫВАНИЯ *****************************************TCCR0B=(0<8)					 {					 i=1;					 trig=0;					 }				 count=0;				 }		 }break;}case 2: //ВТОРОЙ РЕЖИМ{		 if (trig==0)		 {		 if (b==1)PORTB=0b00000000;		 i--;		 trig=1;		 }		 else		 {			 if(count7)					 {					 i=1;					 trig=0;					 b=0;					 }				 }				 else				 {				 PORTB = (PORTB<<1);				 i++;					 if(i>7)					 {					 i=1;					 trig=0;					 b=1;					 }				 }				 count=0;				 }		 }break;}case 3: //ТРЕТИЙ РЕЖИМ{		 if (trig==0)		 {		 if (b==1)PORTB=0b00000000;		 i--;		 trig=1;		 }		 else		 {			 if(count7)					 {					 i=1;					 trig=0;					 b=0;					 }				 }				 else				 {				 PORTB = ~(PORTB);				 i++;					 if(i>4)					 {					 i=1;					 trig=0;					 b=1;					 }				 }				 count=0;				 }		 }break;} //конец case 3} //конец свича//******************************************************ОБРАБОТКА НАЖАТИЯ КНОПОК***************************************************if (PIND.1==0) // КНОПКА СМЕНЫ РЕЖИМОВ{if (flag==0) //если кнопка нажата впервые{zero_var();var_no++;if (var_no==4)var_no=1;memory_var=var_no;}}else{if (flag){flag++;if (flag>WAIT)flag=0; // ОБРАБОТКА АНТИДРЕБЕЗГА}}if (PIND.2==0) // КНОПКА ЗАМЕДЛЕНИЯ{if (flag2==0) // если кнопка нажата впервые{flag2=1;LONG=(LONG+10);if (LONG>1000){LONG=400;}memory_speed=LONG;zero_var();}}else{if (flag2){flag2++;if (flag2>WAIT)flag2=0; // ОБРАБОТКА АНТИДРЕБЕЗГА}}if (PIND.3==0) // КНОПКА УСКОРЕНИЯ{if (flag1==0) //если кнопка нажата впервые{flag1=1;LONG=(LONG-10);if (LONG<10){LONG=10;}memory_speed=LONG;zero_var();}}else{if (flag1){flag1++;if (flag1>WAIT)flag1=0; // ОБРАБОТКА АНТИДРЕБЕЗГА}}} //конец прерывания
Раздел: AVR

 

Читать дальше

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...