реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Реализация моста PC -> SPI на attiny2313, Главные вопросы прошивка и прога на PC
Xenia
сообщение Feb 7 2015, 09:24
Сообщение #16


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Ну, а что программой (со стороны ПК) чего?
А то ведь прошивка такова, что требует общаться с собой по протоколу. Установки разных режимов и все такое.
Если бы режим работы SPI был фиксированный, то ничего бы такого строить не пришлось, а работало бы, как переходник.

А с другой стороны, чем вы станете свою Тиньку прошивать? Она, небось, тоже через SPI шьется. А если у вас есть такой SPI-программатор для прошивки вашей Тиньки, то, может быть, он сам уже и есть искомое устройство? sm.gif
Go to the top of the page
 
+Quote Post
max_2980
сообщение Feb 7 2015, 10:00
Сообщение #17





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



Ксения, а вот с программой как раз самое сложное.
Пока план таков, развести плату, изготовить, пока идут детали, разобраться в исходниках от AVR910 (что там по чем, что отрезать, что добавить), когда придут детали собрать девайс, залить прошивку, и под прошивку уже писать писишную прогу (конечно путь полностью раздолбайский).
Программатор есть вот такой кетайский USBASP USBISP AVR
www.aliexpress.com/item/USBASP-USBISP-AVR-51-Series-Programmer-Download-Aluminum-Shell-64K-Limit-Support-WIN7-64-Freeshipping/1136431141.html
То что моя схема фактически схема программатора это вы верно заметили, на то и расчет чтобы максимально использовать то что уже работало и от чего есть исходники хотя бы зашивки.
Можно было бы теоретически заюзать программатор но что у него за зашивка как ей рулить? Потом хочется своего с тотальным контролем.
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Feb 7 2015, 23:53
Сообщение #18


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



Я не вмешивался в процесс, видимо, активация Вам помогла.
Второй аккаунт удалил, так как вторичная регистрация является грубейшим нарушением правил форума.

P.S.
Похожую затею делал в 90-х, тему даже пытались развить до универсального инструмента с настраиваемым интерфейсом, чтобы можно было подключать разнородные устройства. Прошивку для моста сделали быстро, а вот ПО верхнего уровня съедало уйму времени. Пришлось отказаться от универсального преобразователя, так как все время разработки тратилось на ПО для ПК,а не на проект, в котором разово понадобился мост :-)


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Feb 8 2015, 00:00
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



A я вообще не понимаю проблемы . Купить нормальный debugger ,скачать бесплатную студию и играться ( без ковычек) сколько хош
Но, Ксения, как всегда респект!


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Feb 8 2015, 13:33
Сообщение #20


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Я тоже как раз такое пытаюсь сделать. Чтобы через USB СПИ, I2C и ного дрыг.
Думаю, надо ли мне 2.5В и 1.8 Вольт. Пока заложился на 3.3В и 5В


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
max_2980
сообщение Feb 9 2015, 20:33
Сообщение #21





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



Цитата(A. Fig Lee @ Feb 8 2015, 16:33) *
Я тоже как раз такое пытаюсь сделать. Чтобы через USB СПИ, I2C и ного дрыг.
Думаю, надо ли мне 2.5В и 1.8 Вольт. Пока заложился на 3.3В и 5В

Да у меня у самого была сначала хотелка на USB, но подумал что будет совсем сложно для такого чайника как я USB программить (надеюсь с 232-м будете легче).
Но на всякий случай думаю оставить вилку в которую можно будет воткнуть китайский свисток аля FT232 (вместо max232)
типа такого www.aliexpress.com/item/1-pcs-USB-To-RS232-TTL-Auto-imported-Converter-Module-Converter-Adapter-For-Arduino-Worldwide-FreeShipping/1361575381.html

А по поводу уровней сам соображаю. Хотся универсальности. А дабы никто никому не грел защитные диоды логично питать контроллер от питания ведомого девайса, а если ведомый с низким питаловом то есть вероятность что моей тиньке не хватит.
Тогда нужно ставить что-то из разряда преобразователей 74LVC244A, TXB0108PWR, ADG3300 с отдельным питаловом. А их где-то брать надо и они еще денег стоят, а жаба как всегда душит.
Наверно дополнительно паралельно фишке контроллера добавлю чтобы потом запаять можно было.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Feb 10 2015, 07:06
Сообщение #22


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(max_2980 @ Feb 9 2015, 23:33) *
Да у меня у самого была сначала хотелка на USB, но подумал что будет совсем сложно для такого чайника как я USB программить (надеюсь с 232-м будете легче).
Но на всякий случай думаю оставить вилку в которую можно будет воткнуть китайский свисток аля FT232 (вместо max232)
типа такого www.aliexpress.com/item/1-pcs-USB-To-RS232-TTL-Auto-imported-Converter-Module-Converter-Adapter-For-Arduino-Worldwide-FreeShipping/1361575381.html

Что-то мне ваша задача становится всё непонятнее и непонятнее sm.gif. Ведь если вы взялись курочить входную часть ("транзюки" на max232 заменять или вообще "китайский свисток" ставить), то зачем зубами цепляетесь за tiny2313? Ведь тогда вас фактически ничего с ней не связывает. А цены у tiny2313 и mega8 примерно одинаковые (порой mega8 даже дешевле стоит). А если вы у китайцев уже что-то заказали (так и не поняла с ваших слов, что это было), то уже ни о какой-переделке и речи быть не может. Хотя высказались вы на этот счет настолько невнятно, что получилось, что вы голую ATtiny2313 из Китая заказали ("будет тинька, китайцы видимо уже запаковали и отправили в дальний путь"), когда ей в России цена 100 руб в розницу.

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

Mega8 выглядит презентабельнее, чем tiny2313, не только потому, что у нее больше памяти (обоих типов), но и тем, что у нее SPI поддержан аппаратно. Т.е. кладешь в регистр SPI-данных передаваемый байт ("SPDR=байт") и ждешь когда в регистре статуса (SPSR) появится бит завершения передачи. Ну, еще есть регистр режима (SPCR), где можно желаемую частоту передачи установить, полярность и порядок передачи бит. Т.е. тут и программировать нечего, т.к. всё предельно элементарно.

А у tiny2313 (как и у прочих tiny), насколько помню, ничего такого нет. Я, кстати, сама когда-то писала SPI-интерфейс между как раз этой tiny2313 и двумя штуками АЦП AD7714 (у них связь по SPI). Там мне это ногодыгом пришлось на ассемблере писать. Сама-то программа у меня на Си была написана, а функцию эмуляции SPI на ассемблере писала для того, чтобы задержки по тактам нужные выставить. Понятно, что ни о какой универсальности тут и речи быть не может, когда мне пришлось подгонять скорость обмена под тактовую частоту МК (1.8432 МГц у tiny2313, и 2.4576 МГц у АЦП, чтобы последний с гарантией успевал принять строб). А к tiny2313 я была привязана тем, что вся конструкция питалась от линий RS232 и других источников питания не было. Вот и пришлось экономить (tiny более экономичная, чем mega).

Но вы-то не привязаны к питанию от RS232, поскольку можете запитаться от девайса. И это совершенно правильное решение, если заранее не знаете, 5-вольтвый будет девайс, 3.3-вольтовый и того меньше. А раз так, то зачем вам tiny2313 со всеми неудобствами, сопряженными с ее выбором?

Цитата(max_2980 @ Feb 9 2015, 23:33) *
А по поводу уровней сам соображаю. Хотся универсальности. А дабы никто никому не грел защитные диоды логично питать контроллер от питания ведомого девайса, а если ведомый с низким питаловом то есть вероятность что моей тиньке не хватит.
Тогда нужно ставить что-то из разряда преобразователей 74LVC244A, TXB0108PWR, ADG3300 с отдельным питаловом. А их где-то брать надо и они еще денег стоят, а жаба как всегда душит.

Верно, преобразование уровней не нужно, если питание схемы берется от девайса. А уж тем более, когда его напряжение питания заранее неизвестно.

Между тем, проблемы, которые я вижу, далеко выходят за рамки железа. Ведь SPI-интерфейс "синхронный". И хотя у него три провода (отдельно на прием и передачу), но прием и передача осуществляются одновременно. Т.е. вы не можете принять по своему PC/SPI-мосту требуемое число байт, не передав точно такое же число байт в девайс. Поэтому прием у вас всегда будет выглядеть, как эхо от передачи, которое в отличие от истинного эха, будет звучать иначе, чем передача.

Пошли дальше. Реальные устройства (например, АЦП, которые очень часто делают с SPI-интерфейсом) требуют соблюдения определенного протокола, подразумевающего серию обменов с задержкой. Например, чтобы прочесть данные из АЦП, ему сперва следует послать посылку с требованием того, что от него требуется (это либо содержимое регистров установок или готовые данные). Нужную посылку формируем и отравляем - это обычно 1-2 байта. Затем выдерживаем паузу для того, чтобы АЦП "осознал", что от него требуют, и успел приготовиться к передаче. После это передают какую-нибудь фигню типа 0xFF, прислушиваясь исключительно к ответному эху. И соответственно, столько раз, сколько байт ответной информации ожидается. В случае если пауза окажется недостаточной, то первый байт ответа может оказаться лажей, а дальше нарушиться синхронизация, т.к. в следующий раз АЦП не воспримет команду, а станет передавать тот байт, который не успел передать в прошлый раз. Но может случиться беда и в том случае, если пауза затянется, тогда АЦП может решить, что произошел сбой по таймауту и прекратить передачу данных (а точнее - передавать вместо них муру).

Во многих случаях при работе с АЦП используют дополнительную линию сброса/синхронизации (ее роль обычно выполняет chip selесt). В таких случаях желательно озаботиться тем, чтобы у PC/SPI-моста тоже такой провод был и им можно было программно дергать.

Всё это выливается в то, что PC/SPI-мост, пригодный для реальных задач, должен выглядеть не как поток, а как процедура, состоящая из нескольких шагов:
Шаг 1 - перевод линии CS (chip select) в положение, включающее у девайса слух.
Шаг 2 - передача K-байт команды, эхо от которой игнорируется.
Шаг 3 - временная задержка.
Шаг 4 - передача N-байт чепухи, эхо от которой передается в PC, как ответ девайса.
Шаг 5 - перевод линии CS (chip select) в положение, отключающее к девайса слух.
Если линия CS не используется, то шаги 1 и 5 удалять из протокола не требуется, т.к. тогда они ничему не мешают.
При этом очень желательно, чтобы посылка от PC к PC/SPI-мосту представляла собой готовую структуру данных, содержащую все байта команды и указание величины задержки между окончанием передачи команды и началом приема ответа. Сам ответ, чаще всего, тоже приходится паковать в структуру с заголовком, т.к. во многобайтных ответах бывает трудно разобраться, который из байт первый.

Сейчас я намекнула лишь на некоторые трудности, возникающие, когда девайсом является АЦП. А если это ... SD-карта?! Даже страшно себе представить последствия, если сделать PC/SPI-мост по-простецки.

Вот всё оно как-то так выглядит sm.gif, если относиться к этому делу серьезно и рассчитывать на практическую пользу от конструкции.
Go to the top of the page
 
+Quote Post
max_2980
сообщение Feb 10 2015, 19:05
Сообщение #23





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



Мда Ксения, у вас не забалуешь sm.gif
Прям напрягся пытаясь прочитать и понять.

Ну на самом деле ситуация выглядит так, некий ламер с контроллерами никак не связанный (вообще другая степь) решил заделать некий нужный ему девайс и посути интересен даже не результат а процесс.
Хочется весть путь пройти и посчупать самому. А надо все-то записать прочитать несколько регистров в некой микросхеме (SPI для управления) никакого рилтайма. И скорость не важна, хоть один регистр за секунду.
2313 потому что в книжке его увидел и предположил что это легко и может срастись, а китацы его привезут за ~60р с доставкой до дома и никуда ехать не надо (хотя наверно также и мегу привезли бы)

Вообщем признаюсь провафлил все выходные и плату так и не развел так что шить пока нечего.
Постараюсь исправиться.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Feb 11 2015, 07:38
Сообщение #24


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(max_2980 @ Feb 10 2015, 22:05) *
Ну на самом деле ситуация выглядит так, некий ламер с контроллерами никак не связанный (вообще другая степь) решил заделать некий нужный ему девайс и посути интересен даже не результат а процесс.

Вы насчет ламерства не переживайте - на самом деле любая возня с микросхемами (и МК в том числе) выглядит точно так же, как будто ты ламер, поскольку каждый раз приходится "курить даташит" sm.gif, разбираясь с тем, как всё это приспособить к делу. При этом уже имеющиеся познания могут как помогать делу (если сходство имеется), так и мешать ему (если сходство обманчиво). А если и накапливается какой-то опыт, то он, по большей части, хранится не в памяти в виде знаний, а в выработке дисциплины понимания смысла разных даташитов, мануалов и прочих инструкций. Т.е. в способности видеть то, что написано, вопреки своим собственным предположениям на этот счет. В том же случае, когда такой дисциплины выработать не удалось, то первый же освоенный МК останется с тобой на всю жизнь sm.gif, т.к. переход с него на другой выльется в трудно преодолимую проблему. Впрочем, даже овладев дисциплиной, такой переход все равно дается с трудом, хотя и менее страшит.

Я-то сейчас в вами разговариваю не потому, что мне интересен предмет разговора, а просто впомнила, что сама когда-то точно также начинала с Tiny2313. Причем никто меня этому не учил. А поскольку сама изготавливать платы не умела, то купила себе готовую - вот такую https://www.olimex.com/Products/AVR/Development/AVR-IO/ с 4-ми релюшками (довольно мощными по переключаемой нагрузке). Tiny2313 в комплект не входила, пришлось ее купить отдельно и в ту панельку вставить. Да и программировала я на первых порах, выдергивая ее из панельки и вставляя в программатор, которым мне дали попользоваться. Ну, и что за программа тогда у меня была, легко догадаться - по командам от компьютера ("1-2-3-4") теми релюшками щелкала. По началу это были электрогирлянды на новогоднюю елку, а позже - включение по расписанию разных устройств в биохимической лаборатории, где я работала (рост микроорганизмов требовал специального режима искусственного освещения и периодического фотографирования внешнего вида колонии). Вот у меня две релюшки освещение включали, а третья фото снимала.

Кстати, взгляните на схему моей платки https://www.olimex.com/Products/AVR/Develop...VR-IO-B-sch.gif - за исключением реле, она удивительно похожа на ту схему, которую вы привели. Те же "транзюки" и диоды на тех же самых местах! Поэтому, как только я вашу (т.е. AVR910) схему увидела, то тут же вспомнила свою.

Цитата(max_2980 @ Feb 10 2015, 22:05) *
Хочется весь путь пройти и посчупать самому. А надо все-то записать прочитать несколько регистров в некой микросхеме (SPI для управления) никакого рилтайма. И скорость не важна, хоть один регистр за секунду.
2313 потому что в книжке его увидел и предположил что это легко и может срастись, а китацы его привезут за ~60р с доставкой до дома и никуда ехать не надо (хотя наверно также и мегу привезли бы).

Ну, и правильно решили. Это же не квантовая механика sm.gif, когда имеешь дело с природой, а вещи, сделанные людьми и для людей. А потому первые всячески старались, чтобы для вторых это было удобно и понятно. А потому и путь тут не тяжелый, и специального образования не требующий (достаточно почитать описания или разделы из популярных книжек). Нынче даже младшие школьники в Arduino играются, а там обычно mega8 стоит или чуть постарше. Это тоже вариант, который может вам в дальнейшем пригодиться, т.к. это - то же самое AVR-направление, что и Tiny2313. Отчасти именно поэтому я вам mеga8 сватала. Т.е. тут не тупик, а широкий проторенный путь, который даже сейчас не потерял актуальности (на этот счет можете почитать тему про Ardiuno в разделе "Общение").

Mega8 я тоже юзала тем же способом, что и tiny2313, когда она мне надоела sm.gif
https://www.olimex.com/Products/AVR/Proto/AVR-P28-8MHz/
Эта плата еще дешевле оказалась, т.к. релюшек на ней не было. А было только питание, кварц и max232 (или какой-то его более дешевый китайский аналог). И саму mega8 тоже пришлось покупать отдельно в ту панельку вставлять. Зато есть целое поле с дырочками, куда всякие свои прибамбасы можно добавлять с самыми минимальными способностями к паянию sm.gif.

Ну, а когда мне и mega8 мне стало мало, купила себе такую https://www.olimex.com/Products/AVR/Proto/AVR-P40-8535-8MHz/ , только вставила в нее не mega8535, на которую, судя по названию, она была рассчитана, а самую крутую Мегу в DIP-корпусе - mega1284P, да и кварц вставила 16 МГц (он тоже там не припаян, а в гнезда вставляется). Народ, правда, надо мной смеется, увидев такую большую AVR-микросхемину, но мне она глаз не режет, а только радует sm.gif.

Цитата(max_2980 @ Feb 10 2015, 22:05) *
В общем признаюсь провафлил все выходные и плату так и не развел так что шить пока нечего.
Постараюсь исправиться.

К сожалению, после девальвации рубля, готовые платы, о которых я только что рассказала, стали стоить в рублях какую-то несоизмеримую с возможностями платы цену. Поэтому я вам их рекомендовать не стану, тем более что вы сами разводить платы умеете. Но я когда-то покупала их по цене 400-500 руб, что казалось мне не так дорого по сравнению с той вознёй, на которою мне бы пришлось идти, если все это делать самой. Тем более что так красиво я бы сделать не смогла sm.gif.

Кстати, вы какую Tiny2313 из Китая выписали? Ту, что с "PU" на конце маркировки в DIP-корпусе, чтобы вставлять в панельку, или с "SU", чтобы запаивать планарно на плату?
Go to the top of the page
 
+Quote Post
max_2980
сообщение Feb 11 2015, 18:35
Сообщение #25





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



Цитата(Xenia @ Feb 11 2015, 10:38) *
К сожалению, после девальвации рубля, готовые платы, о которых я только что рассказала, стали стоить ....
Кстати, вы какую Tiny2313 из Китая выписали? Ту, что с "PU" на конце маркировки в DIP-корпусе, чтобы вставлять в панельку, или с "SU", чтобы запаивать планарно на плату?

Ксения, спасибо что поделились опытом.
Собственно конечно можно было бы купить какую-нибудь платку (вопрос денег не так важен), хотя изготовление может станет никак не меньше готовых.
Но поучить альтиум это как раз один из тех зайцев которых хотелось бы заодно подстрелить.
А 2313 под соик вот какой ATTINY2313A-SU.
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 11 2015, 19:51
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Вернувшись к исходному...

Неужели USB->RS232->RS-232->AVR->SPI дешевле и проще, чем USB-RS232 (только именно на базе упомянутой FT2232, или FT232H) - который сам по себе, если с ним работать через D2XX драйвер, может быть SPI, I2C, JTAG, или ногодрыгалка.
Go to the top of the page
 
+Quote Post
pavel-pervomaysk
сообщение Feb 11 2015, 21:40
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716



Зато какая "chain reaction" происходит biggrin.gif
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Feb 11 2015, 21:53
Сообщение #28


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(SM @ Feb 11 2015, 14:51) *
Вернувшись к исходному...

Неужели USB->RS232->RS-232->AVR->SPI дешевле и проще, чем USB-RS232 (только именно на базе упомянутой FT2232, или FT232H) - который сам по себе, если с ним работать через D2XX драйвер, может быть SPI, I2C, JTAG, или ногодрыгалка.


I2C с FT232 может быть сложней чем с AVR. Временные характеристики, необходимость задерживать ACK и так далее.
Нужны реал тайм мозги.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 12 2015, 06:03
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(A. Fig Lee @ Feb 12 2015, 00:53) *
I2C с FT232 может быть сложней чем с AVR. Временные характеристики, необходимость задерживать ACK и так далее.
Нужны реал тайм мозги.

Не понял. Реализация I2C в MPSSE у FTDI не соответствует спецификации от NXP?
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Feb 12 2015, 12:45
Сообщение #30


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(SM @ Feb 12 2015, 01:03) *
Не понял. Реализация I2C в MPSSE у FTDI не соответствует спецификации от NXP?

O! Уже? Круто, я и не знал, что такое есть уже. помнится, в FT245 такого не было.
И это, неизвестно что лучше:
программировать на стороне Виндоус MPSSE, или иметь обычный COM port и
запрограмировать firmware.
Кому как..

Минусы реализации все через MPSSE в том, что надо иметь драйвер и надо иметь программу, которая пользует этот драйвер.
Это не будет универсальным решением - воткнул и пользуйся.
А если сделать через обычный COM port и firmware, то можно из любой терминальной программы комманды отдавать.


Сообщение отредактировал A. Fig Lee - Feb 12 2015, 14:14


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 09:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01511 секунд с 7
ELECTRONIX ©2004-2016