Компилирование в HEX

  • Автор темы Автор темы Weles
  • Дата начала Дата начала

Weles

Лентяй
Поддержка
Регистрация
13 Апр 2009
Сообщения
16,556
Реакции
289
Баллы
0
Компилирование в HEX

Ребята, кто умеет компилировать, скомпилируйте пожалуйста в hex:D:
Код:
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 06.08.2009
Author  : 
Company : 
Comments: 


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

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


unsigned char sred, sgreen, sblue;            //showing colors


int red, green, blue;                         //now colors
unsigned int tred, tgreen, tblue;             //tagert colors
int delta_red, delta_green, delta_blue;       //величина прибавки за шаг
unsigned int time = 1;                        //длительность шага


void delay(unsigned int delayt)               //задержка delay_ms() на вход принимает только константу( 
{
  while (delayt != 0)
  {
    delay_ms(1);
    delayt--;
  };
};


void main(void)
{

unsigned int temp1, temp2, temp3, temp4;

// 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=Out Func3=Out Func2=Out Func1=In Func0=In 
// State7=T State6=T State5=T State4=0 State3=0 State2=0 State1=T State0=T 
PORTB=0x00;
DDRB=0x1C;

// 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: 8000,000 kHz
// Mode: Fast PWM top=FFh
// OC0A output: Non-Inverted PWM
// OC0B output: Disconnected
TCCR0A=0x83;
TCCR0B=0x01;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=00FFh
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x09;
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=0x01;

srand(1);             //инициализируем рандомайзер этим значением


while (1)
{

    do 
    {
        tred = rand()&0xFF;
        tgreen = rand()&0xFF;
        tblue = rand()& 0xFF;
		
        temp1 = (abs(tred - tgreen));
        temp2 = (abs(tred - tblue));
        temp3 = (abs(tgreen - tblue));
    }
    while (( temp1 < 150 ) && (temp2 < 150) && (temp3 < 150));     //если все цвета будут примерно равные то будет белый что не интересно

	
    if (rand() < 13100)                                            //c вероятностью 0,4 (32767) вышибаем один цвет
    {
		do
        {
            temp4 = rand() & 0x000F ;
        }
        while ((temp4 == 0) || (temp4 > 3));
       
        if (temp4 == 1)                                            //не повезло красному
        {                                                          //гасим до 0 - 20% от исходного
           do
           {
			temp4 = rand() & 0x0FFF;
           }
           while ((temp4 == 0) || (temp4 > 3276));
          
           tred = ceil ((float) (temp4 / 32767) * tred);
        };
        
        if (temp4 == 2)
        {
          do
           {
             temp4 = rand() & 0x0FFF;
           }
          while ((temp4 == 0) || (temp4 > 3276));
          
          tgreen = ceil ((float) (temp4 / 32767) * tgreen);
        };
        
        if (temp4 == 3)
        {
          do
           {
             temp4 = rand() & 0x0FFF;
           }
          while ((temp4 == 0) || (temp4 > 3276));
          
          tblue = ceil ((float) (temp4 / 32767) * tblue);
        };
        
    };

    delta_red = (tred - sred); 
    delta_green = (tgreen - sgreen);
    delta_blue =  (tblue - sblue); 
  
  

    do 
    {
        sred=((red&0xFF00)/256);
        sgreen=((green&0xFF00)/256);  
        sblue=((blue&0xFF00)/256);
        
        if ((tred) != (sred))
          red = red + delta_red;
        
        if ((tgreen) != (sgreen))
          green = green + delta_green;
         
        if ((tblue) != (sblue))
          blue = blue + delta_blue;


        OCR1B = sred;
        OCR1A = sgreen;
        OCR0A = sblue;
    
        delay(time);
      
    }
    while ((tred != (sred)) || (tgreen != (sgreen)) || (tblue != (sblue))); 


    delay(time * 255);                                 //стремились к этому цвету, задержим его
    
    
    time = 1 + rand()&0x0F;                            // 1 до 16 варьируется задержка, числа подобраны экспериментально
                                                       //делаем после что бы включалось плавно и быстро
     
};   

}
Я не умею и вин-авр не знаю как скачать, и вообще ........:D:D:D
 
А под какой микроконтроллер?
 
Всё, почёл...
Решил лампу настроения на ATtiny2313 сделать? А где схема?
 
Я давно хотел это сделать, тоже тему создал, но ни кто не скопировал)))
Может тебе скомпилируют))) жду с нетерпением!!!!
Валерий, схема вот она Лампа настроения — LicrymWiki
Была бы прошивка собрал бы на tiny2313, дешевле выходит))))
 
А вот и схема, то же самое, просто я подумал что атмега8 слишком большая для такой по сути игрушки:D И был прав:D Даже думаю что можно было бы это запихать и в более мелкий контроллер, типа аттини 13:D На тринадцатой аттини кстати видел эмулятор пламени свечи, причём на 3 свечи:D
 

Вложения

  • Moodlamp_scheme2.webp
    Moodlamp_scheme2.webp
    25.9 KB · Просмотры: 779
Компилятор находит ошибки.
 
Плохо:( Возможно какую то часть кода надо исключить. Попробуй вот так может:D
Код:
Chip type           : ATtiny2313
Clock frequency     : 8,000000 MHz
Memory model        : Tiny
External RAM size   : 0
Data Stack size     : 32
*****************************************************/

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


unsigned char sred, sgreen, sblue;            //showing colors


int red, green, blue;                         //now colors
unsigned int tred, tgreen, tblue;             //tagert colors
int delta_red, delta_green, delta_blue;       //величина прибавки за шаг
unsigned int time = 1;                        //длительность шага


void delay(unsigned int delayt)               //задержка delay_ms() на вход принимает только константу( 
{
  while (delayt != 0)
  {
    delay_ms(1);
    delayt--;
  };
};


void main(void)
{

unsigned int temp1, temp2, temp3, temp4;

// 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=Out Func3=Out Func2=Out Func1=In Func0=In 
// State7=T State6=T State5=T State4=0 State3=0 State2=0 State1=T State0=T 
PORTB=0x00;
DDRB=0x1C;

// 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: 8000,000 kHz
// Mode: Fast PWM top=FFh
// OC0A output: Non-Inverted PWM
// OC0B output: Disconnected
TCCR0A=0x83;
TCCR0B=0x01;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=00FFh
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x09;
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=0x01;

srand(1);             //инициализируем рандомайзер этим значением


while (1)
{

    do 
    {
        tred = rand()&0xFF;
        tgreen = rand()&0xFF;
        tblue = rand()& 0xFF;
		
        temp1 = (abs(tred - tgreen));
        temp2 = (abs(tred - tblue));
        temp3 = (abs(tgreen - tblue));
    }
    while (( temp1 < 150 ) && (temp2 < 150) && (temp3 < 150));     //если все цвета будут примерно равные то будет белый что не интересно

	
    if (rand() < 13100)                                            //c вероятностью 0,4 (32767) вышибаем один цвет
    {
		do
        {
            temp4 = rand() & 0x000F ;
        }
        while ((temp4 == 0) || (temp4 > 3));
       
        if (temp4 == 1)                                            //не повезло красному
        {                                                          //гасим до 0 - 20% от исходного
           do
           {
			temp4 = rand() & 0x0FFF;
           }
           while ((temp4 == 0) || (temp4 > 3276));
          
           tred = ceil ((float) (temp4 / 32767) * tred);
        };
        
        if (temp4 == 2)
        {
          do
           {
             temp4 = rand() & 0x0FFF;
           }
          while ((temp4 == 0) || (temp4 > 3276));
          
          tgreen = ceil ((float) (temp4 / 32767) * tgreen);
        };
        
        if (temp4 == 3)
        {
          do
           {
             temp4 = rand() & 0x0FFF;
           }
          while ((temp4 == 0) || (temp4 > 3276));
          
          tblue = ceil ((float) (temp4 / 32767) * tblue);
        };
        
    };

    delta_red = (tred - sred); 
    delta_green = (tgreen - sgreen);
    delta_blue =  (tblue - sblue); 
  
  

    do 
    {
        sred=((red&0xFF00)/256);
        sgreen=((green&0xFF00)/256);  
        sblue=((blue&0xFF00)/256);
        
        if ((tred) != (sred))
          red = red + delta_red;
        
        if ((tgreen) != (sgreen))
          green = green + delta_green;
         
        if ((tblue) != (sblue))
          blue = blue + delta_blue;


        OCR1B = sred;
        OCR1A = sgreen;
        OCR0A = sblue;
    
        delay(time);
      
    }
    while ((tred != (sred)) || (tgreen != (sgreen)) || (tblue != (sblue))); 


    delay(time * 255);                                 //стремились к этому цвету, задержим его
    
    
    time = 1 + rand()&0x0F;                            // 1 до 16 варьируется задержка, числа подобраны экспериментально
                                                       //делаем после что бы включалось плавно и быстро
     
};   

}
А какие ошибки пишет? Я просто вин авр только один раз видел но помоему что то вроде майкрософт визуал студио, там ошибки в коде показывались.
 
Какая ошибка? Нету дирректории #include <tiny2313.h> ?
У меня тоже такая ошибка была, дело в компиляторе, а сама программа правильная!
 
Да, именно так.
 
А ну так мож обновить вин авр надо, я на их сайте видел обновки да чё то вообще не понял никак студио скачать ни как обновки:D
 
Валер, н знаю чем ты компилировал, вот мои попытки в этой теме http://www.tehnari.ru/f42/t61997/
К сожалению безуспешные попытки)))
 
Вот, ну тогда надо собирать пробник раз теперь прошивка есть:D Валер как получилось?
 
Тут у нас на базы подаётся +5в я так понимаю?
 
Да мне тоже интересно, как получилось? И в какой программной среде это получилось? )))
 
Прошилось без проблем, теперь попробую собрать:D Для начала попробую на трёх индикаторных светодиодах без транзюков и резисторв, тоесто на голую тиньку:D
 
Влад резисторы уж изволь поставить!!!! Сгорит тогда и МК и светодиоды!!! Все таки 5 В прикладывается к СД, и макс ток у МК вроде только 40мА...
 
Мк не должно:D Ну ладно фиг с ним поставлю:D
 
МК не должно, а светодиоды пусть горят :D нет уж не ленись, поставь :)
Интересно, а фьюзы как надо выставлять?
 
Не работает, на 6 выводе 0.2в на остальных нету, есть на других по 1.2в но с другой стороны:D И на ресете 4.5в. Фьюзы не трогал, не знаю как их выставить на тактирование от внутреннего генератора 8мГц, боюсь, кучка трупиков по фьюзам уже лежит:D
 
Назад
Сверху