asis-kbr.ru

автоматические системы и системы безопасности
Текущее время: 24 окт 2017, 04:07

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: ASM или... все таки Си ???
СообщениеДобавлено: 24 янв 2013, 21:57 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 19 янв 2012, 12:52
Сообщения: 569
Откуда: KBR
Хочу научится, в одном проекте, совмещать основную программу на Си, а скоростные процедуры (прерывания например) на асме.....

Тут как то пытал народ: http://radiokot.ru/forum/viewtopic.php? ... C#p1437117

Тут тоже: http://forum.easyelectronics.ru/viewtop ... 8C#p212508

Но везде, не то что мне надо..... Но потихоньку всеже проясняется ситуация.
Вот тоже нашел материальчик: http://embedderslife.wordpress.com/2012 ... asm-and-c/
Кажется то что искал.....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM
СообщениеДобавлено: 26 янв 2013, 00:15 
Не в сети

Зарегистрирован: 22 авг 2012, 12:38
Сообщения: 9
Ну ты не с того конца пошёл.
Во первых есть APP на ATMEL по сему поводу
Цитата:
AVR034: Mixing C and Assembly Code ....
и ещё помоему обновление но стем же названием
и на easy была целая тема по сему вопросу с одноименным названием.
http://forum.easyelectronics.ru/viewtop ... =4&t=12769
Во- вторых - никто не мешает написать обработчик на asm не забыв указать компилятору - это asm не трожь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM
СообщениеДобавлено: 26 янв 2013, 13:33 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 19 янв 2012, 12:52
Сообщения: 569
Откуда: KBR
ILYAUL писал(а):
AVR034: Mixing C and Assembly Code ....
Класс...
Именно то что мне нужно
Цитата:
Features
• Passing Variables Between C and Assembly Code Functions
• Calling Assembly Code Functions from C
• Calling C Functions from Assembly Code
Writing Interrupt Functions in Assembly Code
• Accessing Global Variables in Assembly Code


Токма там написано:
Цитата:
This application note describes how to set up and use the IAR C-compiler for the AVR
controller
Интересно, с WINAVR разница ощутимая в использовании данных приемов???
Ато как то IAR я в глаза не видел, неохота опять привыкать к другому..... Ты случайно подобные апноты для WINAVR не встречал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM
СообщениеДобавлено: 26 янв 2013, 17:53 
Не в сети

Зарегистрирован: 22 авг 2012, 12:38
Сообщения: 9
Ты же знаешь не люблю я С. И так далеко в разницу отдельных компиляторов не вникал. ATMEL сотрудничает с программистами , которые пишут компилятор IAR . Но как я подозреваю правила С они и в Африке правила С, т.ч. идёт с IAR запросто пойдёт и с Winavr. Напиши в личку AVReal или REAL - вот уж кто дока в разницах компиляторов и правил языка Си. Кстати говоря о WINAVR , не врубаюсь как он работает, но это отдельная тема


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM
СообщениеДобавлено: 26 янв 2013, 19:41 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 19 янв 2012, 12:52
Сообщения: 569
Откуда: KBR
ILYAUL писал(а):
Ты же знаешь не люблю я С.
А чего так.... я прикололся, вот сейчас еще совмещу Си и асм, и будет вообще бомба.....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM
СообщениеДобавлено: 26 янв 2013, 23:06 
Не в сети

Зарегистрирован: 22 авг 2012, 12:38
Сообщения: 9
Кстати , как думаешь , во что превращается Си после компиляции ? Если интересно открой дизasm - ужаснись - и возвращайся :mrgreen:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM
СообщениеДобавлено: 27 янв 2013, 01:01 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 19 янв 2012, 12:52
Сообщения: 569
Откуда: KBR
ILYAUL писал(а):
Кстати , как думаешь , во что превращается Си после компиляции ? Если интересно открой дизasm - ужаснись - и возвращайся :mrgreen:

Да ничего там аж такого страшного нет.....
Т.к. я ассемблер освоил раньше чем Си, то поначалу постоянно лез в дизассемблер разбираться что не так идет, пока более менее не освоился в Си.

Теперь из своих наблюдений, могу смело сказать несколько вещей:

1. Ассемблер нужен ТОЛЬКО! когда надо получить маленький по размеру код и\или большую скорость...
К примеру какой нибудь модуль скоростной, на tiny13, у которой мало памяти.....
Конечно, до пару килобайт можно писать на асме, без проблем.... и не напрягает, и все по максимуму используется..... Тут я не спорю....
НО на этом плюсы асма заканчиваются.....

2. Попробуй написать прогу на асме под 8 килобайт например..... замучишся все ньюансы в памяти держать (или постоянно рыскать по заметкам\комментариям, что где, да как). В конце программа превратится в непроворачиваемый ворох.....
А если через пару месяцев надо к ней вернуться, то при виде километров кода и осознании того что в это надо будет сейчас вникать..... наступает апатия.....

3. На самом деле Си не так уж и прожорлив. Если некоторые моменты учитывать, то все в пределах разумного.....
Тем более, не так давно, уважаемый avreal немало уроков мне преподал: http://radiokot.ru/forum/viewtopic.php?f=20&t=77142
Теперь по моим заметкам, программа на Си всего раза в полтора больше места занимает чем аналогичная на асме.
Да и сейчас размерами Флэша уже никого не удивиш, хош тебе 32 Кб, хош все 128 Кб.....
Единственное, что мне сразу бросилось в Си - это то что он постоянно, обращается напрямую к переменным, на что тратится много флэша. Например чтобы просто увеличить переменную, Си сначала считает ее командой LDS, потом увеличит, потом запишет назад командой STS, итого 10 байт памяти. Я же когда писал на асме, всегда отводил одну индексную рег пару под значение начала поля переменных, и потом работал с переменными командами LDD и STD, и тогда на ту же процедуру уходит 6 байт.....

4. По сравнению с асмом, Си просто песня, когда программа становится сложной..... Независимо какого она размера (хоть 128 Кб), с ней легко работать. Если прошло время и надо снова взяться за проект, никаких проблем не возникает с ориентацией в программе. Никаких тебе мелочных ньюансов как на асме, не надо напрягать мозги по поводу кучи рутины - что в каких регистрах сидит. Все абстрагировано, каждый модуль самодостаточен, и т.д. и т.п......

5. Кроме того, программа на Си уже сама по себе выглядит как алгоритм.... Если на асме я постоянно рисовал алгоритмы, обкладывался листами и только потом что-то более менее сложное получалось, то все время пользования Сишкой, я не нарисовал ни одного алгоритма, потому что при написании программы на Си, все наглядно, информативно, стройно и понятно.....

Это только то что пришло сейчас на ум.... если еще покумекать, то список можно продолжить.....

Так что - как сказать.....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM
СообщениеДобавлено: 27 янв 2013, 01:50 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 19 янв 2012, 12:52
Сообщения: 569
Откуда: KBR
О, полюбуйся, как меня быстро затянуло в Сишники....

От тут я еще рьяно боролся за ассемблер
http://radiokot.ru/forum/viewtopic.php? ... 8#p1338604

Тут меня хорошенько обработали..... уважаемые люди.....
http://radiokot.ru/forum/viewtopic.php? ... C#p1338194
http://forum.easyelectronics.ru/viewtop ... 83#p176384

а тут я уже и сам активно агитирую.....
http://forum.easyelectronics.ru/viewtop ... 2A#p215861
http://forum.easyelectronics.ru/viewtop ... B0#p201714

Короче весело живем.....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM или... все таки Си ???
СообщениеДобавлено: 31 авг 2013, 09:44 
Не в сети

Зарегистрирован: 28 авг 2013, 22:17
Сообщения: 23
Я тоже за С.
А критичные по времени функции всегда можно сделать на асемблере.
Обычно так и делаю.
В свое время так увлекся асемблерными вставками, что написал свою RTOS, и уже около четырех лет активно ее использую


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM или... все таки Си ???
СообщениеДобавлено: 31 авг 2013, 13:10 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 19 янв 2012, 12:52
Сообщения: 569
Откуда: KBR
Александр писал(а):
В свое время так увлекся асемблерными вставками, что написал свою RTOS, и уже около четырех лет активно ее использую
Да вы монстер просто.....
Кстати... я еще не работал с RTOS, объясните мне на пальцах, в каких ситуациях RTOS просто неизбежен...
Дело в том, что на флаговых автоматах (как пока все я делаю) можно решать любые задачи (как мне кажется)...
Так в чем же все таки изюминка RTOS? Да и насколько я слышал, там при каждом движении RTOS сохраняются в стеке все регистры... это же ужас...

Александр писал(а):
А критичные по времени функции всегда можно сделать на асемблере.
Я недавно освоил такой вариант...
Основная прога на Си, а скоростное прерывание на Асме (частота прерывания 125кГц, на Си однозначно бы не успевалось).
viewtopic.php?f=11&t=162


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM или... все таки Си ???
СообщениеДобавлено: 31 авг 2013, 13:46 
Не в сети

Зарегистрирован: 28 авг 2013, 22:17
Сообщения: 23
Действительно, при работе RTOS для переключения процессов необходимо сохранять содержимое регистров.
Но для многих задач это не критично.
Обычно производительности процессора с избытком достаточно для этого.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM или... все таки Си ???
СообщениеДобавлено: 31 авг 2013, 13:48 
Не в сети

Зарегистрирован: 28 авг 2013, 22:17
Сообщения: 23
По поводу преимуществ/недостатков RTOS можно долго спорить.
Есть как сторонники и противники этого метода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM или... все таки Си ???
СообщениеДобавлено: 31 авг 2013, 13:50 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 19 янв 2012, 12:52
Сообщения: 569
Откуда: KBR
Александр писал(а):
Действительно, при работе RTOS для переключения процессов необходимо сохранять содержимое регистров.
Вот где нужен ARM контроллер... там вроде все регистры сохраняются одной командой...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ASM или... все таки Си ???
СообщениеДобавлено: 31 авг 2013, 13:53 
Не в сети

Зарегистрирован: 28 авг 2013, 22:17
Сообщения: 23
Мне нравится РТОС тем, что программа становится более понятной, спустя время в ней легче разобраться.
К примеру, работают несколько независимых процессов.
В одном из них ведется опрос температурных датчиков (DS18B20 например)
Второй предназначен для работы с пользователем (опрос кнопочек, реакция на действия пользователя)
И так далее...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB