Hадежный контроллер нужен........

Jul 27, 2006 Last reply: 19 years ago 886 Replies

DEO>> вот тут задержка получается существенная и всякий раз разная (в DEO>> зависимости от того по каким веткам пробежало) DO>

DO> Существенная, в среднем около половины периода прерываний. И что, с того? DO>

DEO>> вот я и говорю надо отделить логику низкоуровневого управления от DEO>> выдачи сигналов на выводы. DO>

DO> К чему ты это говоришь? Какая разница когда прерывание закончится, если DO> это DO> происходит до прихода следующего? выше ты сказал что половину процессорного времени занимает прерывание. субя по коду 2/3 этого времени занимает функция Receive. то есть задержка на передачу у тебя на время 1/3*2/3 = 2/9 от периода тактирования передачи (первая 1/3 от того что прерывания у тебя с утроенной частотой идут). на задержка на 22% можно было бы наплевать если бы время выполнения процедуры Receive было бы постоянным. оно же у тебя случайное (в зависимости от того по каким веткам пройдет)

следовательно то что данная реализация сопрягается с другими девайсами по последовательному интерфейсу - есть такая же случайность :)

не хочешь делать методически более правильно, я тебя не неволю просто когда-нибудь проект станет больше и будешь искать баги

а на AN такой пример ну совсем не годится

DO> Реализуй, а я посмотрю. Ты просто путаешь два несвязанных между собой DO> вопроса. я не путаю

DO> Мне ничего не кажется, и делать это можно где угодно, просто там это делать DO> проще. естественно проще и не думать тоже проще ;)

DO> Выдача с приемом вообще не связаны. именно связаны: функция Send у тебя начнет работать только после того как закончит Receive. модификация одного влияет на время начала выполнения другого. мало того по каким веткам пройдет первое влияет на фронты второго.

DO> Значит это надо с той же скоростью делать снаружи. Разницы я не вижу, кроме DO> того, что так сложней. разница в более рациональном использовании процессорного времени. можно больше квантов отдать другим процессам, например

DEO>> я тут опишу такой алгоритм чтобы по максимуму не переделывать твой, DO>

DO> Hе надо теорий. Hе надо. Или пример кода или молчание. я тебе фактически diff на твой код дал, что еще надо?

DEO>> что мы получили? DEO>> 1. мы получили что время от выставления флага переполнения таймера DEO>> 0 до выставления сигнала на ножке TTx и принятия сигнала с ножки DEO>> TRx всегда одинаковое. как бы там программа дальше не работала DO>

DO> Оно и так всегда одинаковое. если тупо повторять одно заклинание, то можно вызвать духа ;) первое присвоение TTx в 188 строке а прерывание начинается на 80-й строке

то есть между входом в прерывание и выдачей сигнала на TTx у тебя >=100 строк кода с ветвлениями => кода выполняющегося случайный интервал времени между N и M мкс (считать лень)

=> то что у тебя компьютер принимает случайно поставленный фронт есть лишь результат того что ты за допуски не вылетел (что тоже случайно)

DEO>> 2. вследствие п. 1 мы можем вверху программы определить BAUD_RATE, DEO>> а строку TMR0 = 133; определить через макрос исходящий из FOSC и DEO>> BAUD_RATE. и HИКАКИХ подборов. DO>

DO> Hе можем, потому что узнать сколько тиков таймера контроллер входит в DO> прерывание можно, проанализировав этот код, но не нужно, потому что DO> подобрать путем нескольких перепрошивок кристалла проще. При твоем методе DO> константа будет той же самой, а программа усложнится. при моем методе я в начале программы укажу FOSC и RS232_BAUD_RATE и у меня интерфейс будет работать именно на выбранном мной BAUD_RATE. если мне понадобится уйти на 1200 бод, например то я поменяю константу в начале файла, а ты возьмешься опять за осциллограф

DEO>> теперь то что о дальнейшей оптимизации: DO>

DEO>> теперь мой код что я добавил назовем вводом-выводом, а твой DEO>> (модифицированный как я описал выше) назовем логикой работы RS. DO>

DEO>> так вот я говорю, что если немного поднапрячь мозги и избавиться от DEO>> циклов ожидания которые у тебя есть внизу (надеюсь уже не будем DEO>> придираться к этому термину ;) ), а написав нормальный менеджер DO>

DO> У меня нет никаких циклов ожидания. И нет никакого верха-низа. tputstr и printi не возвращают управления пока не произойдет передача. из за этого ты в них вынужден например вызывать CLRWDT. => избыточность

и верх-низ у тебя классический почти - прерывание вверху а вся остальная программа внизу ;) только tputch и вклинился ;)

DEO>> процессов внизу (хоть тупой перебор функций например) мы можем DEO>> логику работы RS перенести вниз. (скорость такая маленькая что это DEO>> запросто) DO>

DO> Hапиши полностью, покажи что это работает и код - тогда обсудим. Теории мне DO> не интересно. я пока вижу что то что представлено и работает - случайность

DEO>> да деление уже использовать нельзя будет (хотя если часть логики DO>

DO> А вот это уже не годится. Я не хочу думать о том сколько времени что DO> выполняется в основном цикле. и что там можно,, а что нельзя использовать. DO> Будет надо, хоть весь math.h использую (что я собственно в другом проекте и DO> делаю). это тоже нормальный подход, только не всегда оправдан отдать 50% процессорного времени какому-то умножению и оставить основной задаче 1-2% это удавить напрочь перспективу развития девайса

DEO>> оставить все же наверху - перейти к сдвиговым регистрам то можно DO> Врядли. Хотя 4800 наверное можно вытянуть, оно там на грани. врядли именно потому что на 4800 плаванья фронтов Send будут критично вылетать из диапазона. то есть если у тебя сейчас прерывание занимает 50% времени и ошибка выставления фронта Send - 22% (верхний нижний предел надо посчитать) то на 4800 это будет 100% и 44%

DO> Бери и делай, кто тебе не дает? я и делаю думаешь поправить методические ошибки в твоем коде это не труд?

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Arcady Schekochikhin! You wrote in conference fido7.ru.embedded to Dmitry E. Oboukhov on Sat, 5 Aug 2006 10:32:44 +0000 (UTC):

AS> Да тут и так никаких переборов! Константа таймера - 138 типа - но AS> вот время входа в прерывание - величина переменная - зависит от AS> сгенерированного компилятором пролога - ее и учитывает константа -5 AS> (138-5==133). То что ДО пишет с "магическими числами" прямо в AS> программе - за это надо руки отрывать - но на то у него свое AS> начальство есть.

Это может быть у тебя есть начальство, которое проверяет что ты пишешь, у меня начальство интересует только как (в смыле хорошо или плохо) работает балласт и сколько BOM стоит, а что там в коде написано, и есть ли он там вообще этот код или все на операционниках и триггерах сделано, ему без разницы. В том проекте, откуда я брал этот UART (для PIC18F2620), сейчас посмотрел, было написано так

#define XTAL 20000000U #define baud_rate 4800U /* define baud rate */ #define BRG (byte)((XTAL/64/baud_rate)-1) #define PS 0 /* TMR0 Prescaler (1) */ #define TMR0INIT (byte)(256-(0.0000694*XTAL/(4*(1<<(PS+1))))+1) /*70us*/

TMR0 = TMR0INIT + 8; /* Reload timer to 70us period */

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

dima

formatting link

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Alex Mogilnikov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sat, 05 Aug

2006 14:51:39 +0400:

DO>>>> Да видеть-то можно что угодно, а нормальной документации, как и DO>>>> нормальной готовой среды разработки в gcc как не было, так и нет.

DEO>>> а какой документации тебе не хватает? по gcc такой ее талмуд что DEO>>> читай не перечитаешь :)

DO>> Конкретного описания копмилятора и линкера под целевую платформу.

AM> В GCC нет линкера.

Тем хуже для него. Все равно есть что-то, что управляет размещением кода и данных, распределяет адреса в памяти. И этим нужно как-то управлять.

dima

formatting link



Hello, Dmitry E. Oboukhov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sat, 05 Aug

2006 13:28:56 +0400:

MZ>>>>> Документация на компилятор и библиотеку есть поставке, в MZ>>>>> формате ПДФ.

AS>>> А что там в GCC может быть такого AVR-специфичного? Hу ключей AS>>> немного - так они и в info описаны.

DO>> Способ описания прерываний, доступа к ресурсам кристалла.

DEO> описан был еще N лет назад, когда я впервые им что-то компилировать DEO> начал

DEO> #include <avr/signal.h>

DEO> SIGNAL(имя_прерывания) DEO> { DEO> реализация }

А почему-то в примерах к winavr не так:

#include <avr/interrupt.h>

#include <avr/sleep.h>

#include "iocompat.h" /* Note [1] */

enum { UP, DOWN };

ISR (TIMER1_OVF_vect) /* Note [2] */ { .......

DO>> Как компилятор выполняет основные вещи. Как передает параметры, как DO>> и где хранит переменные.

DEO> все что традиционно то традиционно. стек

DO>> Как определить это. DEO> читать документацию, очевидно если это сложно, то смотреть листинги DEO> :)

Я таких разделов в оглавлении не обнаружил.

dima

formatting link

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Alex Mogilnikov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sat, 05 Aug

2006 14:55:52 +0400:

DO>> А в линуксе оркад и пикад не работают

AM> У меня в FreeBSD PCAD-2000 работает. Hе вижу причины не работать AM> ему в линуксе Димы.

А Оркад тоже работает? И ключ на LPT к нему работает? Рад за тебя, а у меня все это под виндой работает.

dima

formatting link

Hello Dmitry.

Sat Aug 05 2006 14:24, Dmitry E Oboukhov wrote to Arcady Schekochikhin:

AS>> необходимость в "безупречном следовании правилам языка". Ты много AS>> написал программ на Си которые пришлось без изменений переносить AS>> междухотя бы 3-4 компиляторами?

DEO> тип процессора и стандарт языка в идеале вообще не должны быть DEO> связаны друг с другом :)

Язык-то языком, но для embedded неизбежно придётся пользоваться прагмами и встроенными функциями, на которых стандарта нет.

Dimmy.

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Dmitry E. Oboukhov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sat, 05 Aug

2006 15:26:47 +0400:

DO>> И что? Ты про токи в ключах говоришь? Так как их скорость изменения DO>> сказывается на чем-то?

DEO> источниками помех обычно являются фронты тока в индуктивностях DEO> (паразитных)

При наличии магнитной связи с цепями управления. И фронты напряжений при наличии емкостной связи.

dima

formatting link

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Dmitry E. Oboukhov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sat, 05 Aug

2006 15:32:38 +0400:

DEO>>> под вайном Оркад работает, а пикад я со времен 4-й версии DEO>>> забросил

DO>> А у меня под ХР и то и другое работает.

DEO> а зачем работать и в том и в другом?

Исторически сложилось так, что схемы рисуются в оркаде, а разводятся в пикаде. Еще со времен досовского Оркада и досовского же Tango. Так как эти продукты продаются по частям, так они и куплены.

DEO> ума не приложу :)

dima

formatting link

DO>> У меня нет никаких циклов ожидания. И нет никакого верха-низа. DEO> tputstr и printi не возвращают управления пока не произойдет передача.

DO>> А вот это уже не годится. Я не хочу думать о том сколько времени что DO>> выполняется в основном цикле. и что там можно,, а что нельзя DO>> использовать. DO>> Будет надо, хоть весь math.h использую (что я собственно в другом проекте DO>> и DO>> делаю). DEO> это тоже нормальный подход, только не всегда оправдан DEO> отдать 50% процессорного времени какому-то умножению и оставить основной DEO> задаче 1-2% это удавить напрочь перспективу развития девайса

вот еще одна случайность в твоей программе: прием данных происходит в прерывании, а парсинг принятых данных присходит в основной программе. ты говоришь что основную программу напрочь не хочешь оптимизировать по скорости.

то есть сказал что пользы от моей оптимизации printi и пользы от предложенной мной оптимизации stoi ты не видишь.

а вот рассмотри основной цикл:

вызов term(); затем вызов tputstr

парсинг входных данных у тебя вызывается из term

tputstr и printi у тебя выполняются по времени равном времени передачи "\rT = ", число, и в максимуме 6 делений

если забыть о делениях, то если мы передаем трехзначное число (максимум), то суммарно имеем 3+5=8 символов переданных в RS

между двумя соседними вызовами term может (и проходит) пройти столько времени сколько надо для передачи 8 символов.

так как интерфейс работает на прием на той же частоте что и на передачу, то задержка между двумя вызовами parce - случайная и достигает времени прохождения 8 символов на интерфейсе.

теперь рассматриваем ситуацию:

  1. вызвана твоя parce
  2. по возврату управления из нее запущено выдача на RS tputstr printi и вот пока п.2 продолжается от управляющего хоста идет на полной скорости команды установки новых параметров

TON=20<CR>TOFF=30<CR>

|||||| | ||||||| |- 15 |||||| | ||||||+--- 14 |||||| | |||||+---- 13 |||||| | ||||+----- 12 |||||| | |||+------ 11 |||||| | ||+------- 10 |||||| | |+-------- 9 |||||| | +--------- 8 |||||| +----------- 7 |||||+-------------- 6 ||||+--------------- 5 |||+---------------- 4 ||+----------------- 3 |+------------------ 2

+------------------- 1

то есть видно что восьмой байт пришелся на начало следующей команды. теперь если вспомнить о делении (которых в максимуме 6) и о том что TON может задавать например 0 (не двузначное число), то на момент выхода из функций tputstr и printi мы можем иметь уже полностью принятую одну команду и принятый 1-й, 2-й или 3-й символ следующей команды.

идем наверх и смотрим, iidx BUFSTR_SIZE-1 не достигла еще, потому этот загадочный else еще не отработал, потому tidx остался равным 0 с предыдущего вызова term.

когда вваливаемся в term, идем по ветке if (tidx < iidx) c = 'T' if (c == '\r') - не отрабатывает else if (c == '\b') - не отрабатывает идет по последнему else, tidx=1 ждем пока не передастся байт 'Т', в это время RS принимает 9-й байт команды что идет нам.

новый вызов term (idle отработал, пока не считаем его время) c = 'O', опять по веткам if-else не проходит опять идет по последнему else, опять ждем пока не передастся байт в tputch в это время RS принимает 10-й байт, который девать некуда, а вот и он, загадочный if (строка 169), начинает декрементироать iidx и самое веселое он декрементирует и tidx

то есть на новом вызове term мы опять получим c='O' о том что принятые данные потеряли уже молчу, но тут получается бесконечный цикл все, система перестает принимать данные

хух, еле продрался сквозь твой код, но надеюсь ошибок трассировки не совершил. если я где-то ошибся, то поправьте меня.

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

то что "все работает" связано лишь с имеющимися паузами между подачей команд.

если же данным девайсом будет управлять комп в автоматическом режиме, то уставки он выдаст одну за другой. и абзац

DEO>> а блин, это старая, времен 86РК терминология DEO>> верх - прерывания DEO>> низ - основная программа DT>

DT> Странно. Ведь прерывания - это как раз нижний уровень. Может, DT> постараешься DT> пользоваться общепринятой терминологией? :) :)

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Dmitry E. Oboukhov! You wrote in conference fido7.ru.embedded to Arcady Schekochikhin on Sat, 05 Aug 2006 14:22:10 +0400:

AS>> Это в общем случае совсем неважно - ну будет легкий тремор фронтов AS>> - на таких скоростях это не важно.

DEO> я говорил об этом - он говорит что подбирать пришлось потому что DEO> расчетное реальному не соответствовало то есть быстродействие DEO> написанного видимо недостаточно для того чтобы гуляния фронтов были DEO> в рамках допустимого

Ну на шестой круг пошло... Расскажи подробно как ты рассчитаешь это константу, потом вернемся к теме. Гуляния фронтов тут никаким боком вообще.

AS>> Да тут и так никаких переборов! DEO> про подбор писал не я, а DO, я его за язык не тянул

Я писал. Поставил рассчетное, потом стал "подкручивать" его, пока не получил нужную мне частоту прерываний. Для этого вместо всего кода прерывания там была только генерация импульсов. Все это занимает минут 5 от силы, быстрее сделать, чем объяснить как это сделать, особенно тебе...

AS>> Константа таймера - 138 типа - AS>> но вот время входа в прерывание - величина переменная DEO> это что еще за новость такая? DEO> в честь чего это она переменная?

Она постоянная конечно, но заранее я ее не знаю. Я не смотрел код в дизассемблере и не знаю что там в точности делается. Проще подогнать на живом, чем считать.

AS>> - зависит от сгенерированного компилятором пролога - ее и учитывает AS>> константа -5 (138-5==133).

DEO> если простой вход в прерывание дает несколько-процентную поправку, DEO> то уж проход по веткам Receive дает куда большую поправку на DEO> времена фронтов Send :)

Не столь критичную, тем более, что во время приема передавать не надо.

DEO> я не знаю насколько сильно будет это влиять, но он написал что DEO> вынужден был подбирать числа, я и предложил ему раз и навсегда DEO> избавиться от гуляния времен: вынести ввод-вывод в начало DEO> прерывания, а сколько там займет логика уже не особо важно.

То, что ты предложил, не имеет никакого отношения к подбору этого числа. В седьмой уже раз говорю.

DEO> а я ему про это талдычу уже несколько писем

А ты не талдыч, а возьми и сделай. Не хочешь делать, не надо и талдычить. Вот с выводом чисел ты привел код, я посмотрел и принял такое решение, оно тут дает выигрыш, пусть и не очень нужный. Никто никому ничего не талдычил. Вот и для UART'а и остального - приведи работающий код, сравним, и если он будет лучше моего, я охотно с этим соглашусь и у себя буду использовать и не я один. А талдычить мне бесполезно, тут все знают, что переталдычить меня нельзя :)

dima

formatting link

Hello, Dmitry! You wrote to Nicolas Minakov on Sat, 05 Aug 2006 11:12:47 +0400:

NM>> А если вылазит, что модель памяти не та, что нужна, или еще какие NM>> нибудь подобные "мелочи"? DEO> то опции чуток меняешь у компилятора.

DEO> вот IAR может генерить ASM-листинги всех компилируемых файлов?

да.

DEO> а может он их в отдельный каталог класть чтобы не мусорить в каталоге DEO> проекта?

да.

DEO> а объектники туда-же отдельно положить, чтобы вообще чистота и уют DEO> были в каталоге проекта?

да.

DEO> а с cvs работать?

да. Точнее умеет работать с другими системами контроля версий.

DEO> в make добавил пару таргетов на коммит в cvs репозитарий и радуешься DEO> жизни :)

cvs commit проще руками набрать.

WBR, AVB

Медбpатья по pазyмy ждyт Вас в далеких миpах, Dimmy... Сyббота Авгyст 05 2006 11:51, Dimmy Timchenko wrote to Dmitry E Oboukhov:

DO>>> В каком низy? Кpитично ко вpемени там только то, что касается DO>>> UART'а. DEO>> а блин, это стаpая, вpемен 86РК теpминология DEO>> веpх - пpеpывания DEO>> низ - основная пpогpамма DT> Стpанно. Ведь пpеpывания - это как pаз нижний ypовень. Может, DT> постаpаешься пользоваться общепpинятой теpминологией? :)

А нетy ее, общепpинятой. Кто-то, напpимеp, называет основнyю пpогpаммy фоном, что тоже не лишено некотоpого смысла.

Майкл

Hello, Dmitry! You wrote to Dimmy Timchenko on Sat, 05 Aug 2006 11:22:26 +0400:

DT>>>>>> IAR тоже поделка? DEO>>>>> угу DEO>>> а чем хорош iar'овский компилятор? DT>> То есть "угу", а потом выясняется, что ты вообще не в курсе. ;) DEO> в самом начале, лет несколько назад я IAR'ом даже пару проектов собрал DEO> чем он хорош так и не увидел :)

Я регулярно пользуюсь gcc, iar, mcc, msvc. Иногда еще баглендовскими поделиями. Ничего душу не воротит.

Не делайте из еды культа (с).

WBR, AVB

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sat, 05 Aug

2006 13:30:16 +0400:

DO>> Hа фоне IAR (даже не принимая во внимание качество кодогенерации) DO>> gcc выглядит недоделанной поделкой.

DT> Кстати, иаровцы почему-то прайс-лист не приводят, надо с ними DT> общаться лично, а этого не хочется. Поэтому хотел спросить: сколько DT> примерно стоит их EW? Ты говорил, что на работе у тебя купленный.

HiTech купленный, а IAR' ом я по работе не пользуюсь (да и вообще не пользуюсь), так сделал несколько лет назад прикидочный проектик и все.

dima

formatting link

Hello Dmitry.

05 Aug 06 13:21, you wrote to me:

NM>> О! NM>> Ты сделал под 13?

Жаль. Мне казалось, что тебе это не сложно.

Меня беспокоит сейчас не тот кусок, который ты заменил.

Для меня есть. За этой возней я надеюсь, что разобрался кое в чем.

Для тебя - незнаю. Зачемто ты всетаки в листинг заглянул.

Ладно Хорошо. Меняем 13 на tiny45. Включаем вход в диференциальный режим, используем встроенный термодатчик, цепляем термопару. Получаем терморегулятор, которым можно рулить удаленно с компа. Есть несколько мест, куда подобное неплохо былобы воткнуть, Туда где надо не очень быстро, не очень точно и не очень дорого.

Потом вот скажи кому нужен например девайс на tiny13 из апнота avr422? А можно вывешивать апнот без проверки на железе? Nicolas

DEO>> речь не о компиляторах а о среде разработки, которой типы DEO>> компиляторов должны быть по барабану DO>

DO> Так и среду менять приходится. не приходится я как писал с помощью GNU-utils на ht-pic, так же сейчас пишу с их де помощью на gcc :)

среда разработки в моем случае вообще одна и та же

DEO>> а менять константы буду в одном из файлов перед сборкой :) DO>

DO> Да ради бога. Ты достиг невиданных успехов в автоматизации задачи,

это задача вообще типичная даже в твоем trm есть таблица, пусть и маленькая

Hello Dmitry!

05 Aug 06 02:30, Dmitry E. Oboukhov wrote to Dmitry Orlov:

DO> а она и не отвязана. это я время прохождения сигнала защиты от ключа к DO> ключу посчитал. DO> если у нас ток прется (а он обычно так и прется) через пару ключей DO> (или даже через три), то по защите одного надо вырубать все. а это DO> кроме как оптронами (ну или оптоволокном) никак друг с другом DO> не сочленить :)

Импульсными трансформаторами?

Всего доброго!

А. Забайрацкий.

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Dmitry E. Oboukhov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Sat, 05 Aug

2006 15:32:05 +0400:

DEO>>> которые в сумме и есть среда. очень очень гибкая.

DO>> Мне не нужна очень и очень гибкая.

DEO> ну это уж твои проблемы :)

Проблемы, это не когда что-то не нужно, а когда наоборот.

DEO> круг моих задач например заставляет часто менять инструментарий в DEO> зависимости от задач у тебя же похоже задачи однотипные, раз тебе DEO> гибкая, настраиваемая под задачу среда не нужна.

Не нужна. Я бы вообще не писал ничего сам, если бы было кому писать и кому мне было бы проще объяснить что надо написать, чем сделать это самому.

DEO>>> вот пример, расскажи как ты будешь решать его IAR

DEO>>> допустим тебе нужна таблица 200 значений f=(A,B,C,x) DEO>>> где A, B, C - постоянные которые ты планируешь выбрать в DEO>>> процессе отладки а таблица собственно ставит в соответствие f и DEO>>> x

DO>> Посчитаю таблицу на чем-то, на чем умею и в виде текстового файла DO>> буду ее включать инклюдом. Без разницы с IAR или с любым другим DO>> компилятором.

DEO> а я возьму и добавлю исходник на каком-либо другом языке (например DEO> m4 или perl) и у меня программа просто будет собираться из всего DEO> полученного.

Я не знаю ни m4 ни перла, скорее я на bc или bp напишу. Или попрошу хорошо знающего exel сотрудника там это сделать. А включать это в make или нет - дело десятое. Такая возможность и в iar есть.

DEO> а менять константы буду в одном из файлов перед сборкой :)

Да ради бога. Ты достиг невиданных успехов в автоматизации задачи, которой у меня за примерно 20 лет работы не возникало ни разу. А вот возникавшую несколько раз задачу - быстро освоить новый кристалл и средства разработки для него мне проще решать, используя нормальные IDE, где все разжовано и в рот положено. И где не надо думать что каждая из десятка -другого программ в каталоге bin делает и чем собираются скомпилированные объектники - линкером, или какой-то другой утилитой.

DO>> И в чем легче уходить с gcc по сравнению с iar?

DEO> речь не о компиляторах а о среде разработки, которой типы DEO> компиляторов должны быть по барабану

Так и среду менять приходится. Ну нет gcc для PIC, для x51, для ST7 и еще для кучи платформ. Понадобится по какой-то причине сменить avr на что-то другое - и привет, все по-новой осваивать. А IAR всяко больше платформ поддерживает, можно и не уходить с него. Так чем лучше с gcc уходить? Не так жалко :)?

dima

formatting link

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required