Бегущие огни

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
SH_Pasha
Открыл глаза
Сообщения: 45
Зарегистрирован: Вс янв 15, 2012 16:31:49

Бегущие огни

Сообщение SH_Pasha »

Вот написал свое первое приложение на codevision:

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

#include <tiny13.h>
#include <delay.h>

void main(void)
{     

DDRB  = 0xFF;   
DDRB.5=0x00;   
while (1 == 1) {
if (PINB.5 == 1)
{
PORTB.4=1;
delay_ms(50);
PORTB.3=1;
delay_ms(50);
PORTB.2=1;
delay_ms(50);
PORTB.1=1;
delay_ms(50);
PORTB.0=1;
delay_ms(50);
PORTB.4=0;
delay_ms(50);
PORTB.3=0;
delay_ms(50);
PORTB.2=0;
delay_ms(50);
PORTB.1=0;
delay_ms(50);
PORTB.0=0;
delay_ms(50);
}
}
     };


Но не получается одно: как сделать так, чтоб если на 5 портб нет питания, светодиоды все вместе просто мигали. Пробовал через else, что-то не получается :(
Заранее спасибо :)
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: Бегущие огни

Сообщение FreshMan »

а что это вы делаете сей командой ?

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

DDRB.5=0x00;
Tell Me The Truth
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Бегущие огни

Сообщение pyzhman »

Как пробовали?
Docendo discimus
SH_Pasha
Открыл глаза
Сообщения: 45
Зарегистрирован: Вс янв 15, 2012 16:31:49

Re: Бегущие огни

Сообщение SH_Pasha »

FreshMan писал(а):а что это вы делаете сей командой ?

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

DDRB.5=0x00;

Устанавливаю порт как входной.
Пробовал через else, не работает
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Бегущие огни

Сообщение Engineer_Keen »

pyzhman писал(а):Как пробовали?

SH_Pasha писал(а):Пробовал через else, не работает

Звучит как:
"- Я случайно базу данных...
- Случайно что?
- Базу данных" :)))
Код приведите, неизвестно куда вы там else воткнули...
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Бегущие огни

Сообщение pyzhman »

2Engineer_Keen: :) . Я уж было отрекся.
Docendo discimus
SH_Pasha
Открыл глаза
Сообщения: 45
Зарегистрирован: Вс янв 15, 2012 16:31:49

Re: Бегущие огни

Сообщение SH_Pasha »

Engineer_Keen, вставлял else по шаблону

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

#include <tiny13.h>
#include <delay.h>

void main(void)
{     

DDRB  = 0xFF;   
DDRB.5=0x00;   
while (1 == 1) {
if (PINB.5 == 1)
{
PORTB.4=1;
delay_ms(50);
PORTB.3=1;
delay_ms(50);
PORTB.2=1;
delay_ms(50);
PORTB.1=1;
delay_ms(50);
PORTB.0=1;
delay_ms(50);
PORTB.4=0;
delay_ms(50);
PORTB.3=0;
delay_ms(50);
PORTB.2=0;
delay_ms(50);
PORTB.1=0;
delay_ms(50);
PORTB.0=0;
delay_ms(50);
}
else {
PORTB.4=1;
PORTB.3=1;
PORTB.2=1;
PORTB.1=1;
PORTB.0=1;
delay_ms(100);
PORTB.4=0;
PORTB.3=0;
PORTB.2=0;
PORTB.1=0;
PORTB.0=0;
delay_ms(100);
}
}
     };
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Бегущие огни

Сообщение pyzhman »

Программа красивая. Пятый вывод без питания не означает болтающийся в воздухе(предполагаю), надо его припаять к земле/кнопкой подключить к земле.
Docendo discimus
SH_Pasha
Открыл глаза
Сообщения: 45
Зарегистрирован: Вс янв 15, 2012 16:31:49

Re: Бегущие огни

Сообщение SH_Pasha »

pyzhman, так и сделано :) в протеусе проверял, работает, но как только добавляю else, перестает работать :(
И еще одна проблема, скачал с официального сайта ponyprog2000, но в нем нет Attiny13 :(. Можете скинуть понипрог, поддерживающий этот микроконтроллер?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Бегущие огни

Сообщение Engineer_Keen »

А теперь ВНИМАНИЕ!!! Вы в курсе, что используемая вами нога PB5 является ногой сброса, и для работы вашей программы надо отключать фьюз RSTDISBL? После этого вы уже не сможете программировать этот МК по ISP.
А то потом будут вопросы, типа "почему у меня не получается больше прошить МК?"...

Что если if (PINB.5 == 1) поменять на if (PINB.5 == 0)? Не спец в Си, но вот такой код работает (WinAVR):

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

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

int main(void)
{     

DDRB= 0x1F;   
while (1 == 1) {
asm("nop");
if (PINB&=~(1<<PB5))
{
asm("nop");
PORTB|=(1<<PB4);
_delay_ms(50);
PORTB|=(1<<PB3);
_delay_ms(50);
PORTB|=(1<<PB2);
_delay_ms(50);
PORTB|=(1<<PB1);
_delay_ms(50);
PORTB|=(1<<PB0);
_delay_ms(50);
PORTB&=~(1<<PB4);
_delay_ms(50);
PORTB&=~(1<<PB3);
_delay_ms(50);
PORTB&=~(1<<PB2);
_delay_ms(50);
PORTB&=~(1<<PB1);
_delay_ms(50);
PORTB&=~(1<<PB0);
_delay_ms(50);
}
else {
PORTB|=(1<<PB4);
PORTB|=(1<<PB3);
PORTB|=(1<<PB2);
PORTB|=(1<<PB1);
PORTB|=(1<<PB0);
_delay_ms(100);
PORTB&=~(1<<PB4);
PORTB&=~(1<<PB3);
PORTB&=~(1<<PB2);
PORTB&=~(1<<PB1);
PORTB&=~(1<<PB0);
_delay_ms(100);
}
}
};


Индусы в восторге :))
SH_Pasha
Открыл глаза
Сообщения: 45
Зарегистрирован: Вс янв 15, 2012 16:31:49

Re: Бегущие огни

Сообщение SH_Pasha »

Engineer_Keen, выдало порядка 25 ошибок, но после исправления кода до такого:

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

#include <tiny13.h>
#include <delay.h>

void main(void)
{     

DDRB= 0x1F;   
while (1 == 1) {
if (PINB&=~(1<<PORTB5))
{
PORTB|=(1<<PORTB4);
delay_ms(50);
PORTB|=(1<<PORTB3);
delay_ms(50);
PORTB|=(1<<PORTB2);
delay_ms(50);
PORTB|=(1<<PORTB1);
delay_ms(50);
PORTB|=(1<<PORTB0);
delay_ms(50);
PORTB&=~(1<<PORTB4);
delay_ms(50);
PORTB&=~(1<<PORTB3);
delay_ms(50);
PORTB&=~(1<<PORTB2);
delay_ms(50);
PORTB&=~(1<<PORTB1);
delay_ms(50);
PORTB&=~(1<<PORTB0);
delay_ms(50);
}
else {
PORTB|=(1<<PORTB4);
PORTB|=(1<<PORTB3);
PORTB|=(1<<PORTB2);
PORTB|=(1<<PORTB1);
PORTB|=(1<<PORTB0);
delay_ms(100);
PORTB&=~(1<<PORTB4);
PORTB&=~(1<<PORTB3);
PORTB&=~(1<<PORTB2);
PORTB&=~(1<<PORTB1);
PORTB&=~(1<<PORTB0);
delay_ms(100);
}
}
};

Работает точно так же как и моя версия, т.е. когда нажимаю на кнопку, ничего не происходит, просто светодиоды перестают переключаться.
Наверное это из-за того, что я компилировал в CodeVision, а WinAvr у меня не устанавливается, хоть и делал все по инструкции :(


if (PINB.5 == 0)

Пробовал, толку нет.
вашей программы надо отключать фьюз RSTDISBL?
Как собственно это реализовать?
В PonyProg у меня в списке микроконтроллеров вообще нет attiny13, вот и еще одна проблема :(
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Бегущие огни

Сообщение Engineer_Keen »

SH_Pasha писал(а): выдало порядка 25 ошибок

Разные компиляторы, у меня ваш код тоже не работал пока я его до winavr-овского варианта не допилил.
SH_Pasha писал(а):Работает точно так же как и моя версия, т.е. когда нажимаю на кнопку, ничего не происходит, просто светодиоды перестают переключаться.

Ресет отключили?
SH_Pasha писал(а):Наверное это из-за того, что я компилировал в CodeVision, а WinAvr у меня не устанавливается, хоть и делал все по инструкции :(

Че там делать? Он инсталлируется и авр-студия сама его подхватывает...
надо отключать фьюз RSTDISBL? Как собственно это реализовать?

Без этого нога PB5 - это просто нога сброса! В протеусе фьюзы есть в окне свойств контроллера.
SH_Pasha
Открыл глаза
Сообщения: 45
Зарегистрирован: Вс янв 15, 2012 16:31:49

Re: Бегущие огни

Сообщение SH_Pasha »

Ресет отключили?

Нееет, как это сделать?

upd
Как в протеусе в свойствах микроконтроллера RSTDISML поставил programmed, все заработало как надо :))
Значит ли это, что если собрать устройства, все заработает как надо?
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Re: Бегущие огни

Сообщение radteh »

Заработать то оно должно, но сменить прошивку можно будет только параллельным программатором. Если надо много светодиодов лучше добавь сдвиговый регистр.
SH_Pasha писал(а):В PonyProg у меня в списке микроконтроллеров вообще нет attiny13, вот и еще одна проблема :(
в версии 2.07c с оффсайта этот контроллер есть, или воспользуйся avrdude.
SH_Pasha
Открыл глаза
Сообщения: 45
Зарегистрирован: Вс янв 15, 2012 16:31:49

Re: Бегущие огни

Сообщение SH_Pasha »

лучше добавь сдвиговый регистр.
я же писал, это мое первое приложение для МК, так что как такие вещи реализовывать я пока не понимаю :))
в версии 2.07c с оффсайта этот контроллер есть
пробовал, при установке ругаться начинает т.е. у вас не x86...
Последний раз редактировалось SH_Pasha Ср мар 21, 2012 17:21:56, всего редактировалось 1 раз.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Бегущие огни

Сообщение Engineer_Keen »

Можно без регистров, например чарлиплексингом, но это тоже сложнее чем "просто к выводу светодиод подключить". Зато на 4 ноги - 12 светодиодов, и одна нога для управления и ресет свободен.

На x64 ругается если скачали установщик для 64 разрядной винды при стоящей 32-х разрядной системе.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Бегущие огни

Сообщение pyzhman »

Engineer_Keen писал(а):PB5 является ногой сброса

Сто чертей мне в рот и якорь в попу! Как же я проморгал!? :oops:
Docendo discimus
SH_Pasha
Открыл глаза
Сообщения: 45
Зарегистрирован: Вс янв 15, 2012 16:31:49

Re: Бегущие огни

Сообщение SH_Pasha »

Engineer_Keen, мой косяк, я уже исправил, ругается из-за того что x86, а для x64 вот не могу найти версию...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»