|
связь Mega128 <=>ARM7 |
|
|
|
Jun 9 2009, 07:19
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(IJAR @ Jun 9 2009, 10:55)  Необходимо организовать обмен между 2-мя контроллерами.
Скорость порядка 1 Мбайта. Расстояние между конт-ми ~10 см на плате.
Хотелось бы со стороны каждого контроллера иметь буфер организованный в виде стека на 256 - 1024 байт а уже между
буферами что то вроде параллельног канала. Т.е. минимальная
нагрузка на ПО контроллеров. Для работы с навеской есть по 11 ног
в каждом контроллере. Прямое соединение не катит из-за разности
в скоростях контроллеров.USB - не подходит по ряду причин.
Естественно эта навеска должна быть в чипе. Цена не особеноо лимитирует.
Может кто использовал такой девайс.
Заранее спасибо. Ну про USB для меги128 забудь сразу и навсегда. А вот где проблема порылась? Чем не устраивают стандартные SPI или TWI(I2C) или USART? А с размерами буферов сами разберетесь.
|
|
|
|
|
Jun 9 2009, 07:37
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Цитата Скорость порядка 1 Мбайта. Большая скорость. А мега сможет обеспечить такой поток данных? Можно попробовать завести SPI с удвоением скорости (на 16МГц вроде скорость должна быть F/2 = 8Мбит), но и времени на аппаратную обработку практически не остаётся. Если выводить через паралельный порт то врятли будет достигнута такая скорость (2 такта получить данные из памяти или порта, 2 такта положить их порт, 2 такта выставить готовность данных, есщё несколько тактов дождаться подтверждения, плюс время на обработку - при грубом подсчёте даже 1 мегабайта не получается) А откуда собственно берётся такой поток данных? может быть там нужна ПЛИС или второй ARM7?
|
|
|
|
|
Jun 9 2009, 07:41
|

Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669

|
Цитата(VladimirYU @ Jun 9 2009, 11:19)  Ну про USB для меги128 забудь сразу и навсегда. А вот где проблема порылась? Чем не устраивают стандартные SPI или TWI(I2C) или USART? А с размерами буферов сами разберетесь. 1. У меня сейчас в проекте Mega128 + FT245BM от FTDI и далее USB HOST в PC104 под Win5.0 CE и все работает Но вот вместо PC104 есть желание поставить ARM7. Использование чипа VINCLUM со стороны ARM7 оказалось проблематично из-за нестабильности времени обмена. 2. Скорость ~ 1Mбайта: UART, I2C, SPI этого не обеспечат+ большие нагрузки ра обслуживание. Вот если бы можно было соединять 2 FT245 друг сдругом - все было бы O'K
--------------------
Вяжешь - вой, а поедешь - песни пой. Между "хочу" и "можно" всегда есть дистанция
|
|
|
|
|
Jun 9 2009, 07:53
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Я делал параллельный обмен м/у контроллерами. Принцип приблизительный как в CENTRONICS. Код data ----<=====>---- ____ rdy ____/ \____ _____ ask ______/ \___ Здесь 10 ног, но чаще всего требуется типа команды передавать (1 нога) ну и направление (1 нога), либо синхронизацию начальную как-то обеспечивать. 11 ног принципиально достаточно. У меня было столько-же. Работало очень устойчиво. Цитата(IJAR @ Jun 9 2009, 10:41)  Вот если бы можно было соединять 2 FT245 друг сдругом - все было бы O'K Их можно соединить даже без микроконтроллера. На примитивной логике. Только 1 Мбайт это скорее желаемое чем бействительное значение. Хотя заявлено 2. Надо будет программно обеспечивать чтобы переполнения буферов не происходило.
|
|
|
|
|
Jun 9 2009, 08:05
|

Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669

|
Цитата(SasaVitebsk @ Jun 9 2009, 11:46)  Я делал параллельный обмен м/у контроллерами. Принцип приблизительный как в CENTRONICS. Код data ----<=====>---- ____ rdy ____/ \____ _____ ask ______/ \___ Здесь 10 ног, но чаще всего требуется типа команды передавать (1 нога) ну и направление (1 нога), либо синхронизацию начальную как-то обеспечивать. 11 ног принципиально достаточно. У меня было столько-же. Работало очень устойчиво. Я такой вариат и рассматривал, НО!!! Я не могу обеспечить на Mege непрерывное, из-за прерываний, обслуживание потока. Стало быть ARM7 войдя в обмен бужет непредсказуемо подвисать, если же использовать на нем прерывания, то это приплюсует еще большее время на обслуживание. У ARM7 своих задач выше крыши. Замена Mega128(Fosc=7.372800 МГц) на что-либо невозможна из-за разработки большого объема ПО. Цитата(alvy @ Jun 9 2009, 11:55)  Как вариант:
использовать чтото типа 74АС164, которую к SAM7 подцепить по SPI (1МГц без проблем прокачает), а к Меге подцепить многоразрядную шину с битами управления. Просто, имхо, меге будет намного проще и быстрее работать с параллельным интерфейсом, а САМ7 - с последовательным (в режиме DMA будет минимум ресурсов расходоваться). SPI на ARM7 занят под контроллер ETHERNET, кроме того заняты 2 UART-a.
--------------------
Вяжешь - вой, а поедешь - песни пой. Между "хочу" и "можно" всегда есть дистанция
|
|
|
|
|
Jun 9 2009, 08:29
|

Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669

|
Цитата(SasaVitebsk @ Jun 9 2009, 12:12)  Всё смешалось, кони-люди.  А как вы обеспечите "около 1 Мбайта" на микроконтроллере с пиковой производительностью 7Мипсов, если он ещё чем-то занят? Это и так 7 тактов на транзакцию. О каких прерываниях мы ведём речь? И куда этот поток складывать? Да и ARM7 с потоком 1Мбайт тоже будет напряжённо громыхать костылями. В том то и суть, что порт обмена должен быть "всегда готов", ну кроме начала обмена (возможно) А передача идет блоками по 0.5-1.5КБайт каждые 100 mS. Если кидать блоками не более 0.5 Кбайт, то на это время прерывания, в моем случае, можно "придержать". Собственно всего то и нужен чип "Параллельный порт CENTRONIX с буфером памяти" Цитата(alvy @ Jun 9 2009, 11:55)  Как вариант:
использовать чтото типа 74АС164, которую к SAM7 подцепить по SPI (1МГц без проблем прокачает), а к Меге подцепить многоразрядную шину с битами управления. Просто, имхо, меге будет намного проще и быстрее работать с параллельным интерфейсом, а САМ7 - с последовательным (в режиме DMA будет минимум ресурсов расходоваться). А вообще то идея не плохая. У ETHERNET чипа можно вместо SPI || порт использовать На "худой конец" можно и так попробовать. Спасибо!
--------------------
Вяжешь - вой, а поедешь - песни пой. Между "хочу" и "можно" всегда есть дистанция
|
|
|
|
|
Jun 9 2009, 08:36
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(IJAR @ Jun 9 2009, 12:05)  Я не могу обеспечить на Mege непрерывное, из-за прерываний, обслуживание потока. Стало быть ARM7 войдя в обмен бужет непредсказуемо подвисать, если же использовать на нем прерывания, то это приплюсует еще большее время на обслуживание. У ARM7 своих задач выше крыши. Замена Mega128(Fosc=7.372800 МГц) на что-либо невозможна из-за разработки большого объема ПО. 1Мбайт/сек на Fosc=7.372800 МГц выглядит как-то малореалистично. А вот если поднять до Fosc=14.7456 то примерно потянет, ну или урезать осетра(1Мбайт/сек) Я бы соединял по SPI но не напрямую. В разрыв можно поставить SPI RAM(23K256 от микрочипа) или SPI FRAM(FM25xx), ну и пару линий квитирования для разграничения доступа к ней, тогда ARM7 по DMA сможет пару мбайт/сек прокачивать а Mega уже как будет успевать. Цитата SPI на ARM7 занят под контроллер ETHERNET, кроме того заняты 2 UART-a. бывают ведь и с 2мя SPI на борту.
|
|
|
|
|
Jun 9 2009, 08:38
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(IJAR @ Jun 9 2009, 11:05)  Замена Mega128(Fosc=7.372800 МГц) на что-либо невозможна из-за разработки большого объема ПО. Да, повеселили. Перевод проекта среди MSP430 <> AVR <> STM32 <> LPC, если ресурсов хватает, требует неделю максимум. Чем больше ресурсов - тем быстрее. Так что скажите лучше, что ПО на AVR написано бессистемно, а программист забил и уволился.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jun 9 2009, 08:55
|

Местный
  
Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035

|
Цитата(Dog Pawlowa @ Jun 9 2009, 12:38)  Перевод проекта среди MSP430 <> AVR <> STM32 <> LPC, если ресурсов хватает, требует неделю максимум. Вот только ненадо шапкозакидательства. Есть приличный опыт перевода систематизированного кода(в котором строго соблюдался стиль, кодестайлинг и который постоянно ревьюили) с AVR на ARM. Так вот исключения вроде data и perfetch абортов около полугода выскакивали и время и нервов на вычищения пришлось потратить прилично. Так что не вводите в заблуждение. А если написанно бессистемно и программист уволился, то точно такую авантюру затевать не стоит. Зашьёшься на 2-3 месяца. И ещё столько же свои баги ловить потом будешь.
|
|
|
|
|
Jun 9 2009, 08:56
|

Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669

|
Цитата(Dog Pawlowa @ Jun 9 2009, 12:38)  Да, повеселили.
Перевод проекта среди MSP430 <> AVR <> STM32 <> LPC, если ресурсов хватает, требует неделю максимум. Чем больше ресурсов - тем быстрее.
Так что скажите лучше, что ПО на AVR написано бессистемно, а программист забил и уволился. Ну, если Вам стало весело, я не возражаю. Но я не собираюсь дискутировать на тему "как и за сколько перейти с одного контроллера на другой", считайте что в моем случаеб а мне как разработчику известны все нюансы, подобный подход не является целесообраным. Если Вам есть что сказать по теме - рад буду прочитать, в противном случае есть другой раздел форума.
--------------------
Вяжешь - вой, а поедешь - песни пой. Между "хочу" и "можно" всегда есть дистанция
|
|
|
|
|
Jun 9 2009, 09:25
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(IJAR @ Jun 9 2009, 10:41)  1. У меня сейчас в проекте Mega128 + FT245BM от FTDI и далее USB HOST в PC104 под Win5.0 CE и все работает Но вот вместо PC104 есть желание поставить ARM7. Использование чипа VINCLUM со стороны ARM7 оказалось проблематично из-за нестабильности времени обмена. На том "ARM7", который Вы используете свет клином не сошелся (впочем, ка и вообще на ARM7). Возьмите, например, от NXP с вполне приличным USB Host и попробуйте оставить, как есть Цитата 2. Скорость ~ 1Mбайта: UART, I2C, SPI этого не обеспечат+ большие нагрузки ра обслуживание. Принципиально не больше, чем у нынешнего Вашего фаворита USB - байты по любому прилетают и принимать/складировать их надо. Вне зависимости от букв в названии интерфейса по любому FIFO да DMA в помощь... Цитата Вот если бы можно было соединять 2 FT245 друг сдругом - все было бы O'K Что OK- то? Дрыгание ножками кажется панацеей? Цитата(xelax @ Jun 9 2009, 11:55)  Так вот исключения вроде data и perfetch абортов около полугода выскакивали и время и нервов на вычищения пришлось потратить прилично. Значит действительно все было совершенно не так, как Вы оптимистично утверждали относительно качества исходного восьмибитового кода  Цитата(SasaVitebsk @ Jun 9 2009, 11:12)  Всё смешалось, кони-люди.  Да  , хотя и Автор пытается строить хорошию "мину"  и слепить их того, "что было".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 9 2009, 09:32
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(IJAR @ Jun 9 2009, 11:56)  мне как разработчику известны все нюансы В такой обработке - нет вопросов  А по теме, если рассуждать логически ... Любой интерфейс на AVR отнимет практически все ресурсы производительности -> Значит, интерфейса не должно быть -> значит, данные должны оказаться в адресном пространстве AVR без передачи по интерфейсу -> значит, двупортовая память (или самопальное аппаратное решение, обеспечивающее доступ к одной и той же памяти, в данном случае достаточно разделенное во времени).
--------------------
Уходя, оставьте свет...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|