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

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

AS> А с чего он должен "компилироваться"-то? а с того что седьмая версия HT-PIC такое еще не компилировала вполне допускаю что и сейчас еще те же проблемы вот и спрашиваю у тех кто пользуется сим компилятором так оно на самом деле или уже пофиксили?

AS> Функция foo() нереентарабельная, и нахрена же так AS> делать?

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

кстати static в микроконтроллерах часто юзается для оптимизации по скорости функции (кода пролога нет фактически), если RAM хватает разумеется :)

Hello Dmitry.

09 Aug 06 22:24, you wrote to me:

NM>> О фазовом регулировании в исходном варианте речи не идет... NM>> Там симистор работает просто как выключатель.

Посмотри сырец TRM внимательно:

ISR(TIM0_OVF_vect){

---- if (mOut == 1) SetBit(PORTB,Out);

---- ClearBit(PORTB,Out); } Hа ножке высокий, только пока выполняется ISR. И так каждые 138us. Или я тебя понял неверно?

Nicolas

Здpавствуй Dmitry!

Tuesday August 08 2006 14:24, Dmitry E Oboukhov wrote to Nicolas Minakov:

NM>> Дороже но не намного. 675 у нас стоит $~1.60, а 45 мне по $2 достали... NM>> Кроме того есть tiny25, периферия таже, но памяти вдвое меньше. NM>> Интересно как Обухов собрался воткнуть этот пример в 1К памяти?

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

DEO> пока что я поучаствовал в споре относительно того что якобы PIC на 20МГц DEO> быстрее AVR на 16МГц. сперва мне "объясняли" что-то про немерянную DEO> крутость оптимизирующих компиляторов для PIC, потом когда я продолжил DEO> сомневаться и привел ссылку на то за сколько тактов выполняется команда DEO> AVR меня попросили заткнуться потому что в железе я типа не делал. DEO> ну вот я и взял вчера и набросал RS232 на 8-мегагерцовом AVR. и отладил DEO> в железе. DEO> прекрасно на 8МГц влазит скорость 19200, а на 4МГц соответственно 9600. DEO> а исходный тезис был "сделайте хотя бы 4800"

Там кстати еще и аппаpатный умножитель тактовой можно включить.

NM> Я писал Аркадию, что при выполнении trm (до всех поравок ) на tiny45 на скорости 2400 скважность составляет 1 (во время работы прерывания) к 6 (все остальное время). NM> Hа что мне посоветовали разогнать до 4800. Это я и сделал. Оно заработало. NM> Скважность на 4800 я не смотрел. очевидно там будет скважность 2/6

то есть если взять максимум 5/6 (чтобы что-то оставить программе), то максимальная скорость получится

2400*5=12Кбод

это, на какой частоте у тебя проц там работает?

у меня на 8МГц 9600 дало 2.6/7 нагрузки, то есть если привести к той же скважности (5/6), то выйдет

2.6*6/42 ~ 5*7/42 = 15.6 ~ 35, К= 2.24

то есть 2.24*9600=21.5К

теперь чтобы сравнить эффективность реализаций надо к одной частоте привести.

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

RM> Товарищи! В Мотороле микросхемам ШИМа недокладывают! еще оптроны делают не соответствующие заявленным ТТХ

короче лучше не пользоваться мотороллой ;)

Hello Ruslan.

09 Aug 06 19:12, you wrote to me:

NM>> tiny45 сравнивать с PIC12F675 нельзя. Они разных годов разработки. NM>> Возможности 45 - шире, перифирия у него на борту богаче. Он заточен NM>> под подключение термопары,

Если я правильно понял, то мона 1 LSB=50uB . Скажи зачем еще надо делать у долларовой восьминожки диф. вход, -> PGA (усилитель c програмируемым коэфициентом усиления 1x- 20x), снижать опору до

1.1В, еще и ставить внутренний термодатчик? Посмотри на регистр ADMUX. Итого: усиление х20 с опорой 1.1 дают ~50мв диапазон. 10 разрядов,

Правда что там по точности получится - сложно сказать.

Еще остаются ноги на управление симистором. У таймеров очень много интересных режимов.

Nicolas

VV> А мы заключим с тобой пари, чтобы было интересно: VV> в течение недели выкладываю исходник, который делает loopback через VV> дуплексный программный UART на 57600 на 10MHz AVR. Ты платишь мне $1000. VV> Если нет - я тебе плачу $1000. Идет? что подразумевается под loopback? основная программа будет успевать данные на этой скорости обрабатывать? или опять планируется режим передал-подождал? и на чем написано будет, на C c использованием одного лишь тактирующего таймера?

VV> А мы заключим с тобой пари, чтобы было интересно: VV> в течение недели выкладываю исходник, который делает loopback через чистый loop-back на AVR на 115200 пишется так:

void interrupt_2baud_rate(void) { TTX=RRX; }

загрузка процессора получается 6/86 :)

Wed Aug 09 2006 09:15, Dmitry E. Oboukhov wrote to Vladimir Vassilevsky:

VV>> Hа самом деле cофтовый UART на 19200 на 10MHz AVR - это позорно. VV>> Даже при чисто софтовой реализации должно получаться раза в три VV>> быстрее.

DEO> ну и дай ссылку на непозорную реализацию :)

Дай уехал в Китай. DEO> короче это очередной звиздеж из серии "програмный RS на Z80 <1MIS" А мы заключим с тобой пари, чтобы было интересно: в течение недели выкладываю исходник, который делает loopback через дуплексный программный UART на 57600 на 10MHz AVR. Ты платишь мне $1000. Если нет - я тебе плачу $1000. Идет? VLV

DEO> PS: а на 10MГц легко получается 24400 (19200-описка)

"Ты вакциниpован пpотив бешенства?" (c) Aleksandr Volosnikov

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

Hello, Ruslan Mohniuc! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 09 Aug

2006 19:41:41 +0400:

DO>> И будешь каждое выпускаемое устройство калибровать?

RM> Ты никогда не делал устройств, требующих индивидуальной калибровки?

Делал, но стараюсь свести эти операции к минимуму. Особенно температурную калибровку...

dima

formatting link

NM>

NM> Посмотри сырец TRM внимательно: NM>

NM> ISR(TIM0_OVF_vect){ NM> ---- NM> if (mOut == 1) SetBit(PORTB,Out); NM> ---- NM> ClearBit(PORTB,Out); NM> } NM> Hа ножке высокий, только пока выполняется ISR. И так каждые 138us. NM> Или я тебя понял неверно? ну да, на ножку Out выдается ШИМ (хотя не таким кодом как ты тут привел, видимо я скачал какой-то другой Trm?)

в начале прерывания ставится бит в конце снимается и так на частоте 2400*3

так вот, во первых тут скважность случайная (сколько получилось от обработки RS), во вторых частота зависит от RS (соответственно трансформатор на сие завязан)

а в AtTiny если использовать ШИМ-контроллер, то можно выдать определенную скважность на ножку с произвольной (в пределах ШИМ-контроллера) частотой и все :)

это как с теми фронтами, то есть если фронты можно было легко поставить на правильное место, то тут уже гораздо сложнее, например если надо будет скважность поднять/уменьшить то придется мудрить :)

Hello, Dimmy! You wrote to Alexander Torres on Wed, 09 Aug 2006 05:39:51 +0400:

AT>>>> нету - упхнись. DEO>>> ПHХ AT>> Я надеюсь, модератор это тоже увидит?

DT> Забавно. :)

Завязывай с офтопиком. Этот адрес уже отключен.

DT> ======================================================================= DT> From : Alexander Torres 2:5020/400 Thu 03 Aug DT> 06 10:33To : Moderator DT> Subj : Склоки и разборки. Эффективно исключить. DT> =======================================================================

WBR, AVB

Hello Dmitry.

10 Aug 06 00:05, you wrote to me:

NM>> Я писал Аркадию, что при выполнении trm (до всех поравок ) на tiny45 на NM>> скорости 2400 скважность составляет 1 (во время работы прерывания) к 6 NM>> (все остальное время). Hа что мне посоветовали разогнать до 4800. Это я NM>> и сделал. Оно заработало. Скважность на 4800 я не смотрел.

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

Померял поточнее для скорости 4800, тактовая 8 МГц. Получилось, что на частоте

13.19+-0.01КГц, цикл 3.5 (ISR) / 15 (no ISR). Обработчик прерывания ISR я не менял, он такой как был в TRM-1.

8Мгц.

:-). Да и так все ясно.

Nicolas

Thu Aug 10 2006 00:15, Dmitry E. Oboukhov wrote to Vladimir Vassilevsky:

VV>> А мы заключим с тобой пари, чтобы было интересно: VV>> в течение недели выкладываю исходник, который делает loopback через VV>> дуплексный программный UART на 57600 на 10MHz AVR. Ты платишь мне VV>> $1000. Если нет - я тебе плачу $1000. Идет?

DEO> что подразумевается под loopback?

Под loopback подразумевается loopback.

DEO> основная программа будет успевать данные на этой скорости обрабатывать?

При нажатии клавиши "A" в терминале будем toggle светодиод. DEO> или опять планируется режим передал-подождал?

Дуплекс.

DEO> и на чем написано будет, на C c использованием одного лишь тактирующего DEO> таймера?

Да. Без внешних прерываний и аппаратной поддержки. VLV

"Ты вакциниpован пpотив бешенства?" (c) Aleksandr Volosnikov

Hello Dmitry.

10 Aug 06 00:48, you wrote to me:

NM>> Посмотри сырец TRM внимательно: NM>>

NM>> ISR(TIM0_OVF_vect){ NM>> ---- NM>> if (mOut == 1) SetBit(PORTB,Out); NM>> ---- NM>> ClearBit(PORTB,Out); NM>> } NM>> Hа ножке высокий, только пока выполняется ISR. И так каждые 138us. NM>> Или я тебя понял неверно?

Hу да, там только под PIC раздают :-). А вообще какая разница?

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

Это мысль здравая. Похоже, ты ШИМ используешь часто. Я только собарался поразбираться с апнотом по фазовому управлению тиристором. Это у микрочипов, чтото там про димер.... Как организовать регулятор температуры, чтоб еще и скорость нагрева регулировать, гдебы чтото внятное почитать. Люди говорят, что начинали со схемы регулятора на операционниках, а у меня и того нет.

Nicolas

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

Hello, Dmitry E. Oboukhov! You wrote in conference fido7.ru.embedded to Nicolas Minakov on Wed, 09 Aug

2006 23:48:37 +0400:

DEO> ну да, на ножку Out выдается ШИМ (хотя не таким кодом как ты тут DEO> привел, видимо я скачал какой-то другой Trm?)

Какой еще ШИМ? Просто импульсы с некоторой частотой, соответствующей при

2400*3 примерно 2.5 электрическим градусам, что даст ступеньку в рйоне нуля в худшем случае порядка 14 вольт. Повышение этой частоты приведет к заметному росту потребления, а то и перегрузке ножки контроллера, так что тут аккуратно надо.

DEO> в начале прерывания ставится бит в конце снимается и так на частоте DEO> 2400*3

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

Скважность тут никого особо не волнует.

DEO> обработки RS), во вторых частота зависит от RS (соответственно DEO> трансформатор на сие завязан)

Не особо и завязан...

DEO> это как с теми фронтами, то есть если фронты можно было легко DEO> поставить на правильное место, то тут уже гораздо сложнее, например DEO> если надо будет скважность поднять/уменьшить то придется мудрить :)

Просто перенести в другую часть функции один выводов в порт.

dima

formatting link

Hello Dmitry.

Wed Aug 09 2006 21:15, Dmitry E Oboukhov wrote to me:

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

Есть ещё размер кода.

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

Я ж тебе ответил - компилирует. Это ж плюсовая фича, а IAR поддерживает "Extended Embedded C++".

DEO> три года назад IAR (и HT-PIC) их не умели компилировать :) DEO> вот я и спросил, мне интересен какой там прогресс достигнут

Возьми, поставь и попробуй, если действительно интересно. 30-дневная версия берётся с сайта бесплатно и лечится от 30-дневности.

Dimmy.

Hello Dmitry.

Wed Aug 09 2006 16:20, Dmitry Orlov wrote to Kirill Frolov:

KF>> Это никак не препятствует их (не)инициализации.

DO> В main()? Они там не видны.

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

Dimmy.

Привет Dmitry!

09 Авг 06 года (а было тогда 22:15) Dmitry E. Oboukhov в своем письме к Dimmy Timchenko писал:

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

А где их, кроме как в union применять ?

DO> три года назад IAR (и HT-PIC) их не умели компилировать :) DO> вот я и спросил, мне интересен какой там прогресс достигнут DO> может кто в IAR попробовать компильнуть сей модуль? или в HT-PIC?

Hеименованные структуры в HT-PIC не поддерживаются. Hо их и в ANSI C нет. Микрочиповский компилятор их понимает.

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

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

DO>

DEO>> ну да, на ножку Out выдается ШИМ (хотя не таким кодом как ты тут DEO>> привел, видимо я скачал какой-то другой Trm?) DO>

DO> Какой еще ШИМ? самый натуральный програмный ШИМ :)

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

PS: а насколько я помню там ограничивающий резистор стоял для исключения перегрузки? (сейчас лень проект перекачивать)

DEO>> обработки RS), во вторых частота зависит от RS (соответственно DEO>> трансформатор на сие завязан) DO>

DO> Hе особо и завязан... если переразмерен, то разумеется не особо :)

DEO>> это как с теми фронтами, то есть если фронты можно было легко DEO>> поставить на правильное место, то тут уже гораздо сложнее, например DEO>> если надо будет скважность поднять/уменьшить то придется мудрить :) DO>

DO> Просто перенести в другую часть функции один выводов в порт. ага, опять подбор :-\

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required