время заполнения 40-ка сдвиговых регистров 74hc595

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

sined23 , 
может быть так проше будет ? про ленту WS2812 ?
http://samopal.pro/led-pixel1/
 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

вот на этот процесс может уйти куда как больше времени, про что никто как-то не обратил внимания. Ибо стрелять 40 упакованных байт или 320 по биту на байт, да каждую миллисекунду .. то бишь 40/320 ТЫСЯЧ шт в сек .. их хде столько брать "предполагается"?  :)
спроси у ТС :)

Гриша
Offline
Зарегистрирован: 27.04.2014

ИМХО

тему можно закрыть!!!    пост 49 и 50

судя по вопросу, ТС  не в состоянии справиться с поставленной задачей

ИМХО

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да почему "не справится"-то? Вполне решаемая задача .. самый оптимальный вариант занять 1 порт целиком. Подойдет любая дунька, все регистры открывать разом с отдельной ноги. К-т допустимого разветвления тут думаю даже и прикидывать не стоит, ибо КМОП. Кончилаль уже К155 серия .. тут тока один вопрос: откуда он столько битиков наковыряет?

Но .. если это некий автомат гоняющий подготовленный массив (пусть и большой), то Мега2560 - самое то. 256кб флеша, в который его же и прошить как кусок проги .. и пусть "шепелявит" себе регистрами .. :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

не согласен ! 
с кем ?
с обоими !!!!
"Собачье сердце"
ТС может быть и не может , но вы - оба - можете.....
:)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Arhat109-2 пишет:

Да почему "не справится"-то? Вполне решаемая задача .. самый оптимальный вариант занять 1 порт целиком. Подойдет любая дунька, все регистры открывать разом с отдельной ноги. К-т допустимого разветвления тут думаю даже и прикидывать не стоит, ибо КМОП. Кончилаль уже К155 серия .. тут тока один вопрос: откуда он столько битиков наковыряет?

Но .. если это некий автомат гоняющий подготовленный массив (пусть и большой), то Мега2560 - самое то. 256кб флеша, в который его же и прошить как кусок проги .. и пусть "шепелявит" себе регистрами .. :)

ахаа ! да !

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Arhat109-2 пишет:

Кончилаль уже К155 серия ..

неприличными словами не вырожаться !

Гриша
Offline
Зарегистрирован: 27.04.2014

читаем ПОСТ 50    !!!!!!!!!!!!

читаем ПОСТ 50    !!!!!!!!!!!!

как прочитаете, можем оффтопнуть, немного ))))))))))

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

 тут другое схемотехническое решение нужно искать
чуть-чуть , если времени есть....
:)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ну .. с компа, так с компа .. вопрос КАК они оттудова "идти будут". С компа, как вариант - перезаливать скетч в Мегу .. вполне приличная пачка в 256 килобайт за раз. :)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

А если серъезно, то передать в дуньку 40 байт быстрее чем за миллисекунду - тоже не проблема.

Гриша
Offline
Зарегистрирован: 27.04.2014

Arhat109-2 пишет:

Ну .. с компа, так с компа .. вопрос КАК они оттудова "идти будут". С компа, как вариант - перезаливать скетч в Мегу .. вполне приличная пачка в 256 килобайт за раз. :)

сколько времени сожрет загрузка (256 килобайт за раз) с учетом таймингов USB и исполнения кода - не уверен, но 1мс пролетает мимо Ардуино.... и нагружает комп на 100% и имеет высший приоритет - тут бы компу управиться с шиной USB, больше нужно грузить, чтоб комп остыть успел )))))))))))))))

Гриша
Offline
Зарегистрирован: 27.04.2014

Arhat109-2 пишет:

А если серъезно, то передать в дуньку 40 байт быстрее чем за миллисекунду - тоже не проблема.

и чего ТС удумал взяться за такую задачу?! Я в смысле этого топика. Если он вообще возник - шансов у ТС решить эту проблуму самому - почти нет. Даже если перечитает все посты топика, и поймет, что теоретически задача выполнима, он решит ее не раньше чем через год, при добросовестном стремлении.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Мой ХШ говорит что "курсовик у него горит" .. не надо ему "делать" .. накатать надо тексту побольше. :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Гриша ,   для развития , если у вас есть время.....
почему нельзя послать на эту хрень в 320 выходных сигналов код раз в секунду ? лучше - 50 раз в секунду....
я заблудился , чесна !!!! :(

sined23
Offline
Зарегистрирован: 11.12.2015

сорри гайзз) я тут отошёл, а тут такое)) я так понял мнения разошлись с синхрой и с защёлкой? кто-то говорит надо их усиливать для 40-ка регисторов, а кто-то - ничего не надо делать. так как правильно то?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Правильно - это детально изложить чего хочется, а не развлекать народ заставляя их доставать свои ХШ с полок .. :)

sined23
Offline
Зарегистрирован: 11.12.2015

Arhat109-2 пишет:

Правильно - это детально изложить чего хочется, а не развлекать народ заставляя их доставать свои ХШ с полок .. :)

да не вопрос. комп передает ардуино по serial 40 байт инфы каждые X времени.

задача ардуино в соответствии с входной инфой заполнить сдвиговые регистры и по окончанию дернуть защёлку.

потом поступают ещё 40 байт - опять ардуино заполняет ренистры, дергает защёлку

и т.д.

40байт = 320 бит, т.е. 320 состояний

вопрос в передачи инфы ардуино не стоит.

вопрос именно в 320-и ногах

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

А я согласен с Гришей, не справится ТС с задачей. Только на словах всё гладко. На деле грамотно спроектировать разводку платы на 40 корпусов задача для профессионала, учитывая что всё это будет работать на высокой частоте, нагружены выходы скорее всего будет по полной, большие токи, большая частота -огромное раздолье для ловли больших и малых глюков. Это ещё не учитывая вообще сомнительную возможность вешать много корпусов на одну синхру например. Паразитная ёмкость  входов  регистров и проводников , паразитная индуктивность лихо начнёт давить фронты и создавать вч-дребезг, в общем всё сложно...

sined23
Offline
Зарегистрирован: 11.12.2015

dimax пишет:

А я согласен с Гришей, не справится ТС с задачей. Только на словах всё гладко. На деле грамотно спроектировать разводку платы на 40 корпусов задача для профессионала, учитывая что всё это будет работать на высокой частоте, нагружены выходы скорее всего будет по полной, большие токи, большая частота -огромное раздолье для ловли больших и малых глюков. Это ещё не учитывая вообще сомнительную возможность вешать много корпусов на одну синхру например. Паразитная ёмкость  входов  регистров и проводников , паразитная индуктивность лихо начнёт давить фронты и создавать вч-дребезг, в общем всё сложно...

ну а кто здесь профессионал? :) есть такие?)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

ТС , вы так и не описали ТЗ !!!!

sined23
Offline
Зарегистрирован: 11.12.2015

задача - как правильно сделать 320 ног? как правильно подключить ардуино к регисторам?

может использовать не регистры, а что-то другое...

нужен реальный совет профи....

конечно я сам то не профи, иначе бы вас не спрашивал...

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

так и делай ! сдвиг на  40 регистров....
...остальные измышления - какие-то виртуальные....
....если чё не получится - вали на миня :)

sined23
Offline
Зарегистрирован: 11.12.2015

SU-27-16 пишет:

так и делай ! сдвиг на  40 регистров....
...остальные измышления - какие-то виртуальные....
....если чё не получится - вали на миня :)

спасибо кэп! выручил)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

как записать ? это одно.... что записать - это другое - чего моя и не понял :(

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

sined23 пишет:

SU-27-16 пишет:

так и делай ! сдвиг на  40 регистров....
...остальные измышления - какие-то виртуальные....
....если чё не получится - вали на миня :)

спасибо кэп! выручил)

ааааа, то !!!
моя - ХЗ , старшие застращали :(

Гриша
Offline
Зарегистрирован: 27.04.2014

sined23 пишет:

вопрос именно в 320-и ногах

320 ног вообще не показатель, здесь определяет все время, отправлять нужно не 40 байт, а Х*40 , а то комп опухнет работать на USB. 

самое простое: подключаем 8 групп по 5шт к порту контроллера, отправляем сразу байт, защелкиваем в регистр. И так 5х8 раз, потом отправляем разрешение на выход - и они все сменились, разом !!! Делаем запрос на комп и получаем следующую пачку (тут необходимо считать, сколько пачек за раз мы способны принять) - в 1 мс, лично Вам, задав такой вопрос на форуме, будет очень проблемотично уложиться (никто из нас специально считать такты выполнения мк не будет). Если хотите 1Гц получить - без проблем, но 1кГц - требует серьезного подхода - это Вам в раздел "ищу исполнителя". Да и даже для 1Гц никто ничего не напишет - максимум где поискать, как вопрос задать, может чего почитать (уже ссылкой делились)

для прокачки 40шт стробов необходимо поставить драйверы (Shift Register Clock, Storage Register Clock ): убежден, что будет достаточно простых транзисторов.

разводка питания - можно новый топик начинать

блок питания - а что за нагрузка??? конкретные параметры - может там 1000В

самое простое 320*10мА -3,2А это уже серьезно.

 

sined23
Offline
Зарегистрирован: 11.12.2015

SU-27-16 пишет:

как записать ? это одно.... что записать - это другое - чего моя и не понял :(

дружище биты записать...

смотри, пример из двух регистров. комп на ардуионо передал два байта 234 и 75 (OCT). т.е. последовательность бит такова:

10011100  00111101

эти биты записываются в два регистра. защёлкиваем. на выходах получаем там где 0 - нет сигнала, там, где 1 - сигнал 5в

всё же понятно уже должно быть))

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

sined23 пишет:

SU-27-16 пишет:

как записать ? это одно.... что записать - это другое - чего моя и не понял :(

дружище биты записать...

смотри, пример из двух регистров. комп на ардуионо передал два байта 234 и 75 (OCT). т.е. последовательность бит такова:

10011100  00111101

эти биты записываются в два регистра. защёлкиваем. на выходах получаем там где 0 - нет сигнала, там, где 1 - сигнал 5в

всё же понятно уже должно быть))

КЛАССНО !

Гриша
Offline
Зарегистрирован: 27.04.2014

sined23, пост 78 - судя по написанному, Вы вообще не поняли, что сдесь обсуждали!!!!!!

топик называется: 

время заполнения 40-ка сдвиговых регистров 74hc595

 

и это время нужно считать - это не так просто, как кажется. Выше написано, что можно уложиться и в 1мс, но с танцами с бубном и не средствами програмирования "под Ардуино", а в 1с достаточно просто.

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

и при чём здесь вывод в порты и чтение из сериала ?
...в смысле  - про скорости ?

sined23
Offline
Зарегистрирован: 11.12.2015

по поводу времени заполнения мне ответили в начале. далее тема зашла в реализацию... в соединение регистров...

а сейчас что-то всё стало ниочем)) надо закрывать тему тогда...

sined23
Offline
Зарегистрирован: 11.12.2015

SU-27-16 пишет:

и при чём здесь вывод в порты и чтение из сериала ?
...в смысле  - про скорости ?

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

Гриша
Offline
Зарегистрирован: 27.04.2014

SU-27-16 пишет:

и при чём здесь вывод в порты и чтение из сериала ?
...в смысле  - про скорости ?

за всем стоит время обработки МК преврящаясь в частоту обновления

Гриша
Offline
Зарегистрирован: 27.04.2014

sined23 пишет:

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

пост 49, там много вариантов

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Гриша пишет:

SU-27-16 пишет:

и при чём здесь вывод в порты и чтение из сериала ?
...в смысле  - про скорости ?

за всем стоит время обработки МК преврящаясь в частоту обновления

"а я её за что держал ?"

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

ПОРУЧИК ! - быстрее
ПОРУЧИК ! - левееее
ПОРУЧИК ! - медленнееееее

Мадам ? это вы миня еб*те или я вас ?

ничё личного !!!!!!!!!!!!! :)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Мой ХШ ярко высвечивает предыдущую надпись: "нифига ТС-у ДЕЛАТЬ не надо, ему в курсовик ЧТО написать?" :)

to ТС:

Если у вас не стоит вопрос КАК загнать эти 40 байт в дуньку правильно, то ответ на вопрос поставленный в заголовок я вам УЖЕ привел в #49. Итого:

минимально записать и потом показать одновременно можно за время около 20 МИКРОСЕКУНД при тактовой в 16 МЕГАГЕРЦ. Всё, так и напишите в пояснительной записке к курсовику. :)

Все остальные вопросы, как "всплывут" - приходите ещё. А пока это действительно вопросы не для уровня ТС. Не грузите парня ерундой.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Кстати, а почему никто не упомянул вариант решения задачи на дешифраторах? Понадобится  9 линий данных. Если брать 4  на 16 бит дешифраторы, то понадобится  20 корпусов. Насколько я помню они каскадируются так же просто, как и 595 сдвиговые. И со скоростью уже точно проблем не будет, это-же паралельный вывод данных.

Гриша
Offline
Зарегистрирован: 27.04.2014

dimax пишет:

Кстати, а почему никто не упомянул вариант решения задачи на дешифраторах? Понадобится  9 линий данных. Если брать 4  на 16 бит дешифраторы, то понадобится  20 корпусов. Насколько я помню они каскадируются так же просто, как и 595 сдвиговые. И со скоростью уже точно проблем не будет, это-же паралельный вывод данных.

Угу, и все с этой платой увязать, а Ардуино рядом положить – и пусть комп сам рулит, все одно с него данные поступают, а не с флешки.  

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну как то так

#define LATCH      10
#define DAT        11
#define CLK        13

#define LATCH_On          PORTB = 1<<2
#define LATCH_Off         PORTB = 0<<2

#define SPI_OFF   SPCR = 0;
#define SPI_ON    SPCR = _BV(MSTR) | _BV(SPE);
#define SPI_WAIT  while (!(SPSR & _BV(SPIF)));

void setup(){
  pinMode(LATCH, OUTPUT);
  pinMode(DAT, OUTPUT);
  pinMode(CLK, OUTPUT);
  SPSR |= 1;	// 2x clock
}

void loop(){
  while(1){
    LATCH_Off;
    for(byte i=0; i<40; i++){
      spi_write(0xBA);
    }
    LATCH_On;
  }
}

void spi_write(byte c){
  SPI_ON;
  SPDR = c;
  SPI_WAIT;
  SPI_OFF;
}

Clock

Data

Latch

Так как Latch дергается только когда все данные отправлены по нему и можно судить сколько времени нужно для отправки 40байт через spi с дерганьем ноги latch: 75 мкс. Данные измерены с пинов ардуины, это не симуляция или предположения

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Сам себя цитирую, сам исправляю......

trembo пишет:

На 8-ми Мегагерцах клока  ( 1.25 микросекунд периода)  передаём грубо за 320 х 1.25 = 400 микросекунд

Ошибся на порядок, конечно период 0.125, поэтому 40 микросекунд на всё-про-всё....
Скорости SPI для "бытовых" применений хватает выше крыши.....
Даже можно снижать достаточно сильно.
Представляю себе какие звоны могут возникнуть после разводки платы на 8-ми мегагерцах.

А подать сигнал на 40 входов не проблемма, выходного тока в статике хватит
там главное чтобы фронты не завалить из-за ёмкости параллельных входов.
Не читая пдф: допустим 10 пик минимум с разводкой  на каждом, умножим на 40 - уже 400.
Почти как  средний полевик...... Формировать надо бы эти фронты....

Вроде  бывают и 16-ти разрядные регистры, 20 корпусов- это солидный выигрыш

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да плату еще надо уметь разводить для такой частоты цифрового сигнала так как линии длинные получатся. предполагаю опитимальнее еще применить логику вроде И, ИЛИ или двух НЕ, и с них уже подавать clock и lacth. например на 1 повторитель 8 штук 74HC595

Гриша
Offline
Зарегистрирован: 27.04.2014

а можно пояснения для тех, кто в коде несилен? пост 91

Как я понял, SPI постоянно слал в порт по кругу 0xAB??? Иначе говоря гнал один и тот же известный байт?  

void spi_write(byte c)
{
  SPI_ON; // запустить SPI
  SPDR = c; //передать байт с
  SPI_WAIT;  // ожидать окончания передачи, модуль сам все передаст... 
  SPI_OFF;   // остановить работу SPI
} // ниже выполнение других программ по необходимости (подготовка нового байта "с")

я правильно описал? 

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ага. нужно было что то слать же

75 мкс занимает отправка 40 байт - ответ на название темы, сколько займет подготовка данных другой вопрос

Гриша
Offline
Зарегистрирован: 27.04.2014

jeka_tm пишет:

ага. нужно было что то слать же

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

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

сам забываю. поэтому сюда код и кинул

к тому же когда проверял еще в этой теме 

http://arduino.ru/forum/apparatnye-voprosy/bibilioteka-lcd-nokia-1616-sp...

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

sined23
Offline
Зарегистрирован: 11.12.2015

jeka_tm, trembo, Datak, спасибо вам большое! Ваши ответы очень полезные и адекватные!

Остальные, к сожалению, не о чём ((