Как устроена arduino

Тема в разделе "Arduino & Shields", создана пользователем Makhonin, 3 мар 2013.

  1. Makhonin

    Makhonin Гик

    Доброго времени суток. Расскажите пожалуйста, в двух словах, как устроена Arduino Duemilanove на более низком уровне, чем взаимодействие с ней через команды Arduino IDE. Что лежит в основе аппаратной части, как происходит взаимодействие внешних плат и датчиков с процессором. Например, в компьютере на обывательском уровне понятно, что есть шины, адресуемость и прерывания. Что же в Arduino? Как я понял все должно быть очень прозрачно, в том плане, что мы подключаем к ножкам микроконтроллера датчики и заставляем его считывать показания с них. Но как происходит взаимодействие с shieldами?
     
  2. Unixon

    Unixon Оракул Модератор

    По сути Arduino - это микроконтроллер AVR +обвязка для питания и обмена данными с ПК. Возможно, вам стоит для начала более подробно разобраться в том, что из себя представляет микроконтроллер и как он работает.
     
  3. roggedhorse

    roggedhorse Гик

    Чтобы иметь возможность объединять отдельные модули или чипы в более крупное устройство, производители железа договорились между собой (и пригласили на стрелу производителей софта) об унификации интерфейсов. По теме ПК вам знакомы последовательный RS232 или Centronics (параллельный, для подключения стареньких принтеров). Помимо этого они же договорились унифицировать и электронные входные/выходные цепи, например, для того, чтобы одни устройства не могли сжечь другие из-за несогласованных уровней управляющих сигналов.

    В Arduino и ей подобных модульных системах точно также есть шины и адресация устройств.
    В последовательной шине SPI адресация устройства выполняется путем подачи управляющего сигнала непосредственно на это устройство на отведенный для этих целей пин подключаемого модуля (как правило, он называется CS - chip select или SS - slave select).
    На последовательной шине I2C адресация выполняется путем передачи адреса в шину (там шина адреса и шина данных совмещена). Точно также (грубо говоря) выглядит адресация устройств на шине 1-wire.
    Параллельные шины в Arduino используются редко, поскольку требуется большое количество ног МК. Но бывает
    Вот пример, когда используя параллельную шину, увеличивают размер RAM http://hackaday.com/2011/09/05/upgrading-ram-in-an-arduino-mega/

    Большинство шилдов взаимодействуют с микроконтроллером (МК) посредством последовательных шин SPI или I2C. Многие сенсоры используют 1-wire. Как правило, взаимодействие МК с шилдом (сенсором) развивается по следующему сценарию:
    Инициатор - МК
    - Master (МК) адресует устройство и отправляет команду (например, читать такой то регистр)
    - Slave (шилд, сенсор) выплевывает в шину данные

    Инициатор - шилд (сенсор)
    - Slave отправляет сигнал прерывания через специальную свою ногу. Эта нога должна быть подключена к пину МК, который в состоянии генерировать сигнал INT или PCINT
    - Master (МК) адресует устройство и отправляет команду (например, читать регистр статуса)
    - Slave (шилд, сенсор) выплевывает в шину данные

    Первая схема называется поллингом.
    Вторая - interrupt based. Вторая сложнее в реализации, но в итоге МК потребляет меньше ресурса при работе с шилдами/сенсорами, поскольку общение происходит только тогда, когда это необходимо (например, у сенсора созрели данные для МК и он сообщает об этом через прерывание)

    Почитайте по теме шин Arduino тут
    http://www.byteparadigm.com/applica.../22/Introduction-to-SPI-and-IC-protocols.html
     
    nailxx нравится это.