Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

CodeVisionAVR 2.60

Непрочитано 03.02.2014, 23:54  
Арктур
Почётный гражданин KAZUS.RUN
 
Аватар для Арктур
 
Регистрация: 29.10.2012
Сообщений: 2,930
Сказал спасибо: 7
Сказали Спасибо 3,471 раз(а) в 1,771 сообщении(ях)
Арктур на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Сообщение от olc0267 Посмотреть сообщение
А как так получилось? Где вызов функции delay, и возврат из неё? Компилятор слил две функции в одну - вот это оптимизация!
Так это же и есть оптимизация.

Сообщение от olc0267 Посмотреть сообщение
Маленький тест.
int volatile a
int a
А вот что сделал CV для обоих вариантов абсолютно одинаково...
2. Какой из компиляторов умнее?
Что как бы намекает... у CVAVR все переменные... - volatile, что ли ?
Реклама:
Арктур вне форума  
Непрочитано 03.02.2014, 23:59  
olc0267
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.08.2008
Адрес: Ярославль
Сообщений: 1,504
Сказал спасибо: 115
Сказали Спасибо 1,314 раз(а) в 548 сообщении(ях)
olc0267 на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Сообщение от Арктур Посмотреть сообщение
Что как бы намекает... у CVAVR все переменные... - volatile, что ли ?
Да похоже на то. А кому от этого хуже? Зато у малоопытных программистов проблем меньше.
olc0267 вне форума  
Непрочитано 04.02.2014, 00:04  
Арктур
Почётный гражданин KAZUS.RUN
 
Аватар для Арктур
 
Регистрация: 29.10.2012
Сообщений: 2,930
Сказал спасибо: 7
Сказали Спасибо 3,471 раз(а) в 1,771 сообщении(ях)
Арктур на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Редко кто из этих начинающих потом , после CV, может перейти на профессиональный эффективный компилятор.
Арктур вне форума  
Непрочитано 04.02.2014, 00:13  
olc0267
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.08.2008
Адрес: Ярославль
Сообщений: 1,504
Сказал спасибо: 115
Сказали Спасибо 1,314 раз(а) в 548 сообщении(ях)
olc0267 на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

А лично мне это и не надо. Я железячник, а не программист. Программирую нечасто. Если бюджет проекта позволяет, я промышленный панельный компьютер куплю и насую туда проприетарного софта. Если понадобится - несложную программу под винду могу и сам сговнякать.
А AVR - это для меня мелкие шабашки, да для себя, от скуки.
Существует же бейсик, после которого, как говорят, люди на Си писать уже не могут.

Последний раз редактировалось olc0267; 04.02.2014 в 00:16.
olc0267 вне форума  
Непрочитано 04.02.2014, 00:20  
Арктур
Почётный гражданин KAZUS.RUN
 
Аватар для Арктур
 
Регистрация: 29.10.2012
Сообщений: 2,930
Сказал спасибо: 7
Сказали Спасибо 3,471 раз(а) в 1,771 сообщении(ях)
Арктур на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Ситуация такая, что почти все подсевшие на CV, Flowcode..., рьяно защищают его.
Причём, объясняют так - если лично их это устраивает, то значит - устроит всех!
Арктур вне форума  
Непрочитано 04.02.2014, 01:27  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Сообщение от olc0267 Посмотреть сообщение
А какие задачи собираетесь выполнять с такими числами?
Да ладно вам - АВР такой CPU как и другие, только медленный по нашему времени. И 8-битный к тому же. И что с того?
Сообщение от olc0267 Посмотреть сообщение
Если подключить внешний АЦП, например, DS18B20, так у него разрядность 12бит и интерфейс настолько медленный, что нет необходимости очень быстро считать floating point.
Flash память объёмом до 256кБ позволяет много чего напихать туда. И чем ядро быстрее просчитает float тем лучше. Во всех компиляторах для АВР поддержка float есть. Почему бы и не использовать эти типы?
Сообщение от olc0267 Посмотреть сообщение
16-битного целочисленного представления для решения почти любой задачи на AVR должно хватать.
Считаю во float расстояния между двуми точками пришедшими от GPS-приёмника. Можно в целых конечно. Но зачем?
_Артём_ вне форума  
Непрочитано 04.02.2014, 08:59  
olc0267
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.08.2008
Адрес: Ярославль
Сообщений: 1,504
Сказал спасибо: 115
Сказали Спасибо 1,314 раз(а) в 548 сообщении(ях)
olc0267 на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Я не защищаю CV, и не заставляю никого им пользоваться.
Поставил сейчас последнюю демо-версию V3.08.
Теперь в меню появился такой пункт : "Export to CodeVision AVR Extension for Atmel Studio". Короче, есть возможность по-быстрому накидать проект в CV, а компилировать в GCC. Тем более, что CV всё равно использует отладчик от Atmel Studio.
olc0267 вне форума  
Непрочитано 04.02.2014, 09:43  
olc0267
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.08.2008
Адрес: Ярославль
Сообщений: 1,504
Сказал спасибо: 115
Сказали Спасибо 1,314 раз(а) в 548 сообщении(ях)
olc0267 на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Сообщение от _Артём_ Посмотреть сообщение
Да ладно вам - АВР такой CPU как и другие, только медленный по нашему времени. И 8-битный к тому же. И что с того?

Flash память объёмом до 256кБ позволяет много чего напихать туда. И чем ядро быстрее просчитает float тем лучше. Во всех компиляторах для АВР поддержка float есть. Почему бы и не использовать эти типы?

Считаю во float расстояния между двуми точками пришедшими от GPS-приёмника. Можно в целых конечно. Но зачем?
Так Вы определитесь, какие вычисления Вам нужны - быстрые, или точные?
Если и то и другое, то AVR - явно не та платформа.

ЗЫ. Блин, поторопился я радоваться. Расширение Atmel Studio для CV всего-навсего интегрирует CV вовнутрь себя и использует не GCC, а компилятор CV.

Последний раз редактировалось olc0267; 04.02.2014 в 11:54.
olc0267 вне форума  
Непрочитано 04.02.2014, 12:12  
vgtmaster
Прописка
 
Регистрация: 28.04.2008
Сообщений: 141
Сказал спасибо: 11
Сказали Спасибо 18 раз(а) в 9 сообщении(ях)
vgtmaster на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Господа подскажите что не так, вот код:

Atmega8

Написано на WinAVR

int main (void)
{
DDRD = 0xFF;
DDRB |= (1 ‹‹ PB0)|(1 ‹‹ PB1)|(1 ‹‹ PB2)|(1 ‹‹ PB3);
PORTD = 0x00;
PORTB = 0x00;
DDRC = 0x00;

TIMSK |= (1 ‹‹ TOIE2); // разрешение прерывания по таймеру2
TCCR2 |= (1 ‹‹ CS21); //предделитель на 8

ADCSRA |= (1 ‹‹ ADEN) // разрешение АЦП
|(1 ‹‹ ADSC) // запуск преобразования
|(1 ‹‹ ADFR) // непрерывный режим работы АЦП
|(1 ‹‹ ADPS2)|(1 ‹‹ ADPS1)|(0 ‹‹ ADPS0) // предделитель на 64 (частота АЦП 125kHz)
|(1 ‹‹ ADIE); // разрешение прерывания

ADMUX |= (1 ‹‹ REFS1)|(1 ‹‹ REFS0) // внутренний ИОН 2,56V
|(0 ‹‹ MUX3)|(0 ‹‹ MUX2)|(0 ‹‹ MUX1)|(0 ‹‹ MUX0); // вход ADC0


_delay_ms(50);



while(1)
{
ADCSRA |= (1 ‹‹ ADEN) // разрешение АЦП
|(1 ‹‹ ADSC) // запуск преобразования
|(1 ‹‹ ADFR) // непрерывный режим работы АЦП
|(1 ‹‹ ADPS2)|(1 ‹‹ ADPS1)|(0 ‹‹ ADPS0) // предделитель на 64 (частота АЦП 125kHz)
|(1 ‹‹ ADIE); // разрешение прерывания
ADMUX |= (1 ‹‹ REFS1)|(1 ‹‹ REFS0) // внутренний ИОН 2,56V
|(0 ‹‹ MUX3)|(0 ‹‹ MUX2)|(0 ‹‹ MUX1)|(0 ‹‹ MUX0); // вход ADC0
sei(); //глобально разрешаем прерывания
_delay_ms(50);

for (i=0; i‹100; i=i+1) //Цикл
{
if (adc_counter › 300) // вычисляем среднее значение АЦП0
{
display = value/adc_counter;
adc_counter = 0;
value = 0;

}
_delay_ms(50);

} // конец цикла


cli(); // Запрет глобального прерывания

ADCSRA |= (1 ‹‹ ADEN) // разрешение АЦП
|(1 ‹‹ ADSC) // запуск преобразования
|(1 ‹‹ ADFR) // непрерывный режим работы АЦП
|(1 ‹‹ ADPS2)|(1 ‹‹ ADPS1)|(0 ‹‹ ADPS0) // предделитель на 64 (частота АЦП 125kHz)
|(1 ‹‹ ADIE); // разрешение прерывания
ADMUX |= (1 ‹‹ REFS1)|(1 ‹‹ REFS0) // внутренний ИОН 2,56V
|(0 ‹‹ MUX3)|(0 ‹‹ MUX2)|(0 ‹‹ MUX1)|(1 ‹‹ MUX0); // вход ADC1
sei(); //глобально разрешаем прерывания
_delay_ms(50);
for (i=0; i‹100; i=i+1) //Цикл
{
if (adc_counter › 300) // вычисляем среднее значение АЦП1
{
display = value/adc_counter;
adc_counter = 0;
value = 0;
}
_delay_ms(50);

}
cli(); // Запрет глобального прерывания


}

}

суть данного кода такова, вычисляем среднее значение АЦП0 и определённое время выводим его на индикацию, по завершении цикла переходим на АЦП1 и выводим на индикацию и так по переменно.
Проблема в том, что по переменно работать не желает.
Что я сделал не так?

Последний раз редактировалось vgtmaster; 04.02.2014 в 12:16.
vgtmaster вне форума  
Непрочитано 04.02.2014, 13:10  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Сообщение от vgtmaster Посмотреть сообщение
Господа подскажите что не так, вот код:

Atmega8

Написано на WinAVR
Код:
int main (void) 
{ 
DDRD = 0xFF;
DDRB |= (1 ‹‹ PB0)|(1 ‹‹ PB1)|(1 ‹‹ PB2)|(1 ‹‹ PB3);
PORTD = 0x00;
PORTB = 0x00; 
DDRC = 0x00;   
 
TIMSK |= (1 ‹‹ TOIE2); // разрешение прерывания по таймеру2
TCCR2 |= (1 ‹‹ CS21);  //предделитель на 8 
 
ADCSRA |= (1 ‹‹ ADEN) // разрешение АЦП
|(1 ‹‹ ADSC) // запуск преобразования
|(1 ‹‹ ADFR) // непрерывный режим работы АЦП
|(1 ‹‹ ADPS2)|(1 ‹‹ ADPS1)|(0 ‹‹ ADPS0) // предделитель на 64 (частота АЦП 125kHz)
|(1 ‹‹ ADIE); // разрешение прерывания

ADMUX |= (1 ‹‹ REFS1)|(1 ‹‹ REFS0) // внутренний ИОН 2,56V
|(0 ‹‹ MUX3)|(0 ‹‹ MUX2)|(0 ‹‹ MUX1)|(0 ‹‹ MUX0); // вход ADC0


_delay_ms(50);
 


while(1)
{ 
ADCSRA |= (1 ‹‹ ADEN) // разрешение АЦП
|(1 ‹‹ ADSC) // запуск преобразования
|(1 ‹‹ ADFR) // непрерывный режим работы АЦП
|(1 ‹‹ ADPS2)|(1 ‹‹ ADPS1)|(0 ‹‹ ADPS0) // предделитель на 64 (частота АЦП 125kHz)
|(1 ‹‹ ADIE); // разрешение прерывания
ADMUX |= (1 ‹‹ REFS1)|(1 ‹‹ REFS0) // внутренний ИОН 2,56V
|(0 ‹‹ MUX3)|(0 ‹‹ MUX2)|(0 ‹‹ MUX1)|(0 ‹‹ MUX0); // вход ADC0
sei(); //глобально разрешаем прерывания
_delay_ms(50);

for (i=0; i‹100; i=i+1)  //Цикл
{
if (adc_counter › 300) // вычисляем среднее значение АЦП0
{
display = value/adc_counter;
adc_counter = 0;
value = 0;

}     
_delay_ms(50);

} // конец цикла


cli();         // Запрет глобального прерывания

ADCSRA |= (1 ‹‹ ADEN) // разрешение АЦП
|(1 ‹‹ ADSC) // запуск преобразования
|(1 ‹‹ ADFR) // непрерывный режим работы АЦП
|(1 ‹‹ ADPS2)|(1 ‹‹ ADPS1)|(0 ‹‹ ADPS0) // предделитель на 64 (частота АЦП 125kHz)
|(1 ‹‹ ADIE); // разрешение прерывания
ADMUX |= (1 ‹‹ REFS1)|(1 ‹‹ REFS0) // внутренний ИОН 2,56V
|(0 ‹‹ MUX3)|(0 ‹‹ MUX2)|(0 ‹‹ MUX1)|(1 ‹‹ MUX0); // вход ADC1
sei(); //глобально разрешаем прерывания
_delay_ms(50);
for (i=0; i‹100; i=i+1)  //Цикл
{
if (adc_counter › 300) // вычисляем среднее значение АЦП1
{
display = value/adc_counter;
adc_counter = 0;
value = 0;
}     
_delay_ms(50);

}
cli();  // Запрет глобального прерывания


} 

}
суть данного кода такова, вычисляем среднее значение АЦП0 и определённое время выводим его на индикацию, по завершении цикла переходим на АЦП1 и выводим на индикацию и так по переменно.
Проблема в том, что по переменно работать не желает.
Что я сделал не так?
Да все не так.
Ваша проблема на поверхности. Вы ее легко устраните сами, если:
1. Начнете применять тег ‹code›. Облегчите видение программы в первую очередь себе. И другим тоже.
2. Уйдете от линейного написания программы и перейдете к функциям. Внутри функции проще и легче найти ошибку, нежели в многократно растиражированных фрагментах линейного кода.
3. Разберетесь с прерываниями. Или уйдете от них. Или покажете всем, что у вас творится в обработчике.
Успехов.
__________________
С уважением,
Vic / ut1wpr

Последний раз редактировалось ut1wpr; 04.02.2014 в 13:12.
ut1wpr вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CodeVisionAVR selevo Embedd С 11 26.02.2016 22:16
SD и CodeVisionAvr 2.04.4a sersne Микроконтроллеры, АЦП, память и т.д 29 24.03.2010 18:39
CodeVisionAVR V2.03.2 dimonbest Микроконтроллеры, АЦП, память и т.д 253 29.09.2009 22:37
New CodeVisionAVR 1.25.8 dimonbest Микроконтроллеры, АЦП, память и т.д 15 07.02.2008 12:56
Help CodeVisionAVR Serg79 Микроконтроллеры, АЦП, память и т.д 3 15.12.2005 23:32


Часовой пояс GMT +4, время: 05:56.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.