Xenia 37 7 февраля, 2015 Опубликовано 7 февраля, 2015 · Жалоба Ну, а что программой (со стороны ПК) чего? А то ведь прошивка такова, что требует общаться с собой по протоколу. Установки разных режимов и все такое. Если бы режим работы SPI был фиксированный, то ничего бы такого строить не пришлось, а работало бы, как переходник. А с другой стороны, чем вы станете свою Тиньку прошивать? Она, небось, тоже через SPI шьется. А если у вас есть такой SPI-программатор для прошивки вашей Тиньки, то, может быть, он сам уже и есть искомое устройство? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
max_2980 0 7 февраля, 2015 Опубликовано 7 февраля, 2015 · Жалоба Ксения, а вот с программой как раз самое сложное. Пока план таков, развести плату, изготовить, пока идут детали, разобраться в исходниках от 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 То что моя схема фактически схема программатора это вы верно заметили, на то и расчет чтобы максимально использовать то что уже работало и от чего есть исходники хотя бы зашивки. Можно было бы теоретически заюзать программатор но что у него за зашивка как ей рулить? Потом хочется своего с тотальным контролем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_man_show 0 7 февраля, 2015 Опубликовано 7 февраля, 2015 · Жалоба Я не вмешивался в процесс, видимо, активация Вам помогла. Второй аккаунт удалил, так как вторичная регистрация является грубейшим нарушением правил форума. P.S. Похожую затею делал в 90-х, тему даже пытались развить до универсального инструмента с настраиваемым интерфейсом, чтобы можно было подключать разнородные устройства. Прошивку для моста сделали быстро, а вот ПО верхнего уровня съедало уйму времени. Пришлось отказаться от универсального преобразователя, так как все время разработки тратилось на ПО для ПК,а не на проект, в котором разово понадобился мост :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 8 февраля, 2015 Опубликовано 8 февраля, 2015 · Жалоба A я вообще не понимаю проблемы . Купить нормальный debugger ,скачать бесплатную студию и играться ( без ковычек) сколько хош Но, Ксения, как всегда респект! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 8 февраля, 2015 Опубликовано 8 февраля, 2015 · Жалоба Я тоже как раз такое пытаюсь сделать. Чтобы через USB СПИ, I2C и ного дрыг. Думаю, надо ли мне 2.5В и 1.8 Вольт. Пока заложился на 3.3В и 5В Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
max_2980 0 9 февраля, 2015 Опубликовано 9 февраля, 2015 · Жалоба Я тоже как раз такое пытаюсь сделать. Чтобы через 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 с отдельным питаловом. А их где-то брать надо и они еще денег стоят, а жаба как всегда душит. Наверно дополнительно паралельно фишке контроллера добавлю чтобы потом запаять можно было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 37 10 февраля, 2015 Опубликовано 10 февраля, 2015 · Жалоба Да у меня у самого была сначала хотелка на 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 Что-то мне ваша задача становится всё непонятнее и непонятнее :). Ведь если вы взялись курочить входную часть ("транзюки" на 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 со всеми неудобствами, сопряженными с ее выбором? А по поводу уровней сам соображаю. Хотся универсальности. А дабы никто никому не грел защитные диоды логично питать контроллер от питания ведомого девайса, а если ведомый с низким питаловом то есть вероятность что моей тиньке не хватит. Тогда нужно ставить что-то из разряда преобразователей 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-мост по-простецки. Вот всё оно как-то так выглядит :), если относиться к этому делу серьезно и рассчитывать на практическую пользу от конструкции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
max_2980 0 10 февраля, 2015 Опубликовано 10 февраля, 2015 · Жалоба Мда Ксения, у вас не забалуешь :) Прям напрягся пытаясь прочитать и понять. Ну на самом деле ситуация выглядит так, некий ламер с контроллерами никак не связанный (вообще другая степь) решил заделать некий нужный ему девайс и посути интересен даже не результат а процесс. Хочется весть путь пройти и посчупать самому. А надо все-то записать прочитать несколько регистров в некой микросхеме (SPI для управления) никакого рилтайма. И скорость не важна, хоть один регистр за секунду. 2313 потому что в книжке его увидел и предположил что это легко и может срастись, а китацы его привезут за ~60р с доставкой до дома и никуда ехать не надо (хотя наверно также и мегу привезли бы) Вообщем признаюсь провафлил все выходные и плату так и не развел так что шить пока нечего. Постараюсь исправиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 37 11 февраля, 2015 Опубликовано 11 февраля, 2015 · Жалоба Ну на самом деле ситуация выглядит так, некий ламер с контроллерами никак не связанный (вообще другая степь) решил заделать некий нужный ему девайс и посути интересен даже не результат а процесс. Вы насчет ламерства не переживайте - на самом деле любая возня с микросхемами (и МК в том числе) выглядит точно так же, как будто ты ламер, поскольку каждый раз приходится "курить даташит" :), разбираясь с тем, как всё это приспособить к делу. При этом уже имеющиеся познания могут как помогать делу (если сходство имеется), так и мешать ему (если сходство обманчиво). А если и накапливается какой-то опыт, то он, по большей части, хранится не в памяти в виде знаний, а в выработке дисциплины понимания смысла разных даташитов, мануалов и прочих инструкций. Т.е. в способности видеть то, что написано, вопреки своим собственным предположениям на этот счет. В том же случае, когда такой дисциплины выработать не удалось, то первый же освоенный МК останется с тобой на всю жизнь :), т.к. переход с него на другой выльется в трудно преодолимую проблему. Впрочем, даже овладев дисциплиной, такой переход все равно дается с трудом, хотя и менее страшит. Я-то сейчас в вами разговариваю не потому, что мне интересен предмет разговора, а просто впомнила, что сама когда-то точно также начинала с 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) схему увидела, то тут же вспомнила свою. Хочется весь путь пройти и посчупать самому. А надо все-то записать прочитать несколько регистров в некой микросхеме (SPI для управления) никакого рилтайма. И скорость не важна, хоть один регистр за секунду. 2313 потому что в книжке его увидел и предположил что это легко и может срастись, а китацы его привезут за ~60р с доставкой до дома и никуда ехать не надо (хотя наверно также и мегу привезли бы). Ну, и правильно решили. Это же не квантовая механика :), когда имеешь дело с природой, а вещи, сделанные людьми и для людей. А потому первые всячески старались, чтобы для вторых это было удобно и понятно. А потому и путь тут не тяжелый, и специального образования не требующий (достаточно почитать описания или разделы из популярных книжек). Нынче даже младшие школьники в Arduino играются, а там обычно mega8 стоит или чуть постарше. Это тоже вариант, который может вам в дальнейшем пригодиться, т.к. это - то же самое AVR-направление, что и Tiny2313. Отчасти именно поэтому я вам mеga8 сватала. Т.е. тут не тупик, а широкий проторенный путь, который даже сейчас не потерял актуальности (на этот счет можете почитать тему про Ardiuno в разделе "Общение"). Mega8 я тоже юзала тем же способом, что и tiny2313, когда она мне надоела :) https://www.olimex.com/Products/AVR/Proto/AVR-P28-8MHz/ Эта плата еще дешевле оказалась, т.к. релюшек на ней не было. А было только питание, кварц и max232 (или какой-то его более дешевый китайский аналог). И саму mega8 тоже пришлось покупать отдельно в ту панельку вставлять. Зато есть целое поле с дырочками, куда всякие свои прибамбасы можно добавлять с самыми минимальными способностями к паянию :). Ну, а когда мне и mega8 мне стало мало, купила себе такую https://www.olimex.com/Products/AVR/Proto/AVR-P40-8535-8MHz/ , только вставила в нее не mega8535, на которую, судя по названию, она была рассчитана, а самую крутую Мегу в DIP-корпусе - mega1284P, да и кварц вставила 16 МГц (он тоже там не припаян, а в гнезда вставляется). Народ, правда, надо мной смеется, увидев такую большую AVR-микросхемину, но мне она глаз не режет, а только радует :). В общем признаюсь провафлил все выходные и плату так и не развел так что шить пока нечего. Постараюсь исправиться. К сожалению, после девальвации рубля, готовые платы, о которых я только что рассказала, стали стоить в рублях какую-то несоизмеримую с возможностями платы цену. Поэтому я вам их рекомендовать не стану, тем более что вы сами разводить платы умеете. Но я когда-то покупала их по цене 400-500 руб, что казалось мне не так дорого по сравнению с той вознёй, на которою мне бы пришлось идти, если все это делать самой. Тем более что так красиво я бы сделать не смогла :). Кстати, вы какую Tiny2313 из Китая выписали? Ту, что с "PU" на конце маркировки в DIP-корпусе, чтобы вставлять в панельку, или с "SU", чтобы запаивать планарно на плату? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
max_2980 0 11 февраля, 2015 Опубликовано 11 февраля, 2015 · Жалоба К сожалению, после девальвации рубля, готовые платы, о которых я только что рассказала, стали стоить .... Кстати, вы какую Tiny2313 из Китая выписали? Ту, что с "PU" на конце маркировки в DIP-корпусе, чтобы вставлять в панельку, или с "SU", чтобы запаивать планарно на плату? Ксения, спасибо что поделились опытом. Собственно конечно можно было бы купить какую-нибудь платку (вопрос денег не так важен), хотя изготовление может станет никак не меньше готовых. Но поучить альтиум это как раз один из тех зайцев которых хотелось бы заодно подстрелить. А 2313 под соик вот какой ATTINY2313A-SU. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 11 февраля, 2015 Опубликовано 11 февраля, 2015 · Жалоба Вернувшись к исходному... Неужели USB->RS232->RS-232->AVR->SPI дешевле и проще, чем USB-RS232 (только именно на базе упомянутой FT2232, или FT232H) - который сам по себе, если с ним работать через D2XX драйвер, может быть SPI, I2C, JTAG, или ногодрыгалка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 11 февраля, 2015 Опубликовано 11 февраля, 2015 · Жалоба Зато какая "chain reaction" происходит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 11 февраля, 2015 Опубликовано 11 февраля, 2015 · Жалоба Вернувшись к исходному... Неужели USB->RS232->RS-232->AVR->SPI дешевле и проще, чем USB-RS232 (только именно на базе упомянутой FT2232, или FT232H) - который сам по себе, если с ним работать через D2XX драйвер, может быть SPI, I2C, JTAG, или ногодрыгалка. I2C с FT232 может быть сложней чем с AVR. Временные характеристики, необходимость задерживать ACK и так далее. Нужны реал тайм мозги. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 12 февраля, 2015 Опубликовано 12 февраля, 2015 · Жалоба I2C с FT232 может быть сложней чем с AVR. Временные характеристики, необходимость задерживать ACK и так далее. Нужны реал тайм мозги. Не понял. Реализация I2C в MPSSE у FTDI не соответствует спецификации от NXP? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 12 февраля, 2015 Опубликовано 12 февраля, 2015 (изменено) · Жалоба Не понял. Реализация I2C в MPSSE у FTDI не соответствует спецификации от NXP? O! Уже? Круто, я и не знал, что такое есть уже. помнится, в FT245 такого не было. И это, неизвестно что лучше: программировать на стороне Виндоус MPSSE, или иметь обычный COM port и запрограмировать firmware. Кому как.. Минусы реализации все через MPSSE в том, что надо иметь драйвер и надо иметь программу, которая пользует этот драйвер. Это не будет универсальным решением - воткнул и пользуйся. А если сделать через обычный COM port и firmware, то можно из любой терминальной программы комманды отдавать. Изменено 12 февраля, 2015 пользователем A. Fig Lee Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться