Технология ISP
- Войдите на сайт для отправки комментариев
Чт, 10/01/2013 - 06:05
Что такое ISP как технология?
Почему некоторые устройства, например, графические экраны, SD-разьемы нужно подключать через ISP-разьем?
Чем отличаются аппаратный ISP от программного? Много ли требует последний в драйверах к различным устройствам системных ресурсов?
Если я не ошибаюсь "нет такой технологии" :)
Есть "технология" SPI. На какие пины он выведен у вашей платы - смотрите в описании.
Например у меги он выведен на пины 50-53. Плюс сдублирован вывод этих же ног на ICSP разъем (видимо отсюда у вас и "всплыло" слово ISP). Почему этот разъем называется именно так - потому что исторически он использовался для прошивки In-Circuit Serial Programmin во всяких програматорах. Но дефакто эта прошивка работает имеено по протоколу SPI.
Поэтому некторые шилды для экранов/SD просто для удобства предпочитают забирать с этого разъема. Просто потому что SPI пины у, к примеру меги (50-53) и уны (10-13) - разные. И физически находится в разных местах, а ICSP разъем куда они дополнительно выводятся - находится на одном и том же месте. То есть шилд получается более универсальным под разные платы. Чехарда выходит только с SS пином. Он, кажись не выведен на ICSP разъем, поэтому его все одно приходится отдельно тянуть.
Вообщем SPI - это протокол/технология, а ICSP - вид разъема куда выведены эти ноги (причем, к примеру на PIC-ках исторически по другому в нем ноги расположены).
Разница между "аппаратно и программно" - в том и состоит что "аппаратно или программно" ;). Аппаратно реализован этот протокол (как дрыгать ногами что-бы байт передать) или вы сами digitalWrite-тами будете это делать :) (и занимать на это процессорное время).
Вообщем гуглите "SPI описание" для понимания.
Получается если я подключу LCD экран в ICSP разъем(вот такой например http://www.ebay.com/itm/Serial-IIC-I2C-TWI-1602-162-16X2-Character-LCD-M...), то 10-13 пин у уны я не смогу использовать для подключения других датчиков?
Получается если я подключу LCD экран в ICSP разъем(вот такой например http://www.ebay.com/itm/Serial-IIC-I2C-TWI-1602-162-16X2-Character-LCD-M...), то 10-13 пин у уны я не смогу использовать для подключения других датчиков?
Верно. Возмите тестер и прозвоните. ICSP и 11-13 - это одно и тоже. Тупо соеденены между собой.
Или возмите схему платы и посмотрите http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
Только обратите внимание. Что на последних ревизиях имеется два подобных разъема ICSP1 - для прошивки USB-микросхемы (но экраном вы с нее не сможете рулить, если не хотите потретять способность общатся с компом) и ICSP который к основному камню подведен (внизу спарава на схеме сам камень, разъем - над ним. Как видите ноги камня 17,18,19 идут и на ICSP разъем и на D8-D13 гребенку.
UPDATE: Для I2C картинка ошибочна. Указание пинов D4,D5 - не верное. Правильные пины A4,A5. См. пост #9 ниже по ветке.
(вот такой например http://www.ebay.com/itm/Serial-IIC-I2C-TWI-1602-162-16X2-Character-LCD-Module-Display-For-Arduino-Blue-/180934118867?pt=LH_DefaultDomain_0&hash=item2a20838dd3),
Хотя - стоп. А какое отношение к этому экрану вообще имеет ICSP/SPI? У него же даже в адресе видно что он по I2C/TWI шине работает.
А это у уны веведено на D4,D5 пин. И на ICSP разъем не дублируется. Если верить схеме, то еще они сдублиранованы возле AREF. Но, если честно сам впервые это заметил. Может отличаться в разных ревизиях. Лучше тестером проверить свою плату.
Спасибо за хороший ответ с картинками, немного разобрался и понял в чем я ошибался)
Да, конечно, возможно, я перепутал название, потому и не нашел в гугле ответ на свой вопрос. Хотя яндекс выдает больше страничек по ISP чем по SPI.
Как и у Демона969 вопрос возник из за дисплея.
Один драйвер (библиотека) дисплея, что я приобрел, способен работать на любых пинах, но не поддерживает русский язык и скетч с ним . Другая библиотека, которая подключается только к пинам MISO, CLK, MOSI и т.п. , в комметах к третьей сказано, что подключать надо к SPI, иначе эмулировать его программно. Обе последние поддерживают русский язык. Отсюда и возник этот вопрос.
Теперь понятно - арду... atmegaXX каким-то низкоуровневым способом общается с устройствами через эти пины и получается выгоднее в отношении затрачиваемых ресурсов.
И еще был вопрос - а как же сочитать разные устройства, требующие SPI - например, тот же дисплей и разьем SD-карточки. Теперь ответ найден: эмулировать программно. Ну или делать специализированные контроллеры, общающиеся, через RX, TX или как-то еще.
А вот еще вопрос по той же теме: Если я подключу одно из устройств, по SPI (MISO, MOSI, SCK, RESET), я смогу прошивать готовое устройство при помощи этого разьема/контактов без отсоединения подключенного устройства? Я обычно именно так и прошиваю.
И еще был вопрос - а как же сочитать разные устройства, требующие SPI - например, тот же дисплей и разьем SD-карточки. Теперь ответ найден: эмулировать программно. Ну или делать специализированные контроллеры, общающиеся, через RX, TX или как-то еще.
Можно и так (програмно). Но если погуглить описание шины SPI, то станет ясно, что она позволяет вешать на себя несколько устройств. Хотя у нее и нет адресации. Для этого и предназначен пин SS, он же CS (Chip Select). Его, вообщем-то, можно сделать любым пином. И с помощью него выбирать "какое устройство активно на шине в данный момент". Посмотрите форум за последниюю неделю. Там, как раз был вопрос про EthernShield, в котором одновременно и SD карта и Wiznet-чип. И оба на одном SPI.
Вообщем, если кратко: MISO,MOSI,SCK - могут быть общие у разных устройсов. SS - проводим "каждому свой", и с помощью состояния этих SS-XXX выбираем с кем мы хотим общатся в данный момент.
А вот еще вопрос по той же теме: Если я подключу одно из устройств, по SPI (MISO, MOSI, SCK, RESET), я смогу прошивать готовое устройство при помощи этого разьема/контактов без отсоединения подключенного устройства? Я обычно именно так и прошиваю.
Не знаю точно. Думаю зависит от устроства. Я бы отключил от греха подальше. На запаянной плате - не приходилось, а на макетке мне было проще отключить чем разбиратся :)
Хотя, с другой стороны, называется-то оно, все-таки "внутри-схемное программирование", так что.... может кто другой подскажет ;)
>...то станет ясно, что она позволяет вешать на себя несколько устройств.
Да, да, почему-то только увидев это ваше сообщение, я вспомнил, что читал сегодня что SPI/ISP это как сдвиговый регистр, к нему можно подключать много устройств. Избирательно восприятие человека.. :)
Кстати, это хорошо описано вот здесь.
>так что.... может кто другой подскажет ;)
Подскажет опыт :)
Надо просто попробовать :)
Кстати, я злобно обманул на картинке (не специально). И никто не заметил/поправил. У уны, наны и проч. I2C выведен не на D4,D5, а на A4,A5
Просто в "описании платы" (и тут в переводе и на оригинальном сайте) сказанно 4,5-выход. без уточнения типа. Обычно подразумевается "цифровые". Кроме этого случая.
Благодарю за поправку *кивает*