roboforum.ru

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

CodeVisionAVR - версия 2!

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

Re: CodeVisionAVR - версия 2!

Сообщение MiBBiM » 25 авг 2011, 19:46

приоритет операции НЕ выше приоритета ИЛИ, сравните
Код: Выделить всёРазвернуть
DDRB&=~(1<<DDB6)|(1<<DDB5);
DDRB&=~(((1<<DDB6)|(1<<DDB5)));
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: CodeVisionAVR - версия 2!

Сообщение Korbofos » 10 окт 2011, 09:27

Почему этот код скомпелированный в авр студии, в железе работает отлично. А с кодевиженом какая-то еруда, сервы не встают в центр? У кодевижена своя математика :shock: ? Неохото в авр стидию переходить...
Код: Выделить всёРазвернуть
{
static char current_servo=1;
static unsigned int pause = 18432;
static unsigned int OCR33;
        if (current_servo == 9)
        {
         current_servo = 0;
         OCR33 += pause;
         OCR3C=OCR33;
         pause = 18432;
        }
        else
        {
         OCR33+=servo_position[current_servo];
         OCR3C=OCR33;
         pause -= servo_position[current_servo];
         current_servo++;
        }

   TCCR3C|=(1<<FOC3C);

}     
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Аватара пользователя
Korbofos
 
Сообщения: 317
Зарегистрирован: 15 янв 2011, 11:27
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр

Re: CodeVisionAVR - версия 2!

Сообщение chinga » 10 окт 2011, 14:39

при компиляции выводит "Evaluation version code size limit exceeded!", это типа е компилируется, с free version? а есть ссылки на кряканный CVAVR? я смотрел тут, все выводят "not find".
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: CodeVisionAVR - версия 2!

Сообщение Korbofos » 10 окт 2011, 18:20

РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Аватара пользователя
Korbofos
 
Сообщения: 317
Зарегистрирован: 15 янв 2011, 11:27
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр

Re: CodeVisionAVR - версия 2!

Сообщение Korbofos » 17 окт 2011, 20:57

Если мк тактируется от кварца в "конфигурации проекта" Cvavr надо какие то настройки менять?
Вложения
12.jpg
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Аватара пользователя
Korbofos
 
Сообщения: 317
Зарегистрирован: 15 янв 2011, 11:27
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр

Re: CodeVisionAVR - версия 2!

Сообщение chinga » 11 ноя 2011, 13:41

Здравствуйте.
у меня вот с CVAVR возникли проблемы.
написал программу что б Серво по градусам крутить
вот код
Код: Выделить всёРазвернуть
void servo_grad(int grad){
    int i=0;                                //180 = 2300
    unsigned int time;                      //0 = 500
    unsigned int time_s = 0;                //grad = 1 * 10 +500
    unsigned int time_u = 0;
    time = grad*10+500;
    time_s = 20000 - time;
    if(time_s%1000 > 0 ){
        time_u = time_s%1000;
        time_s = time_s/1000;
    }else{
        time_s = time_s/1000;
        time_u = 0;
    }
    for(i = 0; i<100; i++){
            PORTC.0 = 1;
            delay_us(time);
            PORTC.0 = 0;
            delay_ms(time_s);
            delay_us(time_u);
    }
}

вот здесь
Код: Выделить всёРазвернуть
delay_us(time*1);
и здесь
Код: Выделить всёРазвернуть
delay_us(time_u);
ошибку выдает: Error: C:\Users\NI\Desktop\cvavr_proj\SERVO_test1\a.c(37): constant integral expression required

в чем проблема? если некое число поставить, то нормально, но мне надо в зависимости от градуса крутить ее
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: CodeVisionAVR - версия 2!

Сообщение chinga » 13 ноя 2011, 14:17

а как можно еще управлять сервой?
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: CodeVisionAVR - версия 2!

Сообщение Korbofos » 13 ноя 2011, 14:47

РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Аватара пользователя
Korbofos
 
Сообщения: 317
Зарегистрирован: 15 янв 2011, 11:27
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр

Re: CodeVisionAVR - версия 2!

Сообщение chinga » 19 ноя 2011, 14:36

извините, еще такой вопрос, как вывести значение float?
Код: Выделить всёРазвернуть
float = c;
int k = 1;
c = (float)k*0.33;
printf("%f \r\n\0", c);
k++; 
delay_ms(2000);

у меня на терминале выводит 2f и все, хотя с меняется.

Добавлено спустя 2 часа 34 минуты 34 секунды:

а как установить? не получается, все же как некоммерческий работает.
chinga
 
Сообщения: 203
Зарегистрирован: 24 дек 2008, 17:55
Откуда: Актюбинск

Re: CodeVisionAVR - версия 2!

Сообщение Korbofos » 04 апр 2012, 18:54

Подскажите красиво ли переходить в прерывании в функцию
Код: Выделить всёРазвернуть
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
emergency_stop_count++;
if(emergency_stop_count>30)
  {
  motors_off();
  }
}

void motors_off (void)
{
TCCR1A=0x00;
TCCR1B=0x00;
PORTB&=~((1<<PORTB6)|(1<<PORTB7));
PORTC&=~((1<<PORTC7)|(1<<PORTC6));
DDRB&=~((1<<DDB6)|(1<<DDB5));       
DDRC&=~((1<<DDC7)|(1<<DDC6));
TCCR2=0x00;
TIMSK&=~(1<<TOIE2);
}


Или лучше содержимое функции motors_off переместить в само прерывание?
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Аватара пользователя
Korbofos
 
Сообщения: 317
Зарегистрирован: 15 янв 2011, 11:27
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр

Re: CodeVisionAVR - версия 2!

Сообщение boez » 05 апр 2012, 10:45

Красиво. Но долго :) Если в прерывании нет вызовов функций - компилятор сохраняет в стеке только те регистры, которые реально используются. А вот если есть - то все, которые по соглашению о вызовах функций могут портиться внутри функции. А их там больше десятка вроде. Поэтому лучше в прерываниях пользоваться макросами или inline-функциями.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: CodeVisionAVR - версия 2!

Сообщение Korbofos » 07 июн 2013, 09:57

Подскажите почему CV приемлет Булеву переменную только так
Код: Выделить всёРазвернуть
_Bool
,а так
Код: Выделить всёРазвернуть
bool
выдаёт ошибку :shock:
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Аватара пользователя
Korbofos
 
Сообщения: 317
Зарегистрирован: 15 янв 2011, 11:27
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр

Re: CodeVisionAVR - версия 2!

Сообщение Romikgy » 07 июн 2013, 11:26

#define bool _Bool
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

Re: CodeVisionAVR - версия 2!

Сообщение RoboHobbyRu » 07 июн 2013, 13:22

Korbofos, если речь идёт о типе переменной, такого типа в стандарте Си нет, вот они и, видимо, решили добавить этот тип, но "с оговоркой"
RoboHobbyRu
 
Сообщения: 203
Зарегистрирован: 04 май 2013, 10:35
Откуда: Тюмень

Re: CodeVisionAVR - версия 2!

Сообщение Korbofos » 24 июн 2013, 02:44

Ещё небольшой вопрос. Что будет если в основном цикле изменяем значение переменной или регистра, и в этот момент попытаемся изменить значение этой переменной в прерывании?
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Аватара пользователя
Korbofos
 
Сообщения: 317
Зарегистрирован: 15 янв 2011, 11:27
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр

Пред.След.

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

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

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