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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Тест компиляторов

Непрочитано 04.10.2006, 21:51  
lsa
Почётный гражданин KAZUS.RUN
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,479
Сказал спасибо: 3,193
Сказали Спасибо 2,982 раз(а) в 682 сообщении(ях)
lsa на пути к лучшему
По умолчанию Тест компиляторов

На форумах в Интернете часто встречаются обсуждения вопросов типа «Какой компилятор лучше», «Какая архитектура PIC/AVR/8051/68H08/прочее лучше», «Какой язык С/Ассемблер/Паскаль/Бейсик лучше подходит для написания программ для микроконтроллеров» и другие темы, приводящие к горячему обсуждению и спорам.
Эти вопросы и темы вечные и резюме подвести им очень трудно (даже невозможно).
Как вариант частичного удовлетворения в плане объективного сравнения компиляторов, языков и котроллеров есть такой вариант:
Решение несложной практической задачи (ДОСТУПНОЙ для периферии многих МК) разными компиляторами и разными контроллерами, с приведением здесь на форуме в этом топике примеров (с исходниками, комментариями и прошивками).
И пусть общественность сравнит эти результаты.
Такое умное хотел написать аж сам перестал понимать. 
Если по сути: далее я привожу простенький пример на АТмега8 + бейсик (Баском) работы с АЦП и выводом результата на дисплей 16*2.
Кто работает на другом МК (PIC/8051/68H08 и др.) или на AVR (но на С/Ассемблер/Паскаль) выложит свой пример решения.
Когда будет с чем сравнить, тогда и сравнивание будет более корректным.
Реклама:
lsa вне форума  
Непрочитано 04.10.2006, 21:54  
lsa
Почётный гражданин KAZUS.RUN
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,479
Сказал спасибо: 3,193
Сказали Спасибо 2,982 раз(а) в 682 сообщении(ях)
lsa на пути к лучшему
По умолчанию

Пример №1.
АТмега8 + бейсик (Баском).
Использован индикатор 16*2 и переменный резистор.
Снимается уровень напряжения с движка резистора и выводится значение в вольтах на дисплей.
Размер кода – 1464 байта (732 слова, составляющих 18% от Flash памяти 8К).
В файле (51КБ) проект для протеуса, исходник и файл прошивки.
Исходник во вложенном файле с подробными комментариями.
Здесь для простоты только текст на бейсике:
--------------------
$regfile = "m8def.dat"
$crystal = 1000000
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Lcd = 16 * 2
Cursor Off
Dim Channel As Byte
Dim W As Word , Ww As Single
Dim S As String * 15
Channel = 1
Do
W = Getadc(Channel)
Ww = W / 204.4
S = Str(ww)
Locate 1 , 1
Lcd "U= " ; Left(s , 4 ) ; " V "
Waitms 100
Loop
End
--------------------
И это все.
Никаких больше внешних модулей не нужно. Все стандартные операторы и функции бейсика Баском.
Хотелось бы увидеть как эта задача будет решена другими средствами.
Схематехнически специально сделаны упрощения, отсутствующие в реальной жизни.

-- Прилагается рисунок: --


Прикрепленный файл: 4283269.rar
lsa вне форума  
Непрочитано 06.10.2006, 23:43  
lsa
Почётный гражданин KAZUS.RUN
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,479
Сказал спасибо: 3,193
Сказали Спасибо 2,982 раз(а) в 682 сообщении(ях)
lsa на пути к лучшему
По умолчанию

Н-да...
А с помощью "mikroBasic for AVR" не удалось решить пока так просто эту задачку.
Там 100% поддержку имеют только 128 и 16/32 меги.
Для остальных работают не все функции.
Попробовал отредактировать регфайл для меги8, компиляция кода есть, но не работает.
Да и размер кода уже более 3К.
А еще нужно добавить преобразование числа в символы для вывода на экран...
lsa вне форума  
Непрочитано 12.10.2006, 22:45  
lsa
Почётный гражданин KAZUS.RUN
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,479
Сказал спасибо: 3,193
Сказали Спасибо 2,982 раз(а) в 682 сообщении(ях)
lsa на пути к лучшему
По умолчанию

СРАВНЕНИЕ КОМПИЛЯТОРОВ C ДЛЯ AVR
Анализ эффективности и скорости кода, сгенерированного IAR, CodeVisionAVR, ICCAVR и AtmanAvr (AVR-GCC).

Вот прямая ссылка на ресурс:
http://avr.h15.ru/index.php?page=compilers_cmp

1. Сравнение эффективности кода
2. СРАВНЕНИЕ ВРЕМЕНИ ВЫПОЛНЕНИЯ КОДА ДЛЯ ПРОГРАММЫ С ПЛАВАЮЩЕЙ ТОЧКОЙ.
lsa вне форума  
Непрочитано 13.10.2006, 14:38  
paha1956
Временная регистрация
 
Регистрация: 17.05.2006
Сообщений: 71
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
paha1956 на пути к лучшему
По умолчанию

Вот, сбацал тут по-быстрому. Компилятор IAR 3.20.

Код:
#include ‹string.h›
#include ‹iom8.h›

void Out_LCD(unsigned char);

__flash unsigned char decode[10]="0123456789";

void main(void)
{
char Vr_level, i, V_string[15];
float Vr_level_f;

strcpy (V_string, "U=  .   V");

ADCSR=0x9f;       // Инициализация АЦП (постоянное преобразование)
ADMUX=0x61;
SFIOR=0x00;

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

PORTC=0x80;       // Инициализация порта C
DDRC=0x80;

ADCSR|=(1‹‹ADSC); // Запуск преобразования

while (1)
  {
  while ((ADCSR & 0x10) == 0)    // Ожидание окончания преобразования АЦП

  Vr_level=ADCH;                 // Считывание значения АЦП
  Vr_level_f=Vr_level/204.4;     // Учёт коэффициента
      
  // Перевод напряжения в двочно-десятичный вид
  V_string[3]=decode[(unsigned char)(Vr_level_f     -Vr_level_f/10*10)];
  V_string[5]=decode[(unsigned char)(Vr_level_f/10  -Vr_level_f/100*10)];
  V_string[6]=decode[(unsigned char)(Vr_level_f/100 -Vr_level_f/1000*10)];

  PORTB&=~0x04;  // Установка режима ввода команд в LCD
  
  Out_LCD(0x24); // Вывод команды установки курсора
                    в позицию (1,1) (данные взяты
                    "от балды", т.к. кодов команд
                    не знаю)
  Out_LCD(0x01); 
  Out_LCD(0x01); 

  // Вывод данных на LCD
  PORTB|=0x04; // Установка режима ввода данных
  i=0;
  while (V_string[i] != 0)
    {
    Out_LCD(V_string[i]); 
    }
  }
}

void Out_LCD(unsigned char data)
{
unsigned int k;

PORTB=data & 0x0f; // Младшая часть данных
PORTB|=0x08;       // Запись данных
for (k=0; k‹1000; k++) {;}
PORTB&=~0x08;      // Снятие сигнала записи данных

PORTB=(data››4) & 0x0f; // Старшая часть данных
PORTB|=0x08;       // Запись данных
for (k=0; k‹1000; k++) {;}
PORTB&=~0x08;      // Снятие сигнала записи данных
}
Получилось 1480 байт кода. Делал не проверяя, чисто чтоб размер посмотреть и сравнить. Стандартных функций не использовал, поэтому текст получился большой.
__________________
"Имею честь иметь Вашу честь в своём доме..."
paha1956 вне форума  
Непрочитано 13.10.2006, 15:08  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Я так понял меряем 5в ?

Ок состряпую на пиках.Потсмотрим.
Микроконтроллер любой можно (из пиков)?
Библиотеки использовать стандартные из поставки
компиляторов ?
dosikus вне форума  
Непрочитано 13.10.2006, 15:54  
Unichorn
Временная регистрация
 
Регистрация: 29.05.2005
Адрес: где-то в 300км от Красноярска
Сообщений: 75
Сказал спасибо: 4
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Unichorn на пути к лучшему
По умолчанию

Посмотрите 3-4 постами ниже

http://electronix.ru/forum/index.php?showtopic=21983
Unichorn вне форума  
Непрочитано 13.10.2006, 20:33  
lsa
Почётный гражданин KAZUS.RUN
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,479
Сказал спасибо: 3,193
Сказали Спасибо 2,982 раз(а) в 682 сообщении(ях)
lsa на пути к лучшему
По умолчанию

Сообщение от dosikus
Я так понял меряем 5в ?

Ок состряпую на пиках.Потсмотрим.
Микроконтроллер любой можно (из пиков)?
Библиотеки использовать стандартные из поставки
компиляторов ?
Чем больше вариантов будет для сравнения, тем лучше.
Схемка простая (даже черезчур).
Но для решения задачи используются и управление портами, и настройка периферии, и вывод на внешний дисплей, и работа с числами/строками.
Поэтому будет интересно как это делается на PIC.
lsa вне форума  
Непрочитано 13.10.2006, 20:51  
lsa
Почётный гражданин KAZUS.RUN
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,479
Сказал спасибо: 3,193
Сказали Спасибо 2,982 раз(а) в 682 сообщении(ях)
lsa на пути к лучшему
По умолчанию

Сообщение от Unichorn
Посмотрите 3-4 постами ниже

http://electronix.ru/forum/index.php?showtopic=21983
Кроме компилятора многое зависит еще и от программиста (алгоритма).
А цифры наверное таки приведены в словах а не байтах.
Вот еще ссылочка на определение уровня производительности контроллеров и размер кода компиляторов: http://benchmarks.caxapa.ru
Для каждого бенчмарка используется сравнение единого алгоритма но под разные платформы и среды программирования.
lsa вне форума  
Непрочитано 14.10.2006, 12:01  
ivoBobul
Прохожий
 
Регистрация: 14.10.2006
Сообщений: 3
Сказал спасибо: 15
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ivoBobul на пути к лучшему
По умолчанию

Сообщение от paha1956
Вот, сбацал тут по-быстрому. Компилятор IAR 3.20.


Получилось 1480 байт кода. Делал не проверяя, чисто чтоб размер посмотреть и сравнить. Стандартных функций не использовал, поэтому текст получился большой.
А можно НЕХ получить?
Попробовать его в ПРОТЕУСЕ.
ivoBobul вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тестирование компиляторов для AVR SwanSwan Микроконтроллеры, АЦП, память и т.д 22 19.02.2009 01:04
[Решено] тест коэфицента интеллекта radiotexnika Отвлекитесь, эмбеддеры! 1 26.01.2009 11:09
о выборе компиляторов...замолвите слово... picavr Микроконтроллеры, АЦП, память и т.д 12 03.12.2008 01:38
Тест памяти и регистров. Andrewg Микроконтроллеры, АЦП, память и т.д 5 05.01.2007 14:12
Тест таймера и др. BigBolt Микроконтроллеры, АЦП, память и т.д 1 06.03.2006 14:53


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


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