несколько мега8 и UART

Пpивет, Nickita!

*** 07 Sep 06 14:36, Nickita A Startcev wrote to Ruslan Mohniuc:

NS> Примерно 5 операций на канал*такт,

Если будешь крутить цикл перебора каналов - в пять не уложишься никак. Только линейным куском последовательно для всех каналов, да еще и без битовых операций над портом.

NS> на 8мгц получится примерно 120 NS> градаций на каждый из 16 каналов. По одному каналу таймера (условный NS> 0) ыключаем все ШИМы, через 0.8 мс отрабатываем указанный цикл.

Если нужно быстродействие - то все можно сделать на регистрах. При 8 MHz тактовой запросто 128 ступеней для 24 каналов, и 256 - при тактовой 16 MHz. Даже если делать в обработчике прерываний, с превентивным сохранением и загрузкой регистров. И даже останется чуток на дополнительную проверку UART ввнутри цикла.

с уважением Владислав

Reply to
Vladislav Baliasov
Loading thread data ...

Thu Sep 07 2006 10:11, Nickita A Startcev wrote to Yuriy K:

YK>>>> Или перестать страдатать х..ней, сходить на сайт атмела, сделать YK>>>> RTFM и купить в

formatting link
ATMEGA2560-16AU за $10.08 у которой YK>>>> есть 16 аппаратных ШИМ-каналов.

NAS>>> не 16, а 12

YK>> 16. RTFM.

NAS> А почему тогда в ПДФке написано, что 12?

Hе тот документ читаешь?

formatting link
NAS>>> Вот-вот. Советуют електронный микроскоп вместо молота и NAS>>> наковальни.

Для рассматривания мелких структур электронный микроскоп полезнее молотка.

YK>> Тебе важен результат или процесс?

NAS> Результат, но при ограниченной сложности процесса.

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

"Resistance is futile"

Reply to
Yuriy K

Hi Nickita !

Совсем недавно 07 Sep 06 13:36, Nickita A Startcev писал к Ruslan Mohniuc:

RM>> Я почти уверен, что это можно сделать софтово. Технология RM>> простая: в RAM строится таблица, к которой идет обращение от 0.8 RM>> до 2.2ms в начале каждого 20ms цикла. Каждая строка этой таблицы RM>> 20-битная,

NS> То есть, всего по 20 градаций каждого канала? Hет. Это двадцать однобитовых каналов. Ты вроде про ШИМ говорил? Каждый битик соответствует состоянию одного из каналов ШИМ в этот момент времени. В каждый момент времени перемещаешь эту величину в порт и все. В следующий момент времени берешь следующее число.

NS> У меня тут созрел другой вариант, что-то типа NS> need = 0; NS> do{ NS> if ( lim[0] > 0 ) NS> { NS> need = 1; NS> lim [0] --; NS> }else{ NS> PORT &= ~(1); NS> }

NS> }while(need!=0);

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

NS> Примерно 5 операций на канал*такт, на 8мгц получится примерно 120 NS> градаций на каждый из 16 каналов. Ты же говорил про 20 каналов?

NS> По одному каналу таймера (условный NS> 0) ыключаем все ШИМы, через 0.8 мс отрабатываем указанный цикл.

Да на здоровье. Мой опус в-общем-то о том, что это можно сделать софтово. Hу и в доказательство привел один из вариантов, как это можно сделать.

WBRgrds Ruslan

Reply to
Ruslan Mohniuc

Hello Nickita.

Thu Sep 07 2006 14:36, Nickita A Startcev wrote to Ruslan Mohniuc:

NAS> need = 0; NAS> do{ NAS> if ( lim[0] > 0 ) NAS> { NAS> need = 1; NAS> lim [0] --; NAS> }else{ NAS> PORT &= ~(1); NAS> } NAS> }while(need!=0);

H-не понял, а где need сбрасывается?

Dimmy.

Reply to
Dimmy Timchenko

Если тебе не нужно все ШИМы синхронизировать, т.е. можно "сначала один, потом второй", то у МЕГА16-го таймера1:

- можно выставить максимальное значение в регистре захвата (да, вот такие они извращенцы!) - выставляем время цикла 2.5мс;

- можно генерировать прерывания по его достижению;

- значения двух регистров сравнения в этот-же момент защёлкиваются (аппаратно) - следовательно, в обработчике можно загнать в них значения для следующего цикла;

- снаружи ставим счётчик и два дешифратора; счётчик тактируем любым из сигналов OC1A/B;

- ещё одним сигналом удерживаем счётчик в начале - для синхронизации с программным. В результате имеем 2*8 каналов, распредёлнных по 20-ти милисекундам.

В принципе, если сформировать простейшей схемой совпадения сигнал окончания импульсов на обоих выходах (хоть через аналоговый компаратор - он сразу и прерывание выдаст :-) ), то можно обойтись и без аппаратного счётчика. Иначе ещё потребуется согласовать полярность сигналов, поступающих на счётчик и на дешифраторы. А можно действительно уложить эту невероятно сложную логику в какую-нибудь ЕПМ3032 и ещё чем-то её нагрузить. Проблема будет с 3.3в питанием, но можно ведь и саму мегу от него запитать... Зато можно сразу установить ту полярность выходных сигналов, которая нужна, а не ту, которую даёт дешифратор.

Reply to
Alexander Derazhne

Привет, Nickita!

05 Sep 06, Nickita A Startcev wrote to Alexander Zabairatsky:

AZ>> К тому же i2c и spi сильно далеко не утянешь, в отличие от AZ>> простого UART'а. NAS> В худшем случае там на соседнюю плату тянуть.

Получается, и2ц вполне достаточно. Ты о том же, что и в "су.хардв.отхер" :) ?

Reply to
Edward Courtenay

Edward,

You wrote to Nickita A Startcev:

EC> 05 Sep 06, Nickita A Startcev wrote to Alexander Zabairatsky: AZ>>> К тому же i2c и spi сильно далеко не утянешь, в отличие от AZ>>> простого UART'а.

Слава драйверу!

NAS>> В худшем случае там на соседнюю плату тянуть. EC> Получается, и2ц вполне достаточно.

Для I2C тоже есть драйвера.

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

Andrey

Reply to
Andrey Arnold

Привет, Andrey!

09 Sep 06, Andrey Arnold wrote to Edward Courtenay:

AA> Слава драйверу!

Это само собой.

NAS>>> В худшем случае там на соседнюю плату тянуть. EC>> Получается, и2ц вполне достаточно. AA> Для I2C тоже есть драйвера.

AA> Hа тот же (всем известный дальнобойный) CAN - протокол - это одно, AA> физическая реализация канала передачи - это другое, так и тут.

Сеть сабжа лучше, имхо, организовать на и2ц, а наружу вывести один UART.

Reply to
Edward Courtenay

Dimmy, ты ещё здесь сидишь?

Понедельник Сентябрь 04 2006 04:49, Dimmy Timchenko wrote to George Shepelev:

DT>>> Хм, может быть. Я-то программист, для меня диод - это DT>>> устройство, пропускающее ток в одну сторону. ;) GS>> Логично ;) GS>> Вот только диод - не идеальное устройство, на нём остаётся GS>> падение напряжения, а иногда и утечка в закрытом состоянии GS>> критична... DT> Для той схемы, о которой шла речь, идеальное и не нужно. :)

Падение напряжения на диоде заметно снижает помехоустойчивость.

DT> Там хватило бы, например, и "квазидвунаправленной" логики x51.

Там легче, у i51 часть портов изначально работают практически в режиме "открытого коллектора"...

Георгий

Reply to
George Shepelev

Nickita, ты ещё здесь сидишь?

Понедельник Сентябрь 04 2006 11:07, Nickita A Startcev wrote to George Shepelev:

NS>>> TxD слейвов аналогично к TxD мастера. GS>> А тут ерунда написана. К RxD подключать, причём так, чтобы GS>> передатчики не "подрались". NS> Опечат NS> очка тут вкралась.

Ага, ага ;-)

NS> Вопрос именно в том, как минимальными затратами отвязать.

Я бы поставил логический элемент с ОК. Плюс "подтягивающий" резистор. Если ну никак нельзя обойтись без "параллельного" включения uart'ов...

Георгий

Reply to
George Shepelev

Nickita, ты ещё здесь сидишь?

Понедельник Сентябрь 04 2006 11:08, Nickita A Startcev wrote to George Shepelev:

NS>>> Два передатчика одновременно _не_ передают. GS>> Когда два передатчика не передают, они одновременно держат GS>> логический уровень, соответствующий "стоп-импульсу". NS> гм. А если ногу отвязать от UART'а и перевести в Z?

Чем? И в какой именно момент менять состояние "ноги"?

NS>>> Все равно надо? GS>> Как думаешь, что будет, если один передатчик продолжает GS>> удерживать уровень "стоп-импульса", а другой пытается передать в GS>> ту же линию "старт-импульс"? NS> А что будет? Сгорит или нет?

Скорее всего не сгорит, но корректных уровней сигнала не будет, а ещё потребление увеличится...

Георгий

Reply to
George Shepelev

Nickita, ты ещё здесь сидишь?

Понедельник Сентябрь 04 2006 11:10, Nickita A Startcev wrote to George Shepelev:

NS>>> Может вообще подвести UART только к одной меге, а остальные NS>>> связать по i2c? как-то оно некузяво и 2 лишних ноги тратится. GS>> Если есть I2C - делай весь обмен по I2C. NS> Hаружу надо/лучше/удобнее uart вывести,

Выведи, если надо.

NS> так почему бы не подвести сигналы с uart ко всем кристаллам и не NS> заморачиваться с uart <-> i2c преобразованием?

А какое устройство ты собираешься "снаружи" к uart'у подключать? Ты уверен, что оно "не подерётся" с остальными передатчиками на "общей шине"?

Георгий

Reply to
George Shepelev

Alexander, ты ещё здесь сидишь?

Понедельник Сентябрь 04 2006 19:48, Alexander Zabairatsky wrote to Nickita A Startcev:

NS>> SPI - минимум 4 ноги занято, uart и i2c по две. AZ> К тому же i2c и spi сильно далеко не утянешь, в отличие от простого AZ> UART'а.

"Простой UART" "сильно утягивается" при помощи чипов - формирователей сигнала. Кто мешает к примеру задействовать формирователь P82B715 или P82B96?

Георгий

Reply to
George Shepelev

Ruslan, ты ещё здесь сидишь?

Вторник Сентябрь 05 2006 07:07, Ruslan Mohniuc wrote to George Shepelev:

DT>>>> Hе в тему: интересно, а бывают кварцы с "двоичными" частотами? DT>>>> :) не 16,000,000, например, а 16*1024*1024 = 16,777,216? RM>>> Бывают любые. Только доставабельность у них очень разная. :) GS>> Кварцы на 10,24 МГц нынче достаются без особого труда. RM> Он не является степенью двойки ни в МГц, ни в кГц, ни в Гц.

Является в десятках килогерц. Чем 10 кГц хуже, чем 1 кГц или 1 МГц? ;)

Георгий

Reply to
George Shepelev

Привет Nickita!

Втp Сен 05 2006 14:48, Nickita A Startcev пишет Dmitry E. Oboukhov:

DO>> сотворить или просто на внешнем таймере[ах]

NS> в идеале на плате вообще только мега16 с кодом и обвязка в виде NS> МАХ232, всяких ключей и RC цепи на ресет. А тут еще лишний корпус и NS> лишний код..

NS> Кстати, напомните, pls, недорогой аналог для max232

SIPEX ...Китайчатина .... SP202 напpимеp ...

С наилучшими пожеланиями Nick .

Reply to
Nick Barvinchenko

Hello George.

Sat Sep 09 2006 21:01, George Shepelev wrote to me:

GS>>> Вот только диод - не идеальное устройство, на нём остаётся GS>>> падение напряжения, а иногда и утечка в закрытом состоянии GS>>> критична... DT>> Для той схемы, о которой шла речь, идеальное и не нужно. :)

GS> Падение напряжения на диоде заметно снижает помехоустойчивость.

Из исходного письма не очень понятно, на каком расстоянии это всё должно работать. Hо, похоже, в пределах одной платы, так что с помехоустойчивостью проблем быть не должно. Кроме того, на резисторах напряжение вроде как тоже падает. :)

А если по уму делать, то надо логический элемент ставить...

Dimmy.

Reply to
Dimmy Timchenko

Привет, Dimmy !

08 Sep 06 , 15:26 Dimmy Timchenko писал к Nickita A Startcev:

NAS>> need = 0; NAS>> do{ NAS>> if ( lim[0] > 0 ) NAS>> { NAS>> need = 1; NAS>> lim [0] --; NAS>> }else{ NAS>> PORT &= ~(1); NAS>> } NAS>> }while(need!=0);

DT> H-не понял, а где need сбрасывается?

Это плохой, негодный, глючный пример. Первые две строчки переставить надо.

. С уважением, Hикита. ... DCLXVI (Русскязычное ругательство о популярной музыке)

Reply to
Nickita A Startcev

Привет, George !

09 Sep 06 , 22:03 George Shepelev писал к Nickita A Startcev:

NS>>>> Два передатчика одновременно _не_ передают. GS>>> Когда два передатчика не передают, они одновременно держат GS>>> логический уровень, соответствующий "стоп-импульсу". NS>> гм. А если ногу отвязать от UART'а и перевести в Z?

GS> Чем? И в какой именно момент менять состояние "ноги"?

Сразу после передачи переводить в Z.

. С уважением, Hикита. ... I'm going slightly mad... very slightly mad ...

Reply to
Nickita A Startcev

Привет, George !

09 Sep 06 , 22:04 George Shepelev писал к Nickita A Startcev:

NS>> так почему бы не подвести сигналы с uart ко всем кристаллам и не NS>> заморачиваться с uart <-> i2c преобразованием?

GS> А какое устройство ты собираешься "снаружи" к uart'у подключать?

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

GS> Ты GS> уверен, что оно "не подерётся" с остальными передатчиками на "общей GS> шине"?

Уверен. Могут подраться только теЮ кто на плате.

. С уважением, Hикита. ... А в этом доме тот же самый Али-Баба живет, или другой?

Reply to
Nickita A Startcev

Привет, Dimmy !

10 Sep 06 , 05:23 Dimmy Timchenko писал к George Shepelev:

DT> Из исходного письма не очень понятно, на каком расстоянии это всё DT> должно работать. Hо, похоже, в пределах одной платы,

В пределах одной.

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

DT> А если по уму делать, то надо логический элемент ставить...

Если чуть пересмотреть елементную базу, то кучи АЦП не понадобитсяи, похоже, в одну мега16/32 всё легко впишется и проблема межпроцесссорного взаимодействия уйдёт.

. С уважением, Hикита. ... К черту ужин! Ужин _ВАМ_ не нужен! (c)

Reply to
Nickita A Startcev

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.