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

 
 
> Реализация моста PC -> SPI на attiny2313, Главные вопросы прошивка и прога на PC
max_2980
сообщение Feb 4 2015, 22:28
Сообщение #1





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



Собственно возникает потребность порулить регистрами разных схем и хочется это делать культурно из окошка выньдос клацая мышой.
Погуглив наткнулся на схему такого старого программатора как AVR910
Прикрепленное изображение

Только думаю вместо транзюков поставить max232(в компе есть COM порт) или китайский свисток USB <-> RS232
Некий чел на своей странице приводит исходники зашивки
www.serasidis.gr/circuits/avr_isp/avr_isp.htm
Думаю взять это за основу, очень похоже на то что мне нужно.
Собственно SPI бывают разные, для определенности конкретные эпюты сигналов (скорость особа не важна)
Прикрепленное изображение


Контроллеры раньше не пользовал, так что вопрос к корифееям.
Может кто покажет короткую дорогу бегинеру.
Собственно вероятно зашивку придется модифицировать, чо-как?
Нужно писать свою прогу с кнопочками которая будет рулить контроллером через COM порт, это вообще без понятия как?
Полагаю что это стандартная задачка и спецам вероятно это как два пальца об асфальт (наверно многие с этим сталкивались).
Может кто поделится своими примерами реализаций.

Сообщение отредактировал max_2980 - Feb 4 2015, 22:31
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Feb 10 2015, 07:06
Сообщение #2


Гуру
******

Группа: Модератор 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   Реализация моста PC -> SPI на attiny2313   Feb 4 2015, 22:28
- - kovigor   Цитата(max_2980 @ Feb 5 2015, 02:28) Нужн...   Feb 4 2015, 23:53
|- - Xenia   Цитата(kovigor @ Feb 5 2015, 02:53) Вот, ...   Feb 5 2015, 00:12
|- - max_2980   Цитата(Xenia @ Feb 5 2015, 03:12) Фу...   Feb 5 2015, 07:26
|- - kovigor   Цитата(Xenia @ Feb 5 2015, 04:12) Фу...   Feb 5 2015, 09:31
- - max_2980   Походу этот лисапед уже давно придуман до меня. ww...   Feb 5 2015, 09:53
|- - Xenia   Цитата(max_2980 @ Feb 5 2015, 12:53) Похо...   Feb 5 2015, 10:55
|- - max_2980   Цитата(Xenia @ Feb 5 2015, 13:55) Проект ...   Feb 5 2015, 11:40
|- - Xenia   Цитата(max_2980 @ Feb 5 2015, 14:40) Спас...   Feb 5 2015, 15:03
|- - piroman   Xenia, не по теме, но я вас обожаю заочно.   Feb 5 2015, 17:57
- - megajohn   цепочку USB <-> RS232 + RS232 < - > MC...   Feb 5 2015, 20:43
- - max_2980_3   Цитата(Xenia @ Feb 5 2015, 18:03) P.S. Вп...   Feb 6 2015, 21:11
- - max_2980   Сегодня понял, что походу сам лоханулся и не прошл...   Feb 7 2015, 08:49
|- - Xenia   Цитата(max_2980 @ Feb 7 2015, 11:49) Так ...   Feb 7 2015, 09:07
- - max_2980   Тогда сенкью уважаемая Ксения. А я то думал это са...   Feb 7 2015, 09:13
|- - Xenia   Ну, а что программой (со стороны ПК) чего? А то ве...   Feb 7 2015, 09:24
- - max_2980   Ксения, а вот с программой как раз самое сложное. ...   Feb 7 2015, 10:00
- - one_man_show   Я не вмешивался в процесс, видимо, активация Вам п...   Feb 7 2015, 23:53
- - ILYAUL   A я вообще не понимаю проблемы . Купить нормальный...   Feb 8 2015, 00:00
- - A. Fig Lee   Я тоже как раз такое пытаюсь сделать. Чтобы через ...   Feb 8 2015, 13:33
|- - max_2980   Цитата(A. Fig Lee @ Feb 8 2015, 16:33) Я ...   Feb 9 2015, 20:33
- - max_2980   Мда Ксения, у вас не забалуешь Прям напрягся пыт...   Feb 10 2015, 19:05
- - Xenia   Цитата(max_2980 @ Feb 10 2015, 22:05) Ну ...   Feb 11 2015, 07:38
|- - max_2980   Цитата(Xenia @ Feb 11 2015, 10:38) К сожа...   Feb 11 2015, 18:35
- - SM   Вернувшись к исходному... Неужели USB->RS232-...   Feb 11 2015, 19:51
|- - A. Fig Lee   Цитата(SM @ Feb 11 2015, 14:51) Вернувшис...   Feb 11 2015, 21:53
|- - SM   Цитата(A. Fig Lee @ Feb 12 2015, 00:53) I...   Feb 12 2015, 06:03
|- - A. Fig Lee   Цитата(SM @ Feb 12 2015, 01:03) Не понял....   Feb 12 2015, 12:45
|- - SM   Цитата(A. Fig Lee @ Feb 12 2015, 15:45) п...   Feb 12 2015, 14:26
|- - A. Fig Lee   Цитата(SM @ Feb 12 2015, 09:26) Все уже з...   Feb 12 2015, 15:59
|- - SM   Цитата(A. Fig Lee @ Feb 12 2015, 18:59) А...   Feb 12 2015, 16:10
|- - A. Fig Lee   Цитата(SM @ Feb 12 2015, 11:10) Если я пр...   Feb 12 2015, 19:43
|- - SM   Цитата(A. Fig Lee @ Feb 12 2015, 22:43) э...   Feb 12 2015, 20:20
- - Павлик   Зато какая "chain reaction" происходит   Feb 11 2015, 21:40
- - A. Fig Lee   В любом случае - писать программу придется каждый ...   Feb 12 2015, 21:12
- - SM   Цитата(A. Fig Lee @ Feb 13 2015, 00:12) В...   Feb 13 2015, 06:03
- - A. Fig Lee   Цитата(SM @ Feb 13 2015, 01:03) Не писать...   Feb 13 2015, 12:06
- - SM   Цитата(A. Fig Lee @ Feb 13 2015, 15:06) а...   Feb 13 2015, 12:39


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

 


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


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