roboforum.ru

Технический форум по робототехнике.

 

ПРОБЛЕМЫ С ПРОГРАММОЙ

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение Nemo » 20 ноя 2009, 21:55

Есть у меня программа, точнне исходник, роде все ОК, закомпелировать не могу... :RTFM: Вот тот исходник:
Код: Выделить всёРазвернуть
Chip type           : ATmega8
Program type        : Application
Clock frequency     : 8,000000 MHz
Memory model        : Small
External RAM size   : 0
Data Stack size     : 256
*****************************************************/

#include <mega8.h>
#include <stdlib.h>
#include <math.h>
#include <delay.h>
float red, green, blue;                     //now colors
unsigned int tred, tgreen, tblue;            //tagert colors
float delta_red, delta_green, delta_blue;       //величина прибавки за шаг
unsigned int time;                          //длительность шага


void generate_tagert_color(void)
{
      tred = rand();
      tgreen = rand();
      tblue = rand();
      tred = tred & 0xFF;          //to max 255
      tgreen = tgreen & 0xFF;
      tblue = tblue & 0xFF;
};

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

void main(void)
{

unsigned int temp1, temp2, temp3, temp4;

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

// Port C 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
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T 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
TCCR0=0x00;
TCNT0=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;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=FFh
// OC2 output: Non-Inverted PWM
ASSR=0x00;
TCCR2=0x69;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

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

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

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


while (1)
      {
           
       do
       {
        generate_tagert_color();
        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);
        };
       
       }
       

                                                   //значение прибавки. доходим до нужного цвета за 255 шагов
       delta_red = (float) (tred - red) / 255;
       delta_green = (float) (tgreen - green) / 255;
       delta_blue = (float) (tblue - blue) / 255;
     
       
       do
        {
          temp4 = rand() & 0x00FF;
        }
       while ((temp4 < 50) || (temp4 > 100));                       //скокрость перехода случайна от 5 до 10с
     
       time = ceil( ((float) temp4 / 255) * 100);                    //задержка должна быть целой
       
           
       do
       {
        if (tred != ceil(red))
         red = red + delta_red;
        if (tgreen != ceil(green))
         green = green + delta_green;
        if (tblue != ceil(blue))
         blue = blue + delta_blue;
       
        OCR1A = ceil(blue);
        OCR1B = ceil(green);
        OCR2 = ceil(red);
     
        delay(time);
       }
       while ((tred != ceil(red)) || (tgreen != ceil(green)) || (tblue != ceil(blue)));
       
       delay(time * 255);                                    //стремились к этому цвету, задержим его
       
     
      };     
}
:)Роботы идут:)
Аватара пользователя
Nemo
 
Сообщения: 50
Зарегистрирован: 26 июн 2008, 11:37
Откуда: Рига
Skype: smouk-nemo
прог. языки: С
ФИО: Даниил Биндюков

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение galex1981 » 20 ноя 2009, 22:00

И в чем проблема?
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение Nemo » 20 ноя 2009, 22:05

Не получается скомпелировать!!!
:)Роботы идут:)
Аватара пользователя
Nemo
 
Сообщения: 50
Зарегистрирован: 26 июн 2008, 11:37
Откуда: Рига
Skype: smouk-nemo
прог. языки: С
ФИО: Даниил Биндюков

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение galex1981 » 20 ноя 2009, 22:07

Напиши какие ошибки выдает компилятор
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение avr123.nm.ru » 20 ноя 2009, 22:09

Лучше ИМХО проект прицепить.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение MiBBiM » 20 ноя 2009, 23:15

точки с запятой убрать после объявления функций delay, generate_target_color
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение galex1981 » 20 ноя 2009, 23:18

Вообще они вроде не являются ошибками...
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение MiBBiM » 20 ноя 2009, 23:19

cvavr подсветил :pardon:
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение Nemo » 23 ноя 2009, 21:57

Я вообще не очень то хорошо разбираюсь в програмировании. У меня есть исходник програмы, я его в CodeVisionAVR скомпелировал (Make Projekt), перед тем как исправил все ошибки. А Hex фаила нету ..... : O
Вложения
z1-projekt.jpg
Последний раз редактировалось Nemo 23 ноя 2009, 22:01, всего редактировалось 1 раз.
:)Роботы идут:)
Аватара пользователя
Nemo
 
Сообщения: 50
Зарегистрирован: 26 июн 2008, 11:37
Откуда: Рига
Skype: smouk-nemo
прог. языки: С
ФИО: Даниил Биндюков

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение MiBBiM » 23 ноя 2009, 22:00

а project->compile не пробовал?
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение Nemo » 23 ноя 2009, 22:14

Делаю так -> опен -z1.prj- Make the projekt... и не чего не получилось
:)Роботы идут:)
Аватара пользователя
Nemo
 
Сообщения: 50
Зарегистрирован: 26 июн 2008, 11:37
Откуда: Рига
Skype: smouk-nemo
прог. языки: С
ФИО: Даниил Биндюков

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение galex1981 » 23 ноя 2009, 22:29

У меня в CVAVR есть меню Project и есть 3 подпункта его: Compile, Build, Build All.
Compile - это компиляция проекта - проверка на ошибки
Build, Build All - делают исполняемы код, то есть hex - файл - они то тебе и нужны
Build All - сначала очищают все файлы, созданные при компиляции, и делают их заново
Вложения
3.PNG
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение Master » 23 ноя 2009, 23:56

Nemo
1. Капс из темы убрать, нарушение правил.
2. Выложи архив проекта, найти ошибку будет намного проще, чем скриншоты сотреть.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение SSG » 24 ноя 2009, 14:09

Гы. А может хекс-файл бросается в какую-нибудь специальную папочку, не являющуюся папочкой в которой проект храниться? Посмотрите Project-Configure-Output Directories
I live My life!
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК

Re: ПРОБЛЕМЫ С ПРОГРАММОЙ

Сообщение galex1981 » 25 ноя 2009, 13:44

В новом CVAvr (v2.0 и выше) по-умолчанию в папку exe и кидается hex файл
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Mail.ru counter