Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

ОСВОЕНИЕ НАПИСАНИЯ ПРОШИВОК ДЛЯ TINY2313

Вс июн 17, 2012 17:02:30

Драсьте уважаемые обитатели сайта и форума. У меня вопрос такой: можноли в языке Си длительности импульса присвоить какое_либо имя или значение? К примеру:
PINB0=1;
delay_us(2500);

какой синтаксис использовать? Подскажите,выручте пажалста!!! Спасибо.

Re: ОСВОЕНИЕ НАПИСАНИЯ ПРОШИВОК ДЛЯ TINY2313

Пн июн 18, 2012 18:54:53

Все это давно расписано в умных книжках.

Re: ОСВОЕНИЕ НАПИСАНИЯ ПРОШИВОК ДЛЯ TINY2313

Пн июн 18, 2012 19:12:49

директивами препроцессора,
#define
#inline
ваш случай:
#define SOME_KIND_OF_DELAY PINB0=1; delay_us(2500);

Re: ОСВОЕНИЕ НАПИСАНИЯ ПРОШИВОК ДЛЯ TINY2313

Пн июн 18, 2012 21:37:57

borys писал(а):Все это давно расписано в умных книжках.

В умных книжках по-умному и написано. Например в "Code Vision AVR-Пособие для начинающих" автор Лебедев М.Б. А хотелось бы чтоб по-простому...

Re: ОСВОЕНИЕ НАПИСАНИЯ ПРОШИВОК ДЛЯ TINY2313

Пн июн 18, 2012 22:44:21

Вы хоть напишите когда вам эта задержка нужна.
Может просто можно присваивать значение тогда когда надо.

Например

PINB0=1;
delay_us(2500);

Ну там видимо

PINB0=0;
delay_us(2500);

Re: ОСВОЕНИЕ НАПИСАНИЯ ПРОШИВОК ДЛЯ TINY2313

Вт июн 19, 2012 19:11:48

Для eduardo.
Вообще то Вы взялись не за самое дело (микроконтроллеры) и книги читать придется. Не пото-
му, что мне так хочется, а потому, что это Вам необходимо. Если совсем по простому, то с по-
мощью гаечного ключа и лопаты.

Re: ОСВОЕНИЕ НАПИСАНИЯ ПРОШИВОК ДЛЯ TINY2313

Пт июн 22, 2012 01:36:02

radiokot__ писал(а):Вы хоть напишите когда вам эта задержка нужна.
Может просто можно присваивать значение тогда когда надо.

Например

PINB0=1;
delay_us(2500);

Ну там видимо

PINB0=0;
delay_us(2500);


Алгоритм такой: если в PINB0 присутствует 1 в течении 2500 мкс,то PORTD0=1. Иначе PORTD0=0.
if(PINB0=1+delay_us(2500)) //в этой строке синтаксис неверный
{PORTD0=1;}
else
{PORTD0=0;}
А КАК НАПИСАТЬ ПРАВИЛЬНО???

Re: ОСВОЕНИЕ НАПИСАНИЯ ПРОШИВОК ДЛЯ TINY2313

Пт июн 22, 2012 10:04:04

Можно сделать например так(чисто программный метод):
Код:
unsigned short i = 0;

while( (PINB.0 != 0) && ( i<2500 ) )
   {
   ++i;
   delay_us( 1 );//подобрать задержку(возможно NOP-ами)
   };
if( i == 2500 )
   PORTD.0 = 1;
else
   PORTD.0 = 0;

Задержку отрегулируете исходя из кол-ва инструкций в цикле while() и тактовой частоты МК. Но правельней было бы реализовать на таймерах.
Тема закрыта