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

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

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

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

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

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

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

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

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

Н-да...
А с помощью "mikroBasic for AVR" не удалось решить пока так просто эту задачку.
Там 100% поддержку имеют только 128 и 16/32 меги.
Для остальных работают не все функции.
Попробовал отредактировать регфайл для меги8, компиляция кода есть, но не работает.
Да и размер кода уже более 3К.
А еще нужно добавить преобразование числа в символы для вывода на экран...
lsa вне форума  
Непрочитано 12.10.2006, 22:45  
lsa
Почётный гражданин KAZUS.RU
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
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
Сообщений: 72
Сказал спасибо: 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
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

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

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

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

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

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

Ок состряпую на пиках.Потсмотрим.
Микроконтроллер любой можно (из пиков)?
Библиотеки использовать стандартные из поставки
компиляторов ?
Чем больше вариантов будет для сравнения, тем лучше.
Схемка простая (даже черезчур).
Но для решения задачи используются и управление портами, и настройка периферии, и вывод на внешний дисплей, и работа с числами/строками.
Поэтому будет интересно как это делается на PIC.
lsa вне форума  
Непрочитано 13.10.2006, 20:51  
lsa
Почётный гражданин KAZUS.RU
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
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, время: 17:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot