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

Hello Dmitry.

Mon Aug 07 2006 08:50, Dmitry E Oboukhov wrote to Arcady Schekochikhin:

AS>> for(int i = 0; i < N; i++) AS>> ----^^^^ AS>> a[i] = 0; AS>> int i = 5; AS>> ^^^

DEO> кстати в стандарте C99 такой код уже можно писать, так что gcc должен DEO> его компилировать, не знаю как IAR

IAR вообще-то поддерживает EC++ и Extended EC++.

Dimmy.

Reply to
Dimmy Timchenko
Loading thread data ...

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

Hello, Arcady Schekochikhin! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 7 Aug 2006 09:22:31

+0000 (UTC):

DO>>>> TMR0 = 133; /* Reload timer */

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

AM>>> Корректнее TMR0 += 133 и учесть, что согласно даташиту таймер в

AS> Тем что учитывает возможную латентность прерывания из-за временного AS> запрета прерывания где нибудь в программе - например в ee_write().

Не понял. Если таймер успеет убежать от этого дальше, чем обычно, чем это поможет?

AS> И только не надо говорить, что в твоей програме это пофигу.

Таки по-фигу, в это время ей ничего ни принимать ни передавать не нужно.

dima

formatting link

Reply to
Dmitry Orlov

AM>>>> И в результате получаются чудовищные тормоза, избавиться от которых DO>>>

DO>>> Окстись, какие тормоза? Ты решаемую задачу еще помнишь? Это делается DO>>> для прежде всего ручного ввода пары чисел. Кому нужна эта скорость? DEO>> это задача на AN и делать ее надо правильно AT>

AT> Ты бредишь, что в общем-то, естественно для новичков в эхе. ПHХ

AT> Hо я совершено не понимаю - для чего это делать? Задача оптимизации этого AT> примера - вторична, а вот первичную - никто не хочет. первичная пока не решена (ошибки не поправлены)

Reply to
Dmitry E. Oboukhov

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

Да это и так ясно что пофигу - тебя не интересует сетка - относительных интервалов достаточно.

Reply to
Arcady Schekochikhin

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

Hello, Arcady Schekochikhin! You wrote in conference fido7.ru.embedded to Nicolas Minakov on Mon, 7 Aug

2006 09:59:24 +0000 (UTC):

AS> Не мог бы ты попробовать такой код - он должен работать быстрее. Уже AS> сейчас видно что (с учетом 8мгц против 4) АВР вроде на 30% быстрее AS> - возможно этот код даст еще скорости - AS> тогда 4800 будет 100% реализуемо (9600 на 8Мгц).

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

dima

formatting link

Reply to
Dmitry Orlov

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

Reply to
Arcady Schekochikhin

Hello Dmitry.

Воскресенье Авгyст 06 2006 11:55, you wrote to Dmitry Orlov:

DO> вот константу в приближении вполне можно доверить считать компилятору DO> ) правда не знаю справится ли hi-tech, но что-то в таком духе DO> можно соорудить:

DO> void interrupt int_entry(void) DO> { DO> asm { DO> label: nop DO> }

DO> byte begin_length=label-int_entry; DO> ...

DO> а дальше этот begin_length перевести в тики таймера.

DO> вычесть адреса должен и компилятор сам уметь, как асмовские DO> инструкции оформляются в ht-pic не знаю, считай что вышеприведеное - DO> псевдокод :)

Долго вы с этой константой носитесь, а почему игнорируете такой вариант:

TMR0 += 256 - сколько_тактов_наш_период;

Leha

Reply to
Leha Bishletov

Привет Dmitry!

07 Авг 06 года (а было тогда 10:08) Dmitry E. Oboukhov в своем письме к Andrey Bivshih писал:

AB>> А какой в этом усложнении смысл в таком простом девайсе ? AB>> Что по очереди, что все вместе "Ok", все равно ждать. AB>> И в сложном устройстве, пачкой команды можно отправлять только AB>> до того момента, когда следующая команда будет зависеть от ответа AB>> "Ok" или "Error".

DO> во первых нормализация менеджера процессов в основной программе не DO> даст усложнения (а возможно наоборот)

Если оно и так работает - любое изменение - лишняя работа.

DO> во вторых суть данного девайса - AN на выходе.

Hа сколько я понял, суть этого девайса не много в другом.

С уважением, Andrey 07 Авг 06 года

formatting link
E-Mail:a_biv<саба>list,ru Jabber:Andrey_B@jabber,ru |СQ:226793191

Reply to
Andrey Bivshih

Привет Arcady!

07 Aug 06 03:30, Arcady Schekochikhin писал Alexander Terlyanskii:

AS> for(int i = 0; i < N; i++) AS> ----^^^^ AS> a[i] = 0; AS> int i = 5; AS> ^^^

6.8.5.3 The for statement 1 The statement for ( clause-1 ; expression-2 ; expression-3 ) statement behaves as follows: The expression expression-2 is the controlling expression that is evaluated before each execution of the loop body. The expression expression-3 is evaluated as a void expression after each execution of the loop body.

it is reached in the order of execution before the first evaluation of the controlling expression. If clause-1 is an expression, it is evaluated as a void expression before the first evaluation of the controlling expression.133)

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Западно-уральское региональное общество добровольных учредителей.

Reply to
Alex Mogilnikov

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

Hello, Dmitry E. Oboukhov! You wrote in conference fido7.ru.embedded to Alexander Torres on Mon, 07 Aug

2006 15:08:42 +0400:

AT>> Hо я совершено не понимаю - для чего это делать? Задача оптимизации AT>> этого примера - вторична, а вот первичную - никто не хочет. DEO> первичная пока не решена (ошибки не поправлены)

Первичную пока что никто не решил - не реализовал то же, но на другом контроллере/языке. А оптимизация и воображаемые тобой ошибки - дело вообще десятое.

dima

formatting link

Reply to
Dmitry Orlov

Hi Dmitry!

07 Aug 06 13:31, Dmitry Orlov wrote to Slav Matveev:

SM>> Килобайты текстового файла, куда уж более осмысленно?

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

для того что бы понять синтаксис вида parameter = value не надо иметь выдающихся умственных способностей.

SM>> чем удобно? что шаг вправо, шаг влево - побег, прыжок на SM>> месте - провокация.

DO> Именно этим.

ну значит у тебя все проекты имели единственный выход: main.exe

SM>> убийственная аргументация. "я этого не знаю, я этого не умею, SM>> поэтому это - говно".

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

SM>>>> раза <send> строчкой ниже и запустить на выполнение SM>>>> собраный проект, это нельзя считать "средой разработки"?

DO>>> А один раз нажать F9 и для того и для другого не будет удобней?

SM>> f9 на клавиатуре отсутствовало.

DO> В 86 году (20 лет назад)? Hу так в утиль ту клавиатуру. подозреваю что давно сдана. но f9 от этого на ней не появилась.

DO>>> Такая же, как между телевизором и жменей радиодеталей.

SM>> походу дела "пастернака не читал..." ?

DO> Причем тут Пастернак?

ты пытаешься с говном мешать вещи, которые видел один раз, издалека, на картинке.

Slav.

Reply to
Slav Matveev

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

Hello, Arcady Schekochikhin! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 7 Aug 2006 11:15:33

+0000 (UTC):

AM>>>>> Корректнее TMR0 += 133 и учесть, что согласно даташиту таймер в

AS>>> Тем что учитывает возможную латентность прерывания из-за AS>>> временного запрета прерывания где нибудь в программе - например в AS>>> ee_write().

AS> Тем что следующее прерывание таки произойдет через 138uS от того AS> времени когда должно было произойти текущее - соответственно

Брр. Таймер считает вперед, прерывание возникает при его переполнении, в него грузится дополнение до 256 + поправка на прошедшее с момента прерывания до момента загрузки время. Я же приводил тут формулу из другого проекта для рассчета этой базы (без учета поправки). Наверное правильно ты заметил, что в методических целях стоило таки писать в проекте не число, а эту формулу, чтобы лишние вопросы не возникали...

AS> временная сетка останется стабильной и не будет накапливаться AS> ошибка.

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

AS>>> И только не надо говорить, что в твоей програме это пофигу.

AS> Да это и так ясно что пофигу - тебя не интересует сетка - AS> относительных интервалов достаточно.

Ну да.

dima

formatting link

Reply to
Dmitry Orlov

Mon Aug 07 2006 12:57, Slav Matveev wrote to Dmitry E. Oboukhov:

SM> позвольте полюбопытствовать что это за архитектура, у которой SM> прерывания в верхних адресах?

Типично для процессоров от Моторолы.

VLV

"Что даст мне свет, чего я сам не знаю?" (c) Гете "Фауст"

Reply to
Vladimir Vassilevsky

Здравствуй, Dmitry!

Как то 07 Aug 06 в 18:24, Dmitry Orlov писал Arcady Schekochikhin: AS>> Тем что следующее прерывание таки произойдет через 138uS от того AS>> времени когда должно было произойти текущее - соответственно

DO> Брр. Таймер считает вперед, прерывание возникает при его переполнении, DO> в него грузится дополнение до 256 + поправка на прошедшее с момента DO> прерывания до момента загрузки время. Я же приводил тут формулу из DO> другого проекта для рассчета этой базы (без учета поправки). Hаверное DO> правильно ты заметил, что в методических целях стоило таки писать в DO> проекте не число, а эту формулу, чтобы лишние вопросы не возникали... Ой, блин, ну как же вы настолько друг-друга не понимаете :) Да, таймер считает вперед, я сначала тоже не врубился. Hо! В момент переполнения выполняются несколько тактов для сохр. контекста и прочее, и к моменту перезагрузки таймера значение там будет уже не нулевое, а, например, t. Ты с осциллом и добиваешься компенсации этого t путем его прибавления, но находишь его экспериментально. Если ты не затрешь текущее t а прибавишь к нему нужную константу, то ясно, что следующее переполнение наступит раньше именно на t тиков(с момента перезагрузки таймера), то есть _ровно_ через вычисленное значение времени с предыдущего переполнения. AS>> временная сетка останется стабильной и не будет накапливаться AS>> ошибка. DO> Она никуда не накапливается, с чего бы ей накапливаться? С того, что если ты неправильно подберешь константу, то частота уйдет :)

2AS: Все гениальное просто :)

Удачи! Pasha

rа4аrb@rаmblеr.ru

_*NO CARRIER*_ Now playing: silence (Winamp is _dead_)

Reply to
Pasha Popov

Привет Anatoly!

07 Авг 06 года (а было тогда 12:19) Anatoly Mashanov в своем письме к Alexey V Bugrov писал:

AB>> заряда конденсатора до порога через эталонный и измеряемый AB>> резистор по очереди. В этом случае отношение измеряемого AB>> резистора к эталонному строго равно отношению времен заряда.

AM> Ч3-64 так и сделан.

Там имеется интерполятор, в котором зарядные и разрядные токи не равны, зарядный больше разрядного в К=128 раз, во столько-же раз входной импульс разширяется. Поэтому для компенсации дрейфов нулей компараторов, задержек, применяется нехилая процедуры калибровки этого интерполятора.

AM> Простотой он не блещет.

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

formatting link
Это от Ч3-64, в Ч3-64/1 чуть по другому, но не принципиально.

AM> Сейчас мне проще вбить в чип нелинейные функции, чем AM> заморачиваться на высококачественные ключи, подключающие AM> по очереди эталонные резисторы с субнаносекундным временем AM> срабатывания.

Применительно к Ч3-64, одной математикой обойтись не получится.

С уважением, Andrey 07 Авг 06 года

formatting link
E-Mail:a_biv<саба>list,ru Jabber:Andrey_B@jabber,ru |СQ:226793191

Reply to
Andrey Bivshih

Hello Arcady.

07 Aug 06 13:59, you wrote to me:

Посмотрю обязательно, но я писал под tiny45, мне надо разобраться. Строку разбирать тоже гдето надо. А что касается скорости 4800 - ну поменял я TCNT0 с 121 до 188, ну работает на

4800. Поставил ton=26 toff=30, касаюсь рукой - NTC греется и диод тухнет (я вместо транса - светодиод прилепил)... Токо нафиг этот разгон? Мельтешить в терминале вдвое быстрее?

tiny45 сравнивать с PIC12F675 нельзя. Они разных годов разработки. Возможности

45 - шире, перифирия у него на борту богаче. Он заточен под подключение термопары, и имеет внутренний термодатчик. У него на борту Universal Serial Interface. Заниматься на нем разгоном софтового уарта, только для того чтобы чтото комуто доказать - еще один штрих к картине моей альтернативной одаренности. Hа tiny45 можно спокойно получить 115200 через USI, только придется отдать не две а три ноги.

Прога у меня занимает 1888, Больше половины памяти не занято. Из обязов не вошли еще сглаживающий фильтр и собака (Собака за ненужностью закоментирована). Hо по сути это все тотже trm Орлова. Есть версия под winavr, есть под iar. Если надо - намылю. Класть негде.

А со сглаживанием - простая замена асмовского куска на temp /= 16; // divide int /16

скомпилировалась нормально, но вызвала переполнение в симуляторе и в риале. Иар сразу на бред ответил эррором при линковке. От того у меня и не работало АЦП и иногда портился конец строки. Сглаживание я выбросил.

Nicolas

Reply to
Nicolas Minakov

AM>>> ключи, подключающие по очереди эталонные резисторы с AM>>> субнаносекундным временем срабатывания. DO>> а нахрена туда субнаносекунды? AM> У нас противоположные задачи. Вы мерите часами напряжение, я мерю время AM> вольтметром. LOL!

Reply to
Dmitry E. Oboukhov

Hello Dmitry!

07 Aug 06 09:05, you wrote to me:

AM>> И в результате получаются чудовищные тормоза, избавиться от DO> там всего-то нормализовать менеджер процессов в функции main - убрать DO> тупые циклы ожидания и система сможет начать работать асинхронно: Ага. С задержками в десятые доли секунды на каждую передиспетчеризацию. Плавали, знаем. Потому и говорю: Windows не заслужила право называться Операционной Системой. DO> прием сам по себе передача сама по себе :)

AM>> У меня в одном дивайсе имеется буфер на 8 байт. Соответственно,

DO> буфер разумеется должен быть, но коль процессор у него озадачивается DO> выполнением длительных команд (например когда он передает он ни на что DO> не реагирует, когда он переводит числа в строки и строки в числа опять DO> в таком же состоянии, когда он тупо ждет когда доработает АЦП, DO> работающее насколько я понял на 62Кгц, то есть частота преобразования DO> ~ 6кГц - опять сравнимо с тактом, он опять же ни на что не реагирует.

- значит, программист точно не читал ничего, кроме Дюма, и не имеет никакого понятия ни о прерываниях, ни о многозадачных системах. Если проц передает (Даже если он передает через программу) - регулярно срабатывают прерывания по таймеру, и в них можно сделать все экстренное. Перевод чисел в строки - это одна операция деления (Hу потрясающая задержка) в фоновом процессе, прерывания продолжают работать. Когда он тупо ждет, когда доработает АЦП - ему никто не мешает вызывать обработчик команд в цикле ожидания.

DO> DO тут кричит что мол ему фиолетово что сколько работает, что если МHЕ не фиолетово. У меня частота прерывания 20 кгц (Это 250 циклов команд между сигналами прерывания), и потеря одного прерывания абсолютно фатальна. При этом дивайс ухитряется программно растянуть этот интервал до 1000 циклов, а в фоне времени вообще хватает на все. DO> понадобится он сюда весь math.h притащит, а я говорю что math.h сюда DO> тащить не надо, потому что уже сейчас проблемы с потерей данных DO> имеются.

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

Anatoly

Reply to
Anatoly Mashanov

AM>>> И в результате получаются чудовищные тормоза, избавиться от DO>> там всего-то нормализовать менеджер процессов в функции main - убрать DO>> тупые циклы ожидания и система сможет начать работать асинхронно: AM> Ага. С задержками в десятые доли секунды на каждую передиспетчеризацию. AM> Плавали, знаем. Потому и говорю: Windows не заслужила право называться AM> Операционной Системой. короче я взял сейчас и посидел немного после работы. взял первый попавшийся готовый девайс с RS232, и написал свой драйвер. ничего не оптимизировал, так просто как думаю так и написал.

сейчас пока передает тот байт который принимает обратно. написано на AtMega8 (в этой плате такой процессор стоит) если говорить о конкурсе, то там задача будет решаться на AtTiny, в которую прога впихивается со свистом (сейчас написанная)

так вот на 8МГц АтМега спокойно получается скорость 9600Бод,

повесил светодиод: на входе в прерывание ножку в плюс на выходе - в ноль

максимальная скважность получается 2.7/7=0.38.

то есть программный RS232 на AtMega8-8 проходит со свистом на 19200 бод.

если говорить об AtTiny, то их две разновидности с буквой V и без оной,

одна работает на 4МГц, соответственно ее максимальная скорость получается 9600, вторая на

10МГц, максимальная скорость получается 19200.

вот и вся разница PIC-AVR :)

сейчас я поеду домой, до дома доеду выложу драйвер.

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

фотографии платы и осциллографа куда-то там поставленного сделаю завтра. или послезавтра.

Reply to
Dmitry E. Oboukhov

Hello Dmitry!

07 Aug 06 11:09, you wrote to me:

AM>> ключи, подключающие по очереди эталонные резисторы с AM>> субнаносекундным временем срабатывания. DO> а нахрена туда субнаносекунды? У нас противоположные задачи. Вы мерите часами напряжение, я мерю время вольтметром.

Anatoly

Reply to
Anatoly Mashanov

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.