WINAVR

Reply to
George Shepelev
Loading thread data ...
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko

Про "факт" или "не факт", можно говорить когда есть конкретная задача. Вы же привели абстрактную задачу - есть N каналов, входные частоты f, меняются по какому-то закону f(t) их нужно обработать и выдать сигнал F и нужно все это сделать на некотором кристалле X - при том что N, f(t), F и X могут быть какие угодно. И утверждаете, что на ассемблере, эта задача решится, а на Си нет... С таким же успехом можно утверждать обратное:-) Хорошо хоть из соседних писем видно что линий у вас 4 или 8. По мне так нужно решать конкретные задачи, а не в целом и на все случаи жизни...

А почему вы утверждаете что "трюки" на асм-е - это изящный способ, а "трюки" на Си - нет? Что вы вообще в это понятие вкладываете - "трюки"?

Я вообще без предрассудков, надо - пишу вставку или модуль на асме, но если можно все сделать на чистом Си - оставляю на Си..... Но утверждать что это надо обязательно писать на Си, а это обязательно на асм-е не возьмусь никогда. Это все спор ради спора....

Если вы прекрасно владеете ассемблером, то никто вас не тянет переходить на Си. Но если вы не понимаете Си (что я заметил из соседних писем), то и пользоваться им и рассуждать о его "недостатках" вам не стоит.

Был у нас в конторе один товарищ, долго не задержался, т.к. начал решать задачу с изучения CPU и его асм-а, когда заготовка проекта писанного на Си уже работала и ему оставалось только дописать кусок работающий с внешней периферией. Начальство видит - время идет результата нет.... вывод - человек бездельничает (с точки зрения нач.) Так что такое упорство - типа "ЯП X рулез и ничего нет круче" (вместо X можно подставить асм, Си, Си++, Паскаль, VB, Ада

- по вкусу) не есть вещь полезная в реальной жизни.

Во еще могу привести контрпример для "дерганья ножками" (мой "любимый" IAR Си для MSP430) Можете объяснить где здесь "Есть проигрыш."? =============================================== 24 /******************************************************************* 25 Функция I2CBusSTART выполняет условие START на шине I2C. 26 *******************************************************************/ 27 void I2CBusSTART(void) \ 0000 I2CBusSTART: 28 {// Begin I2CBusSTART 29 30 // 1. Записать в SDA 1. \ 0000 E2D31900 BIS.B #2,&25 31 P3OUT |= (0x0002); 32 33 // 2. Подождать установки данных на SDA 34 // Ждем время Tsu_dat 35 DELAY(Tsu_dat); 36 37 // 3. Записать в SCL 1. \ 0004 F2D21900 BIS.B #8,&25 38 P3OUT |= (0x0008); 39 40 // 4. Подождать время установки условия START 41 // Ждем время Tsu_sta 42 DELAY(Tsu_sta); 43 44 // 5. Записать в SDA 0. 45 // Сбрасываем линию SDA в 0. \ 0008 E2C31900 BIC.B #2,&25 46 P3OUT &= ~(0x0002); 47 48 // 6. Подождать время удержания условия START. 49 // Ждем время Thd_sta. 50 DELAY(Thd_sta); 51 52 // 7. Записать в SCL 0. 53 // Сбрасываем линию SCL в 0. \ 000C F2C21900 BIC.B #8,&25 54 P3OUT &= ~(0x0008); 55 \ 0010 3041 RET 56 }// End I2CBusSTART =============================================== Небольшой комментарий: Макрос DELAY(t) - пустой. Поскольку все крутится от внутреннего генератора MSP430, то перед обменом по I2C я снижаю его частоту так чтобы программное "дерганье ногами" обошлось без дополнительных задержек. (зависит от характеристик микросхем-slave-ов).

Опять же все зависит от того насколько качественно реализована оптимизация в компиляторе. Кто например мешает вложить ваши любимые "трюки" в компилятор, что бы код получался не тупым разворачиванием конструкций, а применением соответствующих "изящных решений" в местах где это возможно.

Так что уместнее было бы говорить не "Есть проигрыш", а "Бывает проигрыш":-)

Reply to
Basargin Konstantin
Reply to
Andrey Solomatov
Reply to
George Shepelev
Reply to
George Shepelev
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko

Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Andrey Solomatov on Wed, 05 Oct 2005 15:42:06

+0400:

DT>>> Угу. А в Аде можно описать свой арифметический тип, DT>>> полностью соответствующий, например, точности и диапазону DT>>> значений измеряемой величины. А компилятор выберет DT>>> представление, максимально эффективно реализующее этот тип DT>>> на данном железе.

AS>> В C++ тоже. AS>> Правда придётся делать всё "ручками",

DT> Здрасти. Ручками можно и на ассемблере. ;) Приятность именно DT> в том, что ты просто пишешь, например:

DT> type Temperature is delta 0.01 range -100..100;

А во что скомпилируется работа с таким типом? А если в одном выражении с другими такими же?

dima

formatting link

Reply to
Dmitry Orlov
Reply to
Alexey V Bugrov
Reply to
Dimmy Timchenko
Reply to
Dimmy Timchenko
Reply to
Andrey Solomatov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.