Page 1 of 2

Cтробоскоп на штатные фары на Attiny2313

Posted: 13 Dec 2010 11:28
by ma35tr0
Предлагаю сообразить стробоскоп на штатные фары авто на базе Attiny2313

Описание девайса:
  • — при кратковременном нажатии на рукоятку переключения фар ближний/дальний, трижды в секунду мигает одна фара, затем пауза 0,5сек., после чего мигает вторая фара. Это 1 цикл.
    если удерживать рукоятку (не отпускать), — мигание циклическое с указанной паузой. Если отпустить рукоятку, девайс должен завершить цикл, после чего фары гасятся.
    при включенных габаритах и/или ближнем свете фар, устройство работает в штатном режиме. Мигание обеих фар происходит за счет "дергивания" рукоятки.
В программировании не силён. Так что, прошивка "сырая". Не могу разобраЦа с прерываниями; не могу "заставить" МК принимать положительное напряжение на PINX :wall:
Надо сделать так, чтобы при подачи положительного напряжения на PINX, девайс мигал в штатном режиме.
Уже 1,5-2 месяца над этим бьюсь :wall:
Выкладываю черновую схему девайса и код программы.
черновая версия

Code: Select all

/*****************************************************
Project : строб на штатные фары
Version : 1.0
Date    :  10.10.2010
Author  : Freeware, for evaluation and non-commercial use only
Company : 
Comments:


Chip type               : ATtiny2313
AVR Core Clock frequency: 8,000000 MHz
Memory model            : Tiny
External RAM size       : 0
Data Stack size         : 32
*****************************************************/

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

// Declare your global variables here

void main(void)
{
// Declare your local variables here

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

// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=1 State2=1 State1=1 State0=1
PORTB=0x0F;
DDRB=0x0F;

// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

while (1)

{
PORTB=0xFF; // Инициализация порта B
DDRB=0xFF;

PORTD=0xFF; // Инициализация порта D
DDRD=0x00;

ACSR=0x80; // Инициализация аналогового компаратора


while(1)

if (PIND.0==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); // Задержка

//-----------------
    }
else {
PORTB.0=0;  // off
PORTB.1=0;  // off
}
}
}
Т.к. есть еще свободные порты, можно сделать джампер для выбора эффекта мигания (Например, поочередное мигание, двойное мигание обеими фарами и то, что Я описал выше) + добавить плавное гашение света в салоне авто. ПолучиЦа супер мега девайс.

Люди добрые!
Наставьте новичка на путь праведный. Объясните, как работать с прерываниями и подачей положительного напряжения к PINX :-)
Буду признателен за помощь знатоков :-)

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 13 Dec 2010 20:57
by Casper_pro
Вот тебе схемка, файл прошивки, проект в протеусе!
Тут всё учтено как ты хотел!

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 14 Dec 2010 15:21
by ma35tr0
Благодарю за помощь, Casper_pro !
И как Я не догадался инвертировать сигнал через транзюки :-) ведь на лампы сделал (управление плюсом) :jokingly:
Просмотрел код и нашел свою ошибку.
Спасибо! :-)

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 16 Dec 2010 15:25
by ma35tr0
Casper_pro, видать эту тему в двоем раскручивать будем :-)

Добавил переключатель (с замыканием на минус) для выбора эффекта мигания:
  • — трижды в секунду одна фара, пауза, трижды в секунду другая (PIND.2);
    — поочередное мигание фар (PIND.3);
    — двойное мигание обеими фарами (PIND.4)
Выложил прототип. Кликните по картинке, загрузиЦа Gif
СмотриЦа ничего :)

Добавил задержку света в салоне на 7 секунд. Концевики дверей подключены к PORTD5, с замыканием на минус.

Трабл в следующем:
  • — в протеусе симулирую открытые двери (PORTD5 замкнут на минус) и в этот момент пытаюсь помигать фарами
    (без разницы, какой эффект установлен и включены ли габариты), ничего не мигает :(
2 дня над этим голову ломаю :wall:
Не могу разобраЦа, почему не получаеЦа :scratch:

И еще, как реализовать ШИМ? Кто подскажет; примером объяснит? :-)
ХочеЦа сделать следующее:
  • — открыл дверь — мгновенное включение света в салоне;
    — закрыл дверь — задержка выключения света на 7 секунд, после чего, свет плавно гаснет в течении неск.секунд;
    — если дверь открыта более 10 минут, - свет плавно гаснет и без разницы, заведен двигатель или нет.
А у меня получилось резкое выключение света в салоне после 7-секундной выдержки. Совсем не тот эффект :(
Да и к тому же с косяками. Если двери открыты, помигать фарами не получаеЦа :sorry:

Люди добрые, помогите кто чем может :)

Вот код Си и схема:

Code: Select all

/*****************************************************
Project : Строб на штатные фары
Version : 1.0
Date    : 14.12.2010
Author  : Freeware, for evaluation and non-commercial use only
Company : ma35tr0
Comments: 3 режима мигания + плавное гашения света в салоне с задержкой


Chip type               : ATtiny2313
AVR Core Clock frequency: 8,000000 MHz
Memory model            : Tiny
External RAM size       : 0
Data Stack size         : 32
*****************************************************/

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

// Declare your global variables here

void main(void)
{
// Declare your local variables here

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

// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=1 State2=1 State1=1 State0=1
PORTB=0x0F;
DDRB=0x0F;

// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

while (1)

{
PORTB=0x00; // Инициализация порта B
DDRB=0xFF;

PORTD=0xFF; // Инициализация порта D
DDRD=0x00;

ACSR=0x80; // Инициализация аналогового компаратора


while(1)

if ((!PIND.0) & (!PIND.1))
{
PORTB.0=1;  // on
PORTB.1=1;  // on
 }

//----------------- ЭФФЕКТ #1: МИГАНИЕ ТРИЖДЫ В СЕКУНДУ - ЛЕВАЯ ФАРА, ПАУЗА, ПРАВАЯ ФАРА

else
if ((!PIND.0) & (PIND.1==1) & (!PIND.2==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); // Задержка
}

//----------------- ЭФФЕКТ #2: ПООЧЕРЕДНОЕ МИГАНИЕ - ЛЕВАЯ ФАРА, ПАУЗА, ПРАВАЯ ФАРА

else
if ((!PIND.0) & (PIND.1==1) & (!PIND.3==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
  }

//----------------- ЭФФЕКТ #3: МИГАНИЕ ОБЕИМИ ФАРАМИ 2 РАЗА С ПАУЗОЙ 0,5 СЕКУНД

else
if ((!PIND.0 ) & (PIND.1==1) & (!PIND.4==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

//-----------------ЗАДЕРЖКА СВЕТА В САЛОНЕ НА 7 СЕКУНД
}
else
if ((!PIND.5) & (!PIND.1==0) & (!PIND.0==0))
{
PORTB.0=0;  // off
PORTB.1=0;  // off
PORTB.2=1;  // on
delay_ms(7000); // Задержка 7 секунд
PORTB.2=0;  // off
//-----------------
}
else {
PORTB.0=0;  // off
PORTB.1=0;  // off
PORTB.2=0;  // off
}
}
 }

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 06 Jan 2011 17:10
by Demckiy
ШИМ работает...но одновременно с открытой дверью, фары через раз моргают...как это устранить???? ШИМ настроин на таймере0...

вот ссылка на исходник и файл протеуса.
http://narod.ru/disk/2846740001/2313.zip.html

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 10 Jan 2011 14:03
by ma35tr0
Demckiy wrote:ШИМ работает...но одновременно с открытой дверью, фары через раз моргают...как это устранить???? ШИМ настроин на таймере0...

вот ссылка на исходник и файл протеуса.
http://narod.ru/disk/2846740001/2313.zip.html


Поправил работу строба. Выкинул переключатель эффектов.
А вот с ШИМ-ом не разобрался. Это для меня пока еще загадка :wall:

У вас ШИМ запускаеЦа сразу. При нажатой кнопки, лампа плавно гаснет и опять плавно загораеЦа.

Нужно сделать так:
  • нажал на кнопку (дверь отркрыта) — запустился ШИМ. Лампочка в салоне плавно загорелась.
    отпустил кнопку (дверь закрыта) — лампочка горит еще 7 секунд, после чего плавно гаснет.
Вот Ваш исходник с коррективами строба:

Code: Select all

/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 04.01.2011
Author  : F4CG
Company : F4CG
Comments:


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>

#define LED PORTB.2

unsigned char tm;
unsigned char second;
unsigned char Direct=0;
unsigned char cnt;
unsigned char Step=0;



//****************************************
//Здесь будут обработчики прерываний
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
 /* tm++; //Увеличиваем на 1 значение tm
    if (tm==15)//если tm стала равна 15 то
      {
       second ++;//увеличиваем на 1 переменную second
       tm=0;//и обнуляем переменную tm
      }
     if (second==3)//если прошло 3 секунды
     {
       second = 0;//обнуляем переменную second
       LED=~LED;//и изменяем состояние порта PB0 на обратное
     } /**/


    if (Step)
  {
  cnt++;
//Каждый 20-й заход в прерывание
   if (cnt==50)
    {
     cnt=0;
     Step--;
  //254 шага увеличения ширины импульса
      if (Direct)
      {
        OCR0A=0xFE-Step; //254-0
      }
      else
      {
        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;
         //Step=0xFE;
         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) & (!PIND.1))
{
PORTB.0=1;  // on
PORTB.1=1;  // on
}


//----------------- ЭФФЕКТ: МИГАНИЕ ТРИЖДЫ В СЕКУНДУ - ЛЕВАЯ ФАРА, ПАУЗА, ПРАВАЯ ФАРА
else if ((!PIND.0) & (PIND.1==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); // Задержка



 }


else {
PORTB.0=0;  // off
PORTB.1=0;  // off

}
}
}

Я уже думаю, если не получиЦа релиазовать плавное включение/выключение света на ШИМ, то воспользуюсь кондёром и транзиком, а задержку реализую программно, на 7 сек.

АСЫЫЫЫЫЫЫЫЫ! Отзовитесь! :-)
SOS! SOS!

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 26 Jan 2011 12:58
by JiP
Разберитесь с включением силовых полевиков. Если ставите n-канальный в верхнее плечо, обязательно использование драйвера- иначе транзистор не откроется. p-канальные хуже по характеритикам (как правило) и управляются отрицательным напряжением.

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 26 Jan 2011 13:14
by ma35tr0
JiP wrote:Разберитесь с включением силовых полевиков. Если ставите n-канальный в верхнее плечо, обязательно использование драйвера- иначе транзистор не откроется. p-канальные хуже по характеритикам (как правило) и управляются отрицательным напряжением.
Спасибо за совет!
Я планирую к транзюкам авто релюху приделать. Т.е. коммутация фар будет релейное.
А свет в салоне - транзюк.
Подскажите, пожалуйста, какой транзистор лучше ставить?


И как быть с ШИМ? :(
Сколько времени уже и-нет ковыряю... Пока ничего :(

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 26 Jan 2011 15:04
by JiP
Транзистор лучше поставить управляемый логическим уровнем, что-нить из серии IRFL0xx- смотрите по токам нагрузки. Если обычная салонная лампа- IRFL044 хватит с головой- он ампер 6-8 вроде протащить должен. Почему выбор на полевики пал? Посмотрите DS на, например, BC337 и BC817- обычные биполярники, до полуампера тока, мелкие (особенно второй- SOT-23 корпус), дешевые.
С ШИМом наворотили, ИМХО. :) рекомендую на втором счетчике поднять генератор переполнения каждые 0.1 сек, в обработчик запихать инкременты необходимых переменных и на основании их моргать фарами, осчитывать секунды до погасания лампочки, плавный инкремент-декремент регистра ШИМа и т.д.- просто будете знать, что каждые 0.1 сек контроллер уходит в прерывание по переполнению таймера. У Вас-же получается, что большую часть цикла он сидит и отсчитывает задержки ("nop", или "delay"), так не делают в основном цикле- для быстрой реакции приходится использовать внешнее прерывание.

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 26 Jan 2011 15:14
by ma35tr0
JiP wrote:рекомендую на втором счетчике поднять генератор переполнения каждые 0.1 сек, в обработчик запихать инкременты необходимых переменных и на основании их моргать фарами, осчитывать секунды до погасания лампочки, плавный инкремент-декремент регистра ШИМа и т.д.- просто будете знать, что каждые 0.1 сек контроллер уходит в прерывание по переполнению таймера. У Вас-же получается, что большую часть цикла он сидит и отсчитывает задержки ("nop", или "delay"), так не делают в основном цикле- для быстрой реакции приходится использовать внешнее прерывание.
Всё это для меня что-то загадочное :scratch:
Я вообще с шимом и внешними прерываниями не дружу :(
Вот, ща сижу и читаю. За эти неск. дней столько всего... Нет! Не узнал :(
Везде по разному пишут и комменты разные.
Работаю методом научного тыка, авось заработает. Да вот не получаеЦа пока.
Мне бы исходник для CVAVR с комментами.

ШИМ и прерывания - всё это пока грёзы :(

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 26 Jan 2011 15:33
by JiP
В CVAVR прекрасный мастер начальной инициализации. Вам надо всего-лишь правильно инициализировать два счетчика. Один отдать под ШИМ (есть там такой параметр Fast PWM, top 0xFF), второй настроить на генерацию прерывания каждые 0.1 сек. Это именно то, с чего бы начал я. С шимом работать проще простого- при правильно инициализированном, просто записываете нужное число в его регистр, остальное он делает сам. Ваша задача в теле программы- определиться, какое число и когда записать.
Мне бы исходник для CVAVR с комментами.
- тут важно определиться, для чего этот проект, если только ради готового устройства- может и заморачиваться не стоит- проще попросить за небольшую денюжку разработать, если хотите научиться- грызите гранит (и даташиты с аппноутами). :)

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 26 Jan 2011 15:44
by ma35tr0
JiP wrote:- тут важно определиться, для чего этот проект
Не только ради готового устройста, а для того, чтобы самому че-то сделать.
Я с 8 лет в ДОСААФ ходил, потом на радиокружок записался и до 9 класса ходил
И радио собирал, и ЦМУ.. Короче, чего только не собирал :)

Потом как-то не до этого было - выпускной, армия и т.д...

Это больше для души, нежели факт готового устройства.
Купить - проще простого и особого ума не надо. Я же хочу сам :)
Вот и нужен мне наставник :)

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 26 Jan 2011 16:01
by JiP
Тогда надо много читать.
На первых порах крайне рекомендую составлять блок-схему алгоритма, работа устройства становится гораздо прозрачнее. Как готов алгоритм со всеми переходами, уже переность в проект.
Посмотрите в сети- есть куча сайтов по МК для новичков, с примерами правильного кода- может что-то оттуда надергать, чтоб не изобретать велосипед.
Одно скажу точно- использовать delay_ms(300) или (700) в основном цикле- зло. У Вас кристалл молотит на 4 МГц- это почти 4 млн операций в сек, но он тупо простаивает, отсчитывая задержку пустыми тактами. Фарками помаргали- минус ~15 млн операций, часть которых могла быть полезна.

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 14 Feb 2011 19:26
by Kenny
а нет ли случайно схемы с прошивкой на реле поворотов на аттини2313?)) :-)

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 16 Feb 2011 19:11
by Casper_pro
Kenny wrote:а нет ли случайно схемы с прошивкой на реле поворотов на аттини2313?)) :-)
Да ти чего!!!? Зачем тратить сто рублей на тини если есть схемы на полевиках на которые потратишь от силы рублей 30!

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 17 Feb 2011 07:35
by ma35tr0
Kenny wrote:а нет ли случайно схемы с прошивкой на реле поворотов на аттини2313?)) :-)
Ты хочешь заменить штатное реле поворотов?
В таком случае, зачем тебе МК?
Полностью согласен с Casper_pro

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 17 Feb 2011 16:13
by Kenny
та просто еще туда пару функций засунуть хотел) На сигналке есть лишний канал - хотел использовать его как триггер для включения фар. ПС : на скутер :-)

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 16 Jun 2012 10:57
by ma35tr0
На всеобщее обозрение предлагаю рабочую схему:

Основные функции:
• строб на штатные фары (3 эффекта мигания);
• выключение габаритов/фар при постановке на охрану;
• включение/выключение одной кнопкой без фиксации.

Управление устройством осуществляет микроконтроллер ATTINY2313 (ATMEL).

Функция стробоскоп
Мигание фарами производится кратковременным нажатием [HAND].
В этом случае запускается 1 цикл мигания. При удержании [HAND] цикл повторяется N раз. После отпускания кнопки, фары погаснут после полного завершения цикла.

В память МК записаны 3 эффекта мигания:
• Эффект №1 Тройное мигание каждой фары с паузой;
• Эффект №2 Двойное мигание обеими фарами с паузой;
• Эффект №3 Попеременное мигание фар без паузы
Выбор активного эффекта производится переключателем (см. схему).

ВНИМАНИЕ!
Функция стробоскоп РАБОТАЕТ:
• При выключенном внешнем освещении;
• При включенных габаритных огнях.

Функция стробоскоп НЕ РАБОТАЕТ:
• При включенном ближнем свете фар.
В данном случае мигание производится в штатном режиме


Сигнал [LOCK]
Необходимая функция для тех, кто часто забывает выключать наружное освещение.
[LOCK] подключается к lock-сигналу с блока автосигнализации и/или центрального замка.
В данном случае, при включенном наружном освещении, нажав на кнопку запирания дверей, оно будет выключено.

Описание работы:
При подключении питания сразу загорается зеленый светодиод, индицируя наличия питания и дежурного режима устройства.
ПЕРВОЕ кратковременное нажатие на кнопку [ON/OFF], включает габаритные огни. В этот момент меняется состояние светодиодов: зеленый гаснет (дежурный режим), красный загорается (активный режим).
ВТОРОЕ кратковременное нажатие включает ближний свет фар. Состояние светодиодов не менятся
ТРЕТЬЕ кратковременное нажатие выключает всё внешнее освещение. Красный светодиод гаснет (активный режим), зеленый загорается (дежурный режим).
Далее покругу.


Если удерживать кнопку [ON/OFF] около 2 сек. при включенном ближнем свете фар, то они погаснут, а габаритные огни все еще будут гореть.
Красный светодиод горит (активный режим), зеленый погашен (дежурный режим).

Если удерживать кнопку [ON/OFF] около 2 сек. при включенных габаритах, то габаритные огни выключаются.
Красный светодиод погаснет (активный режим), зеленый загорится (дежурный режим).

Прилагаю схему, прошивку, разводку ПП и фотки собранного девайса + видео на макетке
схема
схема
плата
плата
готовое устройство
готовое устройство
Видео
http://youtu.be/J35XA0Jekow

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 19 Jun 2012 22:55
by hardlock
ma35tr0, отлично! Не могли бы Вы выложить плату в Спринте?

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 20 Jun 2012 08:21
by pit05
Прилагаю схему, прошивку
Может чиво недопонял,но прошывку я ненашол,ткните пальцем!Где написано о фюзах?

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 20 Jun 2012 10:40
by ma35tr0
hardlock wrote:ma35tr0, отлично! Не могли бы Вы выложить плату в Спринте?
пытаюсь, но ту такое сообщение выходит:
"strobe_pcb.lay => Расширение lay запрещено администратором"

Добавлено спустя 8 минут 38 секунд:
pit05 wrote:
Прилагаю схему, прошивку
Может чиво недопонял,но прошывку я ненашол,ткните пальцем!Где написано о фюзах?
Пардон!
Схему и печатку на работе чертил, а вот над прошивкой дома работал, потому вот так :)

прошивка:

Code: Select all

:100000000AC018951895189518951895189518956B
:100010001895189518958FED8DBFC0ECE8EA4E2E17
:10002000DD275D2EEEE7F0E0A0E6B0E088278D93B7
:100030003197E9F7662484E68093620084E6809332
:1000400063008AEF809364008C9A8D9ABA9ABB9A67
:10005000899ABC9A88988A988B988E98B898B998FB
:1000600000916000003009F002C0919A02C091989E
:10007000C49A80E0809361008B98A6E69C9197FFDC
:1000800004C083990EC09F779C93839B0AC08BE426
:100090009F9399273CD29F91839B03C090689C9328
:1000A000D1D18A98A6E69C9196FF04C082990EC091
:1000B0009F7B9C93829B0AC08BE49F93992727D2B6
:1000C0009F91829B03C090649C9300D280E08093B8
:1000D0006100A0E30C9100FB81E00EF080E08F93C3
:1000E000A0E30C9106FB81E00EF480E09F91892350
:1000F000882309F403C081E080936100A0E30C91A0
:1001000000FB81E00EF080E08F93A6E30C9100FBF2
:1001100081E00EF480E09F918923882309F403C0D5
:1001200082E080936100A0E30C9100FB81E00EF07F
:1001300080E08F93A6E30C9101FB81E00EF480E058
:100140009F918923882309F403C083E08093610091
:10015000A0E30C9100FB81E00EF080E08F93A0E320
:100160000C9106FB81E00EF480E09F9189238F9330
:1001700000916000023081E009F080E09F918923C6
:10018000882309F403C084E080936100A0E30C910C
:1001900000FB81E00EF080E08F93A6E30C9100FB62
:1001A00081E00EF480E09F9189238F93009160009D
:1001B000023081E009F080E09F918923882309F4CF
:1001C00003C084E080936100A0E30C9100FB81E018
:1001D0000EF080E08F93A6E30C9101FB81E00EF41A
:1001E00080E09F9189238F9300916000023081E02D
:1001F00009F080E09F918923882309F403C084E0FB
:100200008093610000916000003009F002C0919A73
:1002100002C09198C49AA0E30C9100FB81E00EF417
:1002200080E08F9300916000013081E009F080E070
:100230009F918923882309F404C0949A9598C298C1
:10024000C398A0E30C9100FB81E00EF480E08F9353
:1002500000916000023081E009F080E09F918923E5
:10026000882309F404C0949A959AC298C398A0E38D
:100270000C9100FB81E00EF480E08F930091600010
:10028000033081E009F080E09F918923882309F4FD
:1002900004C094989598C298C398A0E30C9100FB71
:1002A00081E00EF080E08F93A0E30C9101FB81E0F0
:1002B0000EF480E09F918923882309F404C0949A66
:1002C0009598C29AC39AA0E30C9100FB81E00EF0CE
:1002D00080E08F93A0E30C9101FB81E00EF080E0C1
:1002E0009F918923882309F404C094989598C29A11
:1002F000C39AA0E30C9100FB81E00EF480E08F93A1
:10030000A0E30C9101FB81E00EF080E09F91892336
:10031000882309F404C094989598C298C3980091D2
:100320006100013009F03EC0C298C398A2E68C91EA
:100330009927EDD0C29AA2E68C919927E8D0C2986D
:10034000A2E68C919927E3D0C29AA2E68C919927D4
:10035000DED0C298A2E68C919927D9D0C29AA2E6A3
:100360008C919927D4D0C298C398A2E68C919927F2
:10037000CED0C39AA2E68C919927C9D0C398A2E6A1
:100380008C919927C4D0C39AA2E68C919927BFD0AB
:10039000C398A2E68C919927BAD0C39AA2E68C9111
:1003A0009927B5D000916100023009F01EC0C298B3
:1003B000C398A3E68C919927AAD0C29AC39AA3E6C0
:1003C0008C919927A4D0C298C398A3E68C919927C1
:1003D0009ED0C29AC39AA3E68C91992798D0C298CE
:1003E000C398A4E68C91992792D0009161000330C4
:1003F00009F01AC0C298C39AA4E68C91992787D0B5
:10040000C29AC398A4E68C91992781D0C298C39AC6
:10041000A4E68C9199277BD0C29AC398A4E68C91CC
:10042000992775D0C298C39A00916100043009F0F1
:1004300008C0C298C398C29AC39AA4E68C9199271F
:1004400066D00ECE839B21C0A5E68C918F5F8C93E6
:1004500082E390E05CD000916500083208F414C09B
:1004600080916000815080936000009160000030B6
:1004700009F006C080E082BB80E080936000C498F1
:1004800080E08093650021C0DDCFA0E68C918F5F76
:100490008C9300916000033009F006C080E082BBBD
:1004A00080E080936000C49800916000013009F002
:1004B00003C080E182BB05C0023009F002C080E3C6
:1004C00082BB089580E080936500089580E080936A
:1004D000600080E082BB80E080936000C49800915F
:1004E0006000033009F002C080E082BB80E991E047
:1004F0000ED080E88ABF0895F894FFCF3197F1F7C6
:100500000895689462F80895E89462F80895EF9366
:10051000FF93EE27E82BE92B31F0E8EEF3E031977B
:0C052000F1F70197D1F7FF91EF910895DA
:00000001FF
фьюзы
фьюзы для автостроба
фьюзы для автостроба
дерзайте!

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 20 Jun 2012 12:31
by hardlock
ma35tr0 wrote:"strobe_pcb.lay => Расширение lay запрещено администратором"
упакуйте RARом и прошивку тоже. Можно всё в один файл. На хостинге мало места - вынужденная мера.

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 20 Jun 2012 13:27
by ma35tr0
Все в одном архиве
strobe_full.zip
Все в одном архиве, кроме файла proto.gif (архив превышает :( )
(128.71 KiB) Downloaded 527 times

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 19 Aug 2012 03:14
by Kenny
Посоветуйте как сделать коммутацию +12 ? То есть 3 лампы в фаре, общий минус.

Re: Cтробоскоп на штатные фары на Attiny2313

Posted: 19 Aug 2012 09:09
by ma35tr0
реле