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

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

DO> Hадо _работающий__в__железе__пример__кода_. Словеса - по желанию, но ничего DO> кроме других словес это не породит. Толку и от тех и от других - только DO> видимость трафика. для начала давай доведи до работы в железе свой кусок кода коль взялся

см. предыдущее например письмо

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

DO> А не надо ничего считать. Становишься скопом на ножку Tx и смотришь влазит DO> сигнал в то, что должно быть, или не влазит. в данном случае он случайно влез именно из за этой случайной составляющей 4800 ты на этом же железе не сделаешь без полного переписывания программы

DO> Как обеспечить отсутствие DO> джиттера я указал выше. я указал выше, а не ты :)

DO> Это практически не требует изменений в программе и DO> переноса чего-то из прерывания наружу, чему надо еще гарантировать вызов DO> вовремя. про вызовы вовремя смотри мое предыдущее письмо

DO> Hет. И от метода это не зависит. Hа десятый круг пошли. А все потому, что DO> тебе лень сделать и убедиться. Учитывая, что от этого же таймера и DO> остальные "часы" в программе работают, одной константой все равно не DO> обойдешься. Формула для baudrate была в соседнем письме, но от DO> необходимости DO> померять частоту осциллографом она не спасает. остальные часы тоже прекрасно на общие константы завязываются но ты конечно если хочешь, то конечно можешь продолжать при изменении одного параметра (например скорости передачи) проглядывать всю программу на предмет что же там перестало/стало не так работать

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

DO> Они, как я уже говорил, вызывают idle(), в котором и реализована вся DO> управляющая логика программы. А терминалу в это время делать все одно DO> нечего - только ждать. заклинания переставай произносить пока не отработает tputstr и printi странно названная функция term не вызовется а вместе с ней странно названная функция parce.

DEO>> из за этого ты в них вынужден например вызывать CLRWDT. =>

DEO>> избыточность DO>

DO> Hе в них, а в Idle (ну и еще в требующих ожидания записи в eeprom). Именно DO> там, где и надо. WDT должен именно за основной частью, которая в idle DO> следить. Если она не работает - ахтунг. nb:[/home/dimka]$ grep CLRWDT tmp/trm.c|wc -l

4

то есть вачдог у тебя сбрасывается в 4-х местах. => дублеж одних и тех же функций в разных местах программы => трудности с внесением изменений в функциональность связанную с этими функциями

не хочешь этого видеть, не надо я не неволю

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

DO> Это решается индивидуально. Есть критичные ко времени места, а есть нет. в данном случае это тоже критичное место почему - показано в предыдущем письме

DO> Это очень легко лечится. исправлением ошибок

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

DO> Это задержка, а не ошибка. программа без ошибок нормально работает при близкой к 100% загрузке процессора. вариант с моими исправлениями, при близкой к 100% загрузке будет давать правильно расположенные во времени фронты при такой загруке у тебя он станет неработоспособным из за гуляния фронта вперед-назад

DEO>> то на 4800 это будет 100% и 44% DO>

DO>>> Бери и делай, кто тебе не дает? DO>

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

DO> Это напрасный труд. ну тогда и прекратим общение если так хочется :)

Reply to
Dmitry E. Oboukhov
Loading thread data ...

Hello Dmitry!

04 Aug 06 18:32, you wrote to Dmitry Orlov:

DO> UART на 4800 это 19200 частота прерываний (если в лоб делать) это 416 Вот именно, если в лоб делать. Если сделать прерывание от изменения состояния на входе, тогда будет максимум 4800 прерываний в секунду, плюс 4800 прерываний от таймера для передатчика. Двойная экономия.

Anatoly

Reply to
Anatoly Mashanov

 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 16:03:21 +0400:

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

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

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

DO>> К чему ты это говоришь? Какая разница когда прерывание закончится, DO>> если это происходит до прихода следующего?

DEO> выше ты сказал что половину процессорного времени занимает DEO> прерывание.

Около того.

DEO> субя по коду 2/3 этого времени занимает функция Receive.

Возможно, не помню уже.

DEO> то есть задержка на передачу у тебя на время 1/3*2/3 = 2/9 от DEO> периода тактирования передачи (первая 1/3 от того что прерывания у DEO> тебя с утроенной частотой идут).

Да. И что с того?

DEO> на задержка на 22% можно было бы наплевать если бы время выполнения DEO> процедуры Receive было бы постоянным. оно же у тебя случайное (в DEO> зависимости от того по каким веткам пройдет)

Оно не случайное конечно, но не постоянное. Есть некоторый джиттер. И что собственно, кого он волнует?

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

Отнюдь. Тем более, что реально прием и передача разделены во времени.

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

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

DEO> просто когда-нибудь проект станет больше и будешь искать баги

Это взято из большого проекта, и никаких багов я в этом месте уже давно не ищу.

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

Сделай другой, который годится.

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

DEO> я не путаю

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

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

DEO> естественно проще и не думать тоже проще ;)

Именно!

DO>> Выдача с приемом вообще не связаны.

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

Начало вообще никого не волнует, это асинхронный протокол.

DEO> мало того по каким веткам пройдет первое влияет на фронты второго.

Влияет, но не слишком сильно. Если это критично, см. выше.

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

DEO> разница в более рациональном использовании процессорного времени. DEO> можно больше квантов отдать другим процессам, например

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

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

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

Надо _работающий__в__железе__пример__кода_. Словеса - по желанию, но ничего кроме других словес это не породит. Толку и от тех и от других - только видимость трафика.

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

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

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

Ничего случайного, все закономерно и _меряется_.

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

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

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

Нет. И от метода это не зависит. На десятый круг пошли. А все потому, что тебе лень сделать и убедиться. Учитывая, что от этого же таймера и остальные "часы" в программе работают, одной константой все равно не обойдешься. Формула для baudrate была в соседнем письме, но от необходимости померять частоту осциллографом она не спасает.

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

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

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

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

Они, как я уже говорил, вызывают idle(), в котором и реализована вся управляющая логика программы. А терминалу в это время делать все одно нечего - только ждать.

DEO> из за этого ты в них вынужден например вызывать CLRWDT. =>

DEO> избыточность

Не в них, а в Idle (ну и еще в требующих ожидания записи в eeprom). Именно там, где и надо. WDT должен именно за основной частью, которая в idle следить. Если она не работает - ахтунг.

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

В каком порядке скопировал, в таком и расположено.

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

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

DEO> я пока вижу что то что представлено и работает - случайность

Однако оно - работает. А что ты там видишь - не имеет большого значения. А то, что ты сделал (точнее не сделал) не работает, а только место в эхе занимает. Хотя за время этой дискуссии уже можно было сделать.

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

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

DEO> это тоже нормальный подход, только не всегда оправдан отдать 50% DEO> процессорного времени какому-то умножению и оставить основной DEO> задаче 1-2% это удавить напрочь перспективу развития девайса

Это решается индивидуально. Есть критичные ко времени места, а есть нет.

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

Это очень легко лечится.

DEO> то есть если у тебя сейчас прерывание занимает 50% времени и ошибка DEO> выставления фронта Send - 22% (верхний нижний предел надо DEO> посчитать)

Это задержка, а не ошибка.

DEO> то на 4800 это будет 100% и 44%

DO>> Бери и делай, кто тебе не дает?

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

Это напрасный труд. Не надо править, и тем более выдумывать несуществующие ошибки. Надо сделать свое.

dima

formatting link

Reply to
Dmitry Orlov

Привет Arcady!

05 Aug 06 14:53, Arcady Schekochikhin писал Alex Mogilnikov:

AS> Hе путается. Полностью следует стандартам (вот до какого именно - не AS> помню - сам глянь).

Так нету у меня линуха...

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

3-4 у меня просто нет. :) Hо более 90% кода у меня не использует никаких нестандартных конструкций. Многие модули кочуют из проекта в проект без изменений годами.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... О сколько нам открытий чудных готовит открывашки крюк!

Reply to
Alex Mogilnikov

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

DO> Hе хочу, это не имеет никакого значения.

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

DO> Только размер. DO>

у тебя ошибка переполнения буфера в программе и потеря принятых данных, а ты заладил только размер только размер.

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

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

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

DO>

DO> Дело в том, что устройство на каждый принятый байт отдает эхо, а введенную DO> (и исполненную) команду подтверждает выдачей "OK\n". Потому человек или DO> другая программа должны не слать все подряд не глядя, а ждать правильной DO> реакции. Если ожидание превысит некий таймаут - начинать с начала. DO>

вот от того что не смог нормально реализовать программу работы с RS поехал условия, ограничения вводить на то как пользоваться гонору дофига слишком :-\

так вот и M$ делает, потому и венда такая дырявая

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

DO> Которую должен обеспечить или оператор или программа, если устройство DO> связано с другим устройством. DO>

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

DO> Hет, см. выше. да, ограничение ты только сейчас придумал в твоем файле в самом начале комент написан: line 4: /* no flow control. */

что означает что отсутствует управление обменом данных

formatting link
то есть пользователь должен придерживаться лишь протокола передачи данных, и вполне нормально он выпихнет данные одно за другим :) скорость его не заботит

короче все это выглядит так:

- пока не релизуете в железе такое же как реализовал я не лезьте в споры!

- а что ты там реализовал?

- а вот

- а тут недоработки, тут стиль ужастный, тут вообще ошибка переполнения буфера

- а сделаем ограничения на то что я релизовал

- а может ошибки поправим и гонор сбавим?

- "Hе хочу, это не имеет никакого значения."

в общем ЛОЛ!

Reply to
Dmitry E. Oboukhov

Привет Dmitry!

05 Aug 06 16:22, Dmitry Orlov писал Alex Mogilnikov:

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

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

DO> А Оркад тоже работает?

Hе использую.

DO> Рад за тебя, а у меня все это под виндой работает.

Я тоже за тебя рад. :)

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Я что, юзер, что ли, чтобы хелпы читать? (c) Vladimir Vassilevsky

Reply to
Alex Mogilnikov

Hello, Dmitry! You wrote to Alexander Torres on Fri, 04 Aug 2006 22:53:20 +0400:

AVB>>>> Лучший для какой архитектуры? Hапример для x86 данное утверждение AVB>>>> весьма спорно. DEO>>> эхотаг прежде всего разумеется AT>>

DEO>>> да и для x86 он лучший. AT>>

AT>> С какого бодуна, она стал "лучшим" для х86 ?! AT>>

AT>> Лучший. и наиболее употребимый для х86, на сегоднешний день - это AT>> MSVC, DEO> а с какого бодуна MSVC лучший?

Ну по крайней мере - для десктопных компов.

DEO> M$ в отчете написало? А так оно получается на практике. Видимо они знают как пользоваться недокументированными фичами винды.

DEO> да мало ли что она напишет

DEO> 99.9% программ которыми я пользуюсь невозможно скомпилить на MSVC DEO> а если и возможно то на это надо столько усилий вложить сколько никому DEO> в голову не придет

AT>> как бы не любить Борланд Билдер или что-то другое. DEO> аштойта? DEO> опять очередная поделка от мелкой коммерческой компашки с претензиями? DEO> ;)

Поделка весьма неплохая, кстати, хотя на мой взгляд - хуже чем Дельфи, и уже точно имеет не такое большое значение, как в свое время имели TP/TC/BP/BC.

With best regards, Alexander Torres. E-mail: snipped-for-privacy@yahoo.com [ Жамству бой !]

Reply to
Alexander Torres

Привет Dmitry!

05 Aug 06 16:20, Dmitry Orlov писал Alex Mogilnikov:

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

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

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

Всего наилучшего, [Team PCAD 2000] Алексей М. ... В главной роли - Сильвестр с талоном.

Reply to
Alex Mogilnikov

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

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

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

DO> Только она построена лет 7 назад при помощи карандаша и линейки и введена DO> руками. лень полезть в справочник и посмотреть формулу заставила тебя сделать столько действий

вот уж воистину - дурная голова ногам покоя не даст ;)

Reply to
Dmitry E. Oboukhov

Hello, Dmitry! You wrote to Alexey V Bugrov on Sat, 05 Aug 2006 00:00:02 +0400:

DEO>>> 99.9% программ которыми я пользуюсь невозможно скомпилить на MSVC DEO>>> а если и возможно то на это надо столько усилий вложить сколько DEO>>> никому в голову не придет AVB>>

AVB>> Это проблемы пейсателей. Правильные программы собираются любым AVB>> компилятором. DEO> а эти программы и собираются кучей компилеров, интеловским например DEO> итп вот MSVC не в кассу :) DEO> да и нет его кроме как под виндой нигде практически

Разумеется имелся ввиду компилятор для х86 под винду, поскольку для обычных офисных компов ничего другое никого кроме маргиналов не интересует.

With best regards, Alexander Torres. E-mail: snipped-for-privacy@yahoo.com [ Жамству бой !]

Reply to
Alexander Torres

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

Hello, Dmitry E. Oboukhov! You wrote in conference fido7.ru.embedded to Dmitry E. Oboukhov on Sat, 05 Aug 2006 17:17:24 +0400:

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

Не хочу, это не имеет никакого значения.

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

Только размер.

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

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

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

Дело в том, что устройство на каждый принятый байт отдает эхо, а введенную (и исполненную) команду подтверждает выдачей "OK\n". Потому человек или другая программа должны не слать все подряд не глядя, а ждать правильной реакции. Если ожидание превысит некий таймаут - начинать с начала.

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

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

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

Нет, см. выше.

dima

formatting link

Reply to
Dmitry Orlov

DO>>> Как обеспечить отсутствие джиттера я указал выше. DEO>> я указал выше, а не ты :) DO>

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

ты это отрицаешь, на сем и заканчиваем

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

DO> Именно так я и поступлю. ССЗБ

DO> Заклинания - это у тебя, у меня - работающая железяка. с ошибками переполнения буфера

DEO>> в данном случае это тоже критичное место почему - показано в DEO>> предыдущем письме DO>

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

DEO>> исправлением ошибок DO>

DO> Я уже сказал как. Тут можно ничего не трогать, не критично. Я сказал как, а не ты :-\

DO> Загрузка процессора - ровно 100%. Всегда, когда включено питание. бред процессор загружен когда он делает что-то когда он тупо ждет данных - он не загружен

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

Reply to
Dmitry E. Oboukhov

DO>> UART на 4800 это 19200 частота прерываний (если в лоб делать) это 416 AM> Вот именно, если в лоб делать. Если сделать прерывание от изменения AM> состояния AM> на входе, тогда будет максимум 4800 прерываний в секунду, плюс 4800 AM> прерываний AM> от таймера для передатчика. Двойная экономия. плюс гонки когда эти прерывания происходят одновременно. впочем видимо для такой маленькой скорости это не важно

Reply to
Dmitry E. Oboukhov

 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 18:02:21 +0400:

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

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

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

Только она построена лет 7 назад при помощи карандаша и линейки и введена руками.

dima

formatting link

Reply to
Dmitry Orlov


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

2006 18:38:00 +0400:

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

DO>> Hадо _работающий__в__железе__пример__кода_. Словеса - по желанию, DO>> но ничего кроме других словес это не породит. Толку и от тех и от DO>> других - только видимость трафика.

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

Мой код уже работает в железе. А твой - пока что только на словах.

DEO> см. предыдущее например письмо

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

DO>> А не надо ничего считать. Становишься скопом на ножку Tx и смотришь DO>> влазит сигнал в то, что должно быть, или не влазит. DEO> в данном случае он случайно влез именно из за этой случайной DEO> составляющей 4800 ты на этом же железе не сделаешь без полного DEO> переписывания программы

DO>> Как обеспечить отсутствие джиттера я указал выше. DEO> я указал выше, а не ты :)

Ты указал другой, куда более сложный путь.

DEO> остальные часы тоже прекрасно на общие константы завязываются но ты DEO> конечно если хочешь, то конечно можешь продолжать при изменении DEO> одного параметра (например скорости передачи) проглядывать всю DEO> программу на предмет что же там перестало/стало не так работать

Именно так я и поступлю.

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

DO>> Они, как я уже говорил, вызывают idle(), в котором и реализована DO>> вся управляющая логика программы. А терминалу в это время делать DO>> все одно нечего - только ждать.

DEO> заклинания переставай произносить пока не отработает tputstr и

Заклинания - это у тебя, у меня - работающая железяка.

DEO> printi странно названная функция term не вызовется а вместе с ней DEO> странно названная функция parce.

term там и не надо вызывать.

DEO>>> из за этого ты в них вынужден например вызывать CLRWDT. =>

DEO>>> избыточность

DO>> Hе в них, а в Idle (ну и еще в требующих ожидания записи в eeprom). DO>> Именно там, где и надо. WDT должен именно за основной частью, DO>> которая в idle следить. Если она не работает - ахтунг. DEO> nb:[/home/dimka]$ grep CLRWDT tmp/trm.c|wc -l 4

DEO> то есть вачдог у тебя сбрасывается в 4-х местах.

Одно можно выкинуть (из общего цикла) одно в idle, еще 2 - в обслуживании eeprom.

DEO> => дублеж одних и тех же функций в разных местах программы =>

Это не функция, а одна команда процессора.

DEO> трудности с внесением изменений в функциональность связанную с DEO> этими функциями не хочешь этого видеть, не надо я не неволю

Это просто ерунда, я не собираюсь модифицировать инструкцию clrwdt в процессоре...

DEO>>> это тоже нормальный подход, только не всегда оправдан отдать 50% DEO>>> процессорного времени какому-то умножению и оставить основной DEO>>> задаче 1-2% это удавить напрочь перспективу развития девайса

DO>> Это решается индивидуально. Есть критичные ко времени места, а есть DO>> нет.

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

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

DO>> Это очень легко лечится.

DEO> исправлением ошибок

Я уже сказал как. Тут можно ничего не трогать, не критично.

DEO>>> то есть если у тебя сейчас прерывание занимает 50% времени и DEO>>> ошибка выставления фронта Send - 22% (верхний нижний предел надо DEO>>> посчитать)

DO>> Это задержка, а не ошибка.

DEO> программа без ошибок нормально работает при близкой к 100% загрузке DEO> процессора.

Загрузка процессора - ровно 100%. Всегда, когда включено питание.

DEO> вариант с моими исправлениями, при близкой к 100% загрузке будет

Ты сделай свой вариант, а потом посмотрим как он будет работать.

dima

formatting link

Reply to
Dmitry Orlov

 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 18:00:45 +0400:

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

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

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

В таком случае, _среды_ разработки у тебя просто нет вообще. Или ты таковой громко называешь утилиту make?

dima

formatting link

Reply to
Dmitry Orlov


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

2006 19:36:58 +0400:

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

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

AM> Он предполагает использование линкера из другого пакета. AM> Соответственно, и документация на линкер имеется в комплекте пакета, AM> в который он входит. Вполне логично.

Логично, когда все, что надо, поставляется в одном пакете.

dima

formatting link

Reply to
Dmitry Orlov

NM>

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

NM>

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

NM>

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

NM> Для тебя - незнаю. Зачемто ты всетаки в листинг заглянул. да просто конкурс-конкурс ну и скачал поглядеть что там нам как эталон представляется :)

NM>

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

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

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

NM> Потом вот скажи кому нужен например девайс на tiny13 из апнота avr422?

442 ты хотел сказать? AN он не для того нужен чтобы собирать девайс по нему (хотя и это можно), а для того чтобы посмотреть как ПРАВИЛЬHО применять то или иное решение. я уверен, возьми мы и вытащи на обсуждение этот 442 AN, найди в нем переполнение буфера, отправь это в Atmel они немедленно уберут этот AN из свободного доступа до тех пор пока не поправят ошибок. да еще благодарности и извинения от них услышим :)

NM>А можно вывешивать апнот без проверки на железе? с таким кривым кодом (запутанное дерево вызовов, повторяющиеся фрагменты, ошибки переполнения буферов) разумеется нельзя даже с "проверкой на железе"

Reply to
Dmitry E. Oboukhov

Dmitry,

You wrote to Arcady Schekochikhin:

AS>> // Print 3 digit decimal with leading "=" AS>> procedure printi(byte in i) is AS>> tty = "=" AS>> var byte d = 100 AS>> forever loop AS>> // division is code consuming - make without! AS>> var byte c = "0" AS>> while i >= d loop AS>> i = i-d AS>> c = c+1 AS>> end loop AS>> tty = c AS>> if (d == 100) then AS>> d = 10 AS>> elsif (d == 10) then AS>> d = 1 AS>> else AS>> return AS>> end if AS>> end loop AS>> end procedure DO> это тот же алгоритм что и я написал выше :) DO> мир одинаковый и разные люди часто ходят одними дорогами :)

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

Andrey

Reply to
Andrey Arnold

DO> Hет у меня никакого переполнения буфера, тебе приснилось. ну любой человек может скачать и протрассировать руками :)

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

я например RS всегда отлаживаю на компе через shell-скрипты

DO>>> Дело в том, что устройство на каждый принятый байт отдает эхо, а DO>>> введенную (и исполненную) команду подтверждает выдачей "OK\n". DO>>> Потому человек или другая программа должны не слать все подряд не DO>>> глядя, а ждать правильной реакции. Если ожидание превысит некий DO>>> таймаут - начинать с начала. DO>

DEO>> вот от того что не смог нормально реализовать программу работы с RS DEO>> поехал условия, ограничения вводить на то как пользоваться гонору DEO>> дофига слишком :-\ DO>

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

DO> Это означает параметры настройки порта в терминале. Hе более того. ай, вот когда отмазываются я не люблю сделал не то, поправь :)

DEO>> короче все это выглядит так: DEO>> - пока не релизуете в железе такое же как реализовал я не лезьте в DEO>> споры! DO>

DO> Ты пока что не реализовал ничего, а в споры лезешь. dwork:[/home/dimka]$ du -hs mnt/work

6,1G mnt/work

DEO>> - а что ты там реализовал? DO>

DO> То, что работает, в отличие от. в случае если по ходу дела рассказываем клиенту "тут играть, тут не играть, тут рыбу заворачивали, сюда не глядеть" только в этом случае да, работает

Reply to
Dmitry E. Oboukhov

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.