|
Программная реализация интерфейса |
|
|
|
 |
Ответов
|
Apr 11 2011, 20:37
|

Частый гость
 
Группа: Участник
Сообщений: 78
Регистрация: 8-12-09
Пользователь №: 54 138

|
Цитата(stells @ Apr 11 2011, 22:07)  16 тактов на прием одного бита - сомнительно, на грани фола +1 вот-вот + время на укладку байтов в FIFO. Да еще и в UART надо запхнуть. Время между пачками скока? 1.28*7 = 8.96 милисек. Вам, чтоб выпхнуть 37 слов на скорости 115200 потребуется 37*(22/8)*1000/(115200/10) = 9.63 милисека. Нужно параллельно с приемом данных, отправлять в UART. Без прерываний параллельную отпраку не сделать нормально. С прерываниями - софтверный прием обосрётся. Выводы неутешительны. Хотя можно подвесить FTDI-232 и запулить на 1Mbit. Вижу 3 варианта - 1. Внешний сдвиговый регистр, лучче CPLD, как посоветовал kovigor + UART на повышенной скорости. 2. Берите ARM 3. Cлабая надежда есть, на нестандартное использование модуля TWI - кмк, единственный шанс реализовать на AVR, без внешних схем. PS: 3-й вариант возможен тока на TWI tinyAVR. Еслиб было 24 бита - можно было-бы использовать SPI, но это не наш случай. PPS: Щас еще раз глянул даташиты - на tiny должно получиться c TWI. На mega TWI шибко умный, ничего не выйдет.
Сообщение отредактировал nk@ - Apr 11 2011, 21:05
|
|
|
|
|
Apr 11 2011, 21:38
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(nk@ @ Apr 12 2011, 00:37)  +1 вот-вот + время на укладку байтов в FIFO. Да еще и в UART надо запхнуть.
Время между пачками скока? 1.28*7 = 8.96 милисек. Вам, чтоб выпхнуть 37 слов на скорости 115200 потребуется 37*(22/8)*1000/(115200/10) = 9.63 милисека. Нужно параллельно с приемом данных, отправлять в UART. Без прерываний параллельную отпраку не сделать нормально. С прерываниями - софтверный прием обосрётся. Как раз наоборот - ведь вывод одного набранного байта это всего лишь один out, один лишний такт (а там определенный запас есть). Хотя одним не обойтись - если данные буферизовать в SRAM, то и на сохранение по два такта на байт, и на извлечение 2 (+1 на out). Однако на 20 MHz, пожалуй, реально. Реально даже если входные пакеты идут без пауз, непрерывно. А вот уложиться в паузу 9 mS - трудновато.
|
|
|
|
|
Apr 12 2011, 04:20
|

Частый гость
 
Группа: Участник
Сообщений: 78
Регистрация: 8-12-09
Пользователь №: 54 138

|
Цитата(rx3apf @ Apr 12 2011, 00:38)  Как раз наоборот - ведь вывод одного набранного байта это всего лишь один out Это если у Вас скорость порта заведомо выше скорости поступления данных, но у нас как раз наоборот(1.25Mbit ! против даже 1Мbit c FT-232). Прийдется организовывать FIFO, и по прерываниям с UART забирать данные, либо полингом смотреть статус UART в основном цикле, а это несколько больше одного out Цитата(rx3apf @ Apr 12 2011, 00:38)  Однако на 20 MHz, пожалуй, реально. Реально даже если входные пакеты идут без пауз, непрерывно. А вот уложиться в паузу 9 mS - трудновато. На 20 MHz отправить в UART нереально. Т.е. отправить реально, а принять без ошибок, на 115200 - не выйдет. Сейчас у мамок com-порты отвратительные, с подстройкой фазы все очень плохо (особенно "радуют" мамки на nForce - чуть в сторону и приехали). Потери - гарантированы. Нужно либо кварц типа 14.7456 или 18.432, либо паять FT-232 и на нестандартной скорости шпарить через "виртуальный com port". И все-же советую tiny (например 2313) и заюзать TWI. Я уже так делал - нужно было принимать последовательности по 28 бит. Почему не использовать аппаратный сдвиговый регистр? Код найти постараюсь сегодня вечером, по крайней мере, метода проверена PS: Я уже решал подобную задачу, и тут прийдется сильно поэкономить тактики
Сообщение отредактировал nk@ - Apr 12 2011, 04:34
|
|
|
|
|
Apr 12 2011, 08:46
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(nk@ @ Apr 12 2011, 08:20)  Это если у Вас скорость порта заведомо выше скорости поступления данных, но у нас как раз наоборот(1.25Mbit ! против даже 1Мbit c FT-232). Прийдется организовывать FIFO, и по прерываниям с UART забирать данные, либо полингом смотреть статус UART в основном цикле, а это несколько больше одного out  Про конкретную скорость UART пока речи не было. Никто не мешает, например, отдавать байт в UART на каждый второй собранный входной байт. Главное, чтобы успевал уходить. Цитата На 20 MHz отправить в UART нереально. Т.е. отправить реально, а принять без ошибок, на 115200 - не выйдет. На 115200 - прекрасно, ошибка менее двух процентов. И на 230400 тоже. Цитата Сейчас у мамок com-порты отвратительные, с подстройкой фазы все очень плохо (особенно "радуют" мамки на nForce - чуть в сторону и приехали). Потери - гарантированы. Ой, ну да ладно страсти-то какие-то рассказывать, а ? Какие-такие "подстройки фазы" ? К тому же - ну какие тут 115200 (входные по порядок шустрее), когда и 230400 мало. Значит, никаких аппаратных COM, а только USB.
|
|
|
|
|
Apr 12 2011, 09:51
|

Частый гость
 
Группа: Участник
Сообщений: 78
Регистрация: 8-12-09
Пользователь №: 54 138

|
Цитата(rx3apf @ Apr 12 2011, 11:46)  На 115200 - прекрасно, ошибка менее двух процентов. И на 230400 тоже. Вы возьмите и посчитайте. 115200 вполне достаточно, если правильно организовать обмен. Вы ветку сперва прочитайте, а потом уже высказывайтесь. Цитата(rx3apf @ Apr 12 2011, 11:46)  Ой, ну да ладно страсти-то какие-то рассказывать, а ? Какие-такие "подстройки фазы" ? Вот благодаря таким знаниям, мы имеем неработающие com-порты.
|
|
|
|
|
Apr 12 2011, 09:59
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(nk@ @ Apr 12 2011, 13:51)  Вы возьмите и посчитайте. 115200 вполне достаточно, если правильно организовать обмен. Вы ветку сперва прочитайте, а потом уже высказывайтесь. А если достаточно, то и тем более нет никаких поводов для беспокойства. В 9-ms паузу такая посылка не уложится, будучи "размазана" на весь принимаемый поток - вполне. Цитата Вот благодаря таким знаниям, мы имеем неработающие com-порты. Я не знаю, какие там неработающие порты _Вы_ имеете, но больше пока никто не жаловался. Вы занимаетесь натуральным сочинительством на ровном месте.
|
|
|
|
|
Apr 12 2011, 11:16
|

Частый гость
 
Группа: Участник
Сообщений: 78
Регистрация: 8-12-09
Пользователь №: 54 138

|
Цитата(rx3apf @ Apr 12 2011, 12:59)  Я не знаю, какие там неработающие порты _Вы_ имеете, но больше пока никто не жаловался. Вы занимаетесь натуральным сочинительством на ровном месте. Прошу прощения, за резкие слова, день, мля, тяжеловатый выдался По теме: Я выше писал про FIFO и параллельную обработку итд итп. Если правильно реализовать, то общего времени приема "пачки" данных + время паузы достаточно, для выпихивания всего блока на 115200. FIFO потребуется не менее размера одной "пачки". Если все реализовать тщательно, то должно получится. С SPI не получится, тк клок внешний, бит 22, а он байт-ориентированный. Было-б 24 бита - самае оно, но увы. По качеству портов. У меня есть проект, где через com в устройство нужно загрузить firmware порядка 3.5МБ. Там протокольчик дуплексный вопрос-ответ, не я делал. Так вот у меня, на 2-х компах (чипсет nVidia), это получается через раз. Причина - в этих самых 1-2% отличия скорости (кварц 4МГц). Когда идет обмен с паузами - все хорошо, а вот дуплекс на большом объеме им не под силу. Единственный комп, в котором стоит Intel-овская мама, работает без проблем. Вот такая вечная молодость.
|
|
|
|
|
Apr 12 2011, 15:13
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(nk@ @ Apr 12 2011, 15:16)  Так вот у меня, на 2-х компах (чипсет nVidia), это получается через раз. Причина - в этих самых 1-2% отличия скорости (кварц 4МГц). Когда идет обмен с паузами - все хорошо, а вот дуплекс на большом объеме им не под силу. Единственный комп, в котором стоит Intel-овская мама, работает без проблем. Вот такая вечная молодость. Это, простите, ошибка в ДНК. Самая что ни на есть натуральная. Чтобы рассуждать о "качестве" портов и связи этого "качества" с чипсетом, надо иметь хоть минимальные представления о устройстве этих портов (с этим у Вас совсем плохо). А в данном случае у меня лично никаких сомнений, что имела место банальнейшая потеря данных при отсутствии управления потоком. Дуплекс тут вообще не при чем (прием и передача функционально разные части), а вот косвенно влияет (из-за влияния на загрузку процессора при обработке прерываний). Я-то думал, что Вы нас порадуете какими-то откровениями на предмет PLL и тактировки MIO-чипа, а тут такая банальщина. "У меня не работает, значит и у других не работает". Но Вы первый додумались до влияния чипсета, с чем и поздравляю  Цитата(ILYAUL @ Apr 12 2011, 15:56)  Это почему? А Вы в Sram разве не байтами будете писать?! И разве SPI не может работать как slave? А уж передовать тем более Изначально разговор был про программную реализацию. SPI slave тоже можно, благо что приемник имеет двойную буферизацию. Байтовую синхронизацию, правда, придется обеспечивать ручками. И границы слов тоже. Но чтобы быстренько все это дело скушать и куда-то отдать - вполне, и 22 бита вместо 24 тут нисколько не помеха. Накладные расходы на сборку-отправку резко сокращаются. А синхронизацией пускай PC занимается. Я так понимаю, что речь о каком-то сниффере протокола, и задача засосать в PC этот самый входной поток. Вариантов реализации по крайней мере два-три...
Сообщение отредактировал rx3apf - Apr 12 2011, 15:13
|
|
|
|
|
Apr 13 2011, 09:51
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(rx3apf @ Apr 12 2011, 19:13)  Изначально разговор был про программную реализацию. SPI slave тоже можно, благо что приемник имеет двойную буферизацию. Байтовую синхронизацию, правда, придется обеспечивать ручками. И границы слов тоже. Но чтобы быстренько все это дело скушать и куда-то отдать - вполне, и 22 бита вместо 24 тут нисколько не помеха. Накладные расходы на сборку-отправку резко сокращаются. А синхронизацией пускай PC занимается. Я так понимаю, что речь о каком-то сниффере протокола, и задача засосать в PC этот самый входной поток. Вариантов реализации по крайней мере два-три... Я так понял, что программная реализация - это чисто спортивный интерес. Практически же этим заниматься глупо, на SPI это можно сделать проще на порядок, а может и на два. Потому что вынуть байт из SPI - это пара команд, а для программного приема каждого бита требуется не меньше десятка.
|
|
|
|
|
Apr 13 2011, 11:09
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(777777 @ Apr 13 2011, 13:51)  вынуть байт из SPI - это пара команд, а для программного приема каждого бита требуется не меньше десятка. А какже быть с 22 битами данных? Цитата(ILYAUL @ Apr 13 2011, 10:17)  Вот код , по идее сможем поймать биты. Но посчитать не успеваю На мой взгляд при програмной реализации приема по SPI необходимо прочитать линию данных как можно ближе к фронту синхро сигнала (D-триггер это делает синхронно). Если делать по опросу синхро то чтение линии данных произойдёт в лучшем случае через 3 такта, в худшем через 5 тактов процессора. Если использовать прерывание то линию данных проц прочитает в самом лучшем случае через 7 тактов. Но чтобы ответить на вопрос возможна ли реализация этого протокола нужна временная диаграмма сигналов SYNC и DATA. TS никак не хочет ее предоставить или сам не знает, но уже пишет Цитата программу на асме имитирующую передачу кода МАСТЕРОМ
|
|
|
|
|
Apr 13 2011, 12:58
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(stells @ Apr 13 2011, 16:55)  а регистр недоступен? Регистр приема - недоступен. Доступен буферный, где лежит собранный байт. Цитата это если синхросигнал непрерывный Я понял так, что синхра непрерывная. Если нет - то либо USI, либо программно, либо добивать самому через внешнюю логику (как вариант - монтажную).
|
|
|
|
Сообщений в этой теме
stalknr Программная реализация интерфейса Apr 11 2011, 18:04 kovigor Цитата(stalknr @ Apr 11 2011, 21:04) Необ... Apr 11 2011, 18:18 stalknr А больше не чего реализовывать и не надо. Тупо про... Apr 11 2011, 18:25 kovigor Цитата(stalknr @ Apr 11 2011, 21:25) И со... Apr 11 2011, 18:36 stalknr Шустрый AVR уже выбрал - ATmega88. Предельная част... Apr 11 2011, 18:47 kovigor Цитата(stalknr @ Apr 11 2011, 21:47) Шуст... Apr 11 2011, 18:57 rx3apf Цитата(stalknr @ Apr 11 2011, 22:04) Необ... Apr 11 2011, 18:51 stalknr Это сильно урезанный и переделанный ARINC 429
разр... Apr 11 2011, 18:55 rx3apf Цитата(stalknr @ Apr 11 2011, 22:55) а ес... Apr 11 2011, 19:02  zombi Цитата(rx3apf @ Apr 11 2011, 23:02) Ну чт... Apr 12 2011, 17:32   rx3apf Цитата(zombi @ Apr 12 2011, 21:32) Или я ... Apr 12 2011, 17:45    zombi Цитата(rx3apf @ Apr 12 2011, 21:45) Начал... Apr 12 2011, 17:54     rx3apf Цитата(zombi @ Apr 12 2011, 21:54) А что,... Apr 12 2011, 17:57     stells Цитата(zombi @ Apr 12 2011, 21:54) Кстати... Apr 12 2011, 18:10      zombi Цитата(stells @ Apr 12 2011, 22:10) кстат... Apr 12 2011, 18:22       stells Цитата(zombi @ Apr 12 2011, 22:22) Пока н... Apr 12 2011, 19:17     ILYAUL Цитата16 тактов на прием одного бита - сомнительно... Apr 12 2011, 23:29 stalknr есть согласующая схема на ее выходе ТТЛ сигнал Дан... Apr 11 2011, 18:59        kovigor Цитата(nk@ @ Apr 12 2011, 14:16) Когда ид... Apr 12 2011, 11:34        ILYAUL Цитата(nk@ @ Apr 12 2011, 15:16) С SPI не... Apr 12 2011, 11:56            ILYAUL Цитата(rx3apf @ Apr 13 2011, 16:07) Да та... Apr 13 2011, 12:20             ILYAUL Цитата(stells @ Apr 13 2011, 16:38) с тре... Apr 13 2011, 12:45              stells Цитата(ILYAUL @ Apr 13 2011, 16:45) Там и... Apr 13 2011, 12:49                 zombi Цитата(stells @ Apr 13 2011, 17:05) насче... Apr 13 2011, 13:14                zombi Цитата(rx3apf @ Apr 13 2011, 16:58) Я пон... Apr 13 2011, 13:06                 stells Цитата(zombi @ Apr 13 2011, 17:06) О како... Apr 13 2011, 13:09                 rx3apf Цитата(zombi @ Apr 13 2011, 17:06) О како... Apr 13 2011, 13:18             zombi Цитата(stells @ Apr 13 2011, 16:38) по 22... Apr 13 2011, 12:54      =GM= Цитата(nk@ @ Apr 12 2011, 08:51) 115200 в... Apr 12 2011, 12:05 =GM= Цитата(stalknr @ Apr 11 2011, 17:04) По 1... Apr 11 2011, 22:24 777777 Цитата(stalknr @ Apr 11 2011, 22:04) Посл... Apr 12 2011, 07:24 stalknr Здравствуйте товарищи!!!!
Докладыв... Apr 12 2011, 15:27 zombi Цитата(stalknr @ Apr 12 2011, 19:27) ЦЕЛЬ... Apr 13 2011, 12:44 stalknr Господин ZOMBIK временная диаграмма выложена мною ... Apr 12 2011, 18:55 zombi Цитата(stalknr @ Apr 12 2011, 22:50) Госп... Apr 12 2011, 18:59 ILYAUL Вот код , по идее сможем поймать биты. Но посчитат... Apr 13 2011, 06:17 =GM= Цитата(ILYAUL @ Apr 13 2011, 05:17) Вот к... Apr 13 2011, 10:21  ILYAUL Цитата(=GM= @ Apr 13 2011, 14:21) По идее... Apr 13 2011, 10:51 Kovrov А почему не хотим внешний приемник данных организо... Apr 13 2011, 11:26 =GM= Зачем нужен внешний, если есть встроенный сдвиговы... Apr 13 2011, 11:48  Kovrov Цитата(=GM= @ Apr 13 2011, 15:48) Зачем н... Apr 13 2011, 12:17 ILYAUL Коллеги! Там ТЗ , как то поменялось уже - посм... Apr 13 2011, 12:04 stells в общем от контроллера нужно 3 ноги: MOSI, SCK, T0... Apr 13 2011, 13:18 777777 Цитата(stells @ Apr 13 2011, 17:18) в общ... Apr 13 2011, 15:52  zombi Цитата(777777 @ Apr 13 2011, 19:52) Счетч... Apr 13 2011, 16:02   stells Цитата(zombi @ Apr 13 2011, 20:02) Действ... Apr 13 2011, 16:15 zombi Цитата(rx3apf @ Apr 13 2011, 17:18) А вни... Apr 13 2011, 13:40 kovigor Цитата(zombi @ Apr 13 2011, 16:40) Может ... Apr 13 2011, 13:49  stells Цитата(kovigor @ Apr 13 2011, 17:49) Или ... Apr 13 2011, 14:05   =GM= Кто-то здесь подсчитал, что при использовании прер... Apr 13 2011, 15:18    zombi Цитата(=GM= @ Apr 13 2011, 19:18) а при п... Apr 13 2011, 15:29     =GM= Цитата(zombi @ Apr 13 2011, 14:29) Не был... Apr 13 2011, 15:59      zombi Цитата(=GM= @ Apr 13 2011, 19:59) Ну отку... Apr 13 2011, 17:39       =GM= Обсуждения не получилось, ну да ладно. Давайте пог... Apr 14 2011, 13:05        zombi Цитата(=GM= @ Apr 14 2011, 17:05) Обсужде... Apr 14 2011, 14:21         =GM= Цитата(zombi @ Apr 14 2011, 13:21) А как ... Apr 14 2011, 16:25 stalknr Привет Господа!!!!
Смотрю пока я н... Apr 13 2011, 16:18 stells Цитата(stalknr @ Apr 13 2011, 20:18) Вооб... Apr 13 2011, 16:21 _pv Цитата(stalknr @ Apr 13 2011, 22:18) Вооб... Apr 14 2011, 15:18 stalknr Мне надо на один пин выдавать ДАННЫЕ (АДРЕС+ПУСТОЙ... Apr 13 2011, 16:25 stells Цитата(stalknr @ Apr 13 2011, 20:25) Мне ... Apr 13 2011, 16:27 stalknr так ведет себя МАСТЕР. СЛАЙВ в этот момент принима... Apr 13 2011, 16:36 zombi Цитата(stalknr @ Apr 13 2011, 20:36) ЭТО ... Apr 13 2011, 17:14 stalknr в начале пачки идет пустое слово (для синхроназаци... Apr 13 2011, 17:29 stalknr Интересно а как он узнает когда ему данные надо пр... Apr 13 2011, 17:44 zombi Т.е. слейв тоже может формировать синхро?
Нее шото... Apr 13 2011, 17:46 stalknr Может. МАСТЕР и СЛЕЙВ связаны линиями ПК1 и ПК2
ПК... Apr 13 2011, 17:51 zombi Цитата(stalknr @ Apr 13 2011, 21:51) Може... Apr 13 2011, 18:07 stalknr Нет линии не двунаправленные
ПК1 - 2 провода (синх... Apr 13 2011, 18:10 zombi Цитата(stalknr @ Apr 13 2011, 22:10) Нет ... Apr 13 2011, 18:17 stells да уж, тем более, что от arinc 429 остался только ... Apr 13 2011, 18:11 stalknr По ПК1 МАСТЕР кидает данные и синхро СЛЕЙВУ а по П... Apr 13 2011, 18:11 stalknr ЦЕНТЕР-ГЕРЕНГУ
Нас спалили переходим на нелегально... Apr 13 2011, 18:29 zombi Цитата(stalknr @ Apr 13 2011, 22:29) Что ... Apr 13 2011, 18:39 stalknr да кстате Господа как сформировать сигнал длительн... Apr 13 2011, 18:41 zombi Цитата(stalknr @ Apr 13 2011, 22:41) да к... Apr 13 2011, 18:47 Hmm О чем это все. Для 'ARINC-429' скорость ма... Apr 14 2011, 14:27 zombi Цитата(Hmm @ Apr 14 2011, 18:27) О чем эт... Apr 14 2011, 15:00 Hmm Цитата(zombi @ Apr 14 2011, 18:00) Может ... Apr 14 2011, 15:27 stalknr Привет всем!!!
Есть идея для слайва. П... Apr 14 2011, 15:10 zombi Цитата(stalknr @ Apr 14 2011, 19:10) Прив... Apr 14 2011, 15:42 stalknr Только вот не очень хочется ставить 6шт кр555ИР16 ... Apr 14 2011, 15:55 kovigor Цитата(stalknr @ Apr 14 2011, 18:55) Толь... Apr 14 2011, 16:01
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|