роботы робототехника микроконтроллеры


 Страниц (5): [1] 2 3 4 5 »   

> Описание: не могу заставить что бы одновременно шим увеличивался и моргали фары
Demckiy Post Id


Полковник


Сообщений всего: 79
Дата рег-ции: Май 2010  



нужно сделать так когда ШИМ на РВ2 увеличивается или уменьшается,что бы фары (РВ0 и РВ1) во время нарастания и спадения ШИМа моргали по очереди.
CODE:
Chip type : ATtiny2313
Clock frequency : 4,000000 MHz
Memory model : Tiny
External SRAM size : 0
Data Stack size : 32
*****************************************************/


#include <tiny2313.h>
#include <delay.h>

unsigned char Direct=0;//Направление счета 0=вниз 0xFF=вверх
unsigned char cnt;
unsigned char Step=0;



//****************************************
//Здесь будут обработчики прерываний
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{

//Если не пройдены все шаги (Step>0)
if (Step)
{
cnt++;
//Каждый 20-й заход в прерывание
if (cnt==19)
{
cnt=0;
Step--;//Уменьшаем количество оставшихся шагов

if (Direct)
{
//Если вверх, то OCR0A надо увеличивать
OCR0A=0xFE-Step; //254-0
}
else
{
//Если вниз, то OCR0A надо уменьшать
if (!Step)
{
OCR0A=0xFF; //=255
}
else
{
OCR0A=Step;
}
}
}
}
}

// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
// Place your code here

}

interrupt[EXT_INT0] void ext_int0_isr(void)
{
//прерывание возникает когда кнопка нажимается
Direct=~Direct;//Сменить направление счета

if (Direct)
{
Step=0xFE-OCR0A; //254-0
}
else
{
Step=OCR0A;
}
}

void Port_Init(void)
{
PORTA=0x00;
DDRA=0x00;

PORTB=0b00000000;
DDRB=0b11111111;

PORTD=0b1111111;
DDRD=0b0000000;
}

void Timer0_Init(void)
{
/* биты регистра:
COM0A1 COM0A0 COM0B1 COM0B0 Reserved Reserved WGM01 WGM00 */
TCCR0A=0x83;

/* биты регистра:
FOC0A FOC0B Reserved Reserved WGM02 CS02 CS01 CS00 */
TCCR0B=0b00000001;

TCNT0=0x10;

OCR0A=0b11111111;

OCR0B=0b00000000;

/* биты регистра:
TOIE1 OCIE1A OCIE1B Reserved ICIE1 OCIE0B TOIE0 OCIE0A */
TIMSK=0x03;
}





/*{void Timer1_Init(void)
{
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
}/**/

void main(void)
{


// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

Timer0_Init();
Port_Init();

GIMSK=0x40;
MCUCR=0x02;


#asm("SEI");

while (1)
{
#asm("wdr"); //Сброс сторожевого таймера

//----------------- ЭФФЕКТ : МИГАНИЕ ТРИЖДЫ В СЕКУНДУ - ЛЕВАЯ ФАРА, ПАУЗА, ПРАВАЯ ФАРА
if ((PIND.0==0)&(PIND.3==0))
{
PORTB.0=0; // off
delay_ms(300); // Задержка
PORTB.0=1; // on
delay_ms(300); // Задержка
PORTB.0=0; // off
delay_ms(300); // Задержка
PORTB.0=1; // on
delay_ms(300); // Задержка
PORTB.0=0; // off
delay_ms(300); // Задержка
PORTB.0=1; // on
delay_ms(300); // Задержка
PORTB.0=0; // off
delay_ms(700); // Задержка

PORTB.1=0; // off
delay_ms(300); // Задержка
PORTB.1=1; // on
delay_ms(300); // Задержка
PORTB.1=0; // off
delay_ms(300); // Задержка
PORTB.1=1; // on
delay_ms(300); // Задержка
PORTB.1=0; // off
delay_ms(300); // Задержка
PORTB.1=1; // on
delay_ms(300); // Задержка
PORTB.1=0; // off
delay_ms(700); // Задержка

}

};
}

Прикреплено изображение
стробоскоп1.png

(Отредактировано автором: 07 Января, 2011 - 08:55:55)

 
 Top
ОЛЕГ Супермодератор Post Id



Супермодератор


Сообщений всего: 1732
Дата рег-ции: Нояб. 2008  



ПДД:
Перечень неисправности автомобилей, автобусов, автопоездов, прицепов, мотоциклов, мопедов, тракторов, других самоходных машин и условия, при которых запрещается их эксплуатация.
3.1. Количество, тип, цвет, расположение и режим работы внешних световых приборов не соответствуют требованиям конструкции транспортного средства.

КоАП:
Статья 12.5 - Управление транспортным средством при наличии неисправностей или условий, при которых эксплуатация транспортных средств запрещена

Часть 3. Управление транспортным средством, на передней части которого установлены световые приборы с огнями красного цвета или световозвращающие приспособления красного цвета, А РАВНО СВЕТОВЫЕ ПРИБОРЫ, ЦВЕТ ОГНЕЙ И РЕЖИМ РАБОТЫ КОТОРЫХ НЕ СООТВЕТСТВУЮТ требованиям Основных положений по допуску транспортных средств к эксплуатации и обязанностей должностных лиц по обеспечению безопасности дорожного движения, - влечет лишение права управления транспортными средствами на срок от шести месяцев до одного года с конфискацией указанных приборов и приспособлений.
 
 Top
Demckiy Post Id


Полковник


Сообщений всего: 79
Дата рег-ции: Май 2010  



Я знаю, какие последствия могут быть...

Объясните мне чего программа не работает так как надо....Заранее спасибо...
 
 Top
ОЛЕГ Супермодератор Post Id



Супермодератор


Сообщений всего: 1732
Дата рег-ции: Нояб. 2008  



unsigned char Step=0; и if (Step) - лично у меня есть вопрос, как это так?

Далее: unsigned char Step=0; и Step--; - тоже как-то не очень

Это то что бросилось в глаза.

Вам нужен Михаил- он любит чужой код ковырять. Улыбка
 
 Top
Demckiy Post Id


Полковник


Сообщений всего: 79
Дата рег-ции: Май 2010  



ОЛЕГ пишет:
unsigned char Step=0; и if (Step) - лично у меня есть вопрос, как это так?

Далее: unsigned char Step=0; и Step--; - тоже как-то не очень

Это то что бросилось в глаза.

Вам нужен Михаил- он любит чужой код ковырять. Улыбка


"unsigned char" (беззнаковый тип от 0 до 255)
Объявили перемененную Step и записали в нее 0
if (Step) или if (Step>0) выполняется условие пока Step>0

(Отредактировано автором: 07 Января, 2011 - 23:08:08)

 
 Top
Demckiy Post Id


Полковник


Сообщений всего: 79
Дата рег-ции: Май 2010  



исходник
Скачать файл: 2313_исходник.zip
Скачан раз: 348

(Отредактировано автором: 07 Января, 2011 - 23:14:51)

 
 Top
Demckiy Post Id


Полковник


Сообщений всего: 79
Дата рег-ции: Май 2010  



файл протеуса
Скачать файл: proteus1.zip
Скачан раз: 345
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Demckiy пишет:
if (Step) или if (Step>0) выполняется условие пока Step>0
Неверно.
CODE:
if (Step)
это то же самое, что и
CODE:
if ( Step != 0 )


ОЛЕГ пишет:
Михаил - он любит чужой код
Голливудская улыбка

PS У меня нет ни одной идеи о том, зачем фарам работать в режиме стробоскопа. Так что, я пас.
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  




что бы руку от коленки не отрывать, када гиббдэшников видешь (наверное) Помираю со смеху
 
 Top
Demckiy Post Id


Полковник


Сообщений всего: 79
Дата рег-ции: Май 2010  



Я на этом примере хочу разобраться,что бы одночастно работал ШИМ и выполнялась основная программа ... Объясните на другом примере....

PS Как сделать что бы несколько операций выполнялось параллельно...

(Отредактировано автором: 08 Января, 2011 - 08:20:15)

 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



МК стоит рублей... ну короче бюджетно
Demckiy пишет:
Как сделать что бы несколько операций выполнялось параллельно

ставить второй МК (если быть честным)
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



Demckiy пишет:
то бы одночастно работал ШИМ и выполнялась основная программа
ШИМ заводится аппаратный, а программа болтается как программа.
 
 Top
Белый Волк Супермодератор Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  



Demckiy
Если Вы сформулируете конкретную проблему - будет легче разобраться в ней.

1 Расскажите подробно, какая задача должна быть решена:
1.1 Описание задачи, при необходимости в связке с оборудованием. Например "Есть стандартный автомобиль. Изначально руль установлен в какое-то положение. Необходимо, чтобы при повороте руля на 90 градусов против часовой стрелки загоралась левая фара, а при 67 градусах по часовой - правая. При этом необходимо, чтобы зажигание фар происходило мягко на протяжении 2 секунд, а гашение мгновенно. На оси руля стоит энкодер L, я использую микроконтроллер Х"
1.2 Что конкретно Вы хотите получить в ответ. Например "Подскажите, каким образом управлять с помощью микроконтрллера зажиганием фар? Объясните в общих словах алгоритм"
2 Если у Вас есть наработки по этой теме - изложите их. Желательно код и словестное описание алгоритма к нему.
 
 Top
Demckiy Post Id


Полковник


Сообщений всего: 79
Дата рег-ции: Май 2010  



с помощью переключателя SW2 выбераем эффект мигания фарами :

— трижды в секунду одна фара (L2), пауза, трижды в секунду другая фара (L3) (PIND.3);

CODE:
if ((!PIND.0) & (!PIND.3==1))
{
PORTB.0=0; // off
delay_ms(300); // Задержка
PORTB.0=1; // on
delay_ms(300); // Задержка
PORTB.0=0; // off
delay_ms(300); // Задержка
PORTB.0=1; // on
delay_ms(300); // Задержка
PORTB.0=0; // off
delay_ms(300); // Задержка
PORTB.0=1; // on
delay_ms(300); // Задержка
PORTB.0=0; // off
delay_ms(700); // Задержка

PORTB.1=0; // off
delay_ms(300); // Задержка
PORTB.1=1; // on
delay_ms(300); // Задержка
PORTB.1=0; // off
delay_ms(300); // Задержка
PORTB.1=1; // on
delay_ms(300); // Задержка
PORTB.1=0; // off
delay_ms(300); // Задержка
PORTB.1=1; // on
delay_ms(300); // Задержка
PORTB.1=0; // off
delay_ms(700); // Задержка
}


— поочередное мигание фар (L2 и L3) (PIND.4);
CODE:

if ((!PIND.0) & (!PIND.4==1))
{
PORTB.0=0; // off
PORTB.1=0; // off
PORTB.0=1; // on
delay_ms(1000); // Задержка
PORTB.0=0; // off
PORTB.1=1; // on
delay_ms(1000); // Задержка
PORTB.1=0; // off
PORTB.0=1; // on
delay_ms(1000); // Задержка
PORTB.0=0; // off
PORTB.1=1; // on
delay_ms(1000); // Задержка
PORTB.1=0; // off
}



— двойное мигание обеими фарами (L2 и L3) (PIND.5)

CODE:
if ((!PIND.0 ) & (!PIND.5==1))
{
PORTB.0=0; // off
PORTB.1=0; // off
delay_ms(500); // Задержка
PORTB.0=1; // on
PORTB.1=1; // on
delay_ms(500); // Задержка
PORTB.0=0; // off
PORTB.1=0; // off
delay_ms(500); // Задержка
PORTB.0=1; // on
PORTB.1=1; // on
delay_ms(500); // Задержка
PORTB.0=0; // off
PORTB.1=0; // off
}


Но мигание фар только тогда когда нажата кнопка SW3;


С помощью ШИМа организовать от такие действия:

(кнопка SW4 имитирует открытие/закрытие двери)
— открыл дверь — мгновенное включение света (L1) в салоне;
— закрыл дверь — задержка выключения света (L1) на 7 секунд, после чего, свет плавно гаснет в течении секунд;
— если дверь открыта более 10 минут, - свет (L1) плавно гаснет .
(Добавление)
nest пишет:
Demckiy пишет:
то бы одночастно работал ШИМ и выполнялась основная программа
ШИМ заводится аппаратный, а программа болтается как программа.


ШИМ я завел апаратный, и в основном цыкле пишу программу какая управляет портами.

Но при это работает только одно ШИМ или управления портами.а что бы но работало одновременно не получается...(((

(Отредактировано автором: 08 Января, 2011 - 15:20:21)

 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



Demckiy пишет:
работает только одно ШИМ или управления портами
это как ?
 
 Top
Страниц (5): [1] 2 3 4 5 »
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru