Isa и eisa

Arduino i2c связь: что такое, как настроить, скетчи

Что такое шина компьютера

Как я уже сказал — шина — это устройство, которое позволяет связать между собой несколько компонентов компьютера. Но к одной шине могут быть подключены несколько устройств и у каждой шины есть свой набор слотов для подключения кабелей или карт.

Фактически, шина — это набор электрических проводов, собранных в пучок, среди них есть провода питания, а также сигнальные провода для передачи данных. Шины также могут быть сделаны не в виде внешних проводов, а вмонтированы в схему материнской платы.

По способу передачи данных шины делятся на последовательные и параллельные. Последовательные шины передают данные по одному проводнику, один бит за один раз, в параллельных шинах передача данных разделена между несколькими проводниками и поэтому можно передать большее количество данных.

Пропускная способность шины процессора

Для определения скорости передачи данных по шине процессора необходимо умножить разрядность шины данных (64 бит, или 8 байт, для Celeron/Pentium III/4 или Athlon/Duron/ Athlon XP/Athlon 64) на тактовую частоту шины (она равна базовой (внешней) тактовой частоте процессора).

Например, при использовании процессора Pentium 4 с тактовой частотой 3,6 ГГц, установленного на системной плате, частота которой равна 800 МГц, максимальная мгновенная скорость передачи данных будет достигать примерно 6400 Мбайт/с. Этот результат можно получить, используя следующую формулу: 800 МГц × 8 байт (64 бит) = 6400 Мбайт/с.

Для более медленной системы Pentium 4: 533,33 МГц × 8 байт (64 бит) = 4266 Мбайт/с; 400 МГц × 8 байт (64 бит) = 3200 Мбайт/с.

Для системы Athlon XP (Socket A) получится следующее: 400 МГц × 8 байт (64 бит) = 3200 Мбайт/с; 333 МГц × 8 байт (64 бит) = 2667 Мбайт/с; 266,66 МГц × 8 байт (64 бит) = 2133 Мбайт/с.

Для системы Pentium III (Socket 370): 133,33 МГц × 8 байт (64 бит) = 1066 Мбайт/с; 100 МГц × 8 байт (64 бит) = 800 Мбайт/с.

Максимальную скорость передачи данных называют также пропускной способностью шины (bandwidth) процессора.

Шина AGP

Необходимость передачи видео высокого качества с большой скоростью привела к разработке AGP. Accelerated Graphics Port (AGP) подключается к процессору и работает со скоростью шины процессора. Это значит, что видеосигналы будут намного быстрее передаваться на видеокарту для обработки.

AGP использует оперативную память компьютера для хранения 3D изображений. По сути, это дает видеокарте неограниченный объем видеопамяти. Чтобы ускорить передачу данных Intel разработала AGP как прямой путь передачи данных в память. Диапазон скоростей передачи — 264 Мбит до 1,5 Гбит.

Типы системных шин.

В современных компьютерах используются шины нескольких видов. Материнские платы с процессорами Intel, оснащаются шинами QPB типа. Они способны передавать данные 4 раза за такт, а вот платы с процессорами AMD используют шины EV6, передающие данные 2 раза за один такт. Кстати, в последних моделях своих процессоров AMD вообще отказывается от стандартной системной шины, её роль будет выполнять технология HyperTransport.

Так как шина передает данные несколько раз за такт, её эффективная частота обычно в несколько раз выше реальной, то есть шина, имеющая фактическую частоту 200 мГц и передающая данные 4 раза за один такт, будет работать с эффективной частотой в 800 мГц

Это важно понимать для оценки производительности шины и расчета возможностей её разгона

Следует учитывать и тот факт, что системная шина имеет ограничения по разгону, потому что превышение допустимого уровня тактовой частоты может привести к неисправности и нарушениям в работе. В то же время системная шина будет нормально функционировать при показателях частоты, которые ниже указанных на упаковке, не превышающих допустимый уровень.

Основные шины компьютера

Компьютер состоит из множества различных компонентов, это центральный процессор, память, жесткий диск, а также огромное количество дополнительных и внешних устройств, таких как экран, мышка клавиатура, подключаемые флешки и так далее. Всем этим должен управлять процессор, передавать и получать данные, отправлять сигналы, изменять состояние.

Для реализации этого взаимодействия все устройства компьютера связаны между собой и с процессором через шины. Шина — это общий путь, по которому информация передается от одного компонента к другому. В этой статье мы рассмотрим основные шины компьютера, их типы, а также для соединения каких устройств они используются и зачем это нужно.

Шины и разряды

Как ты уже знаешь, вся информация в цифровой технике стараниями инженеров и математиков представляется в виде двоичных чисел, которые записываются с помощью всего двух цифр: «0» и «1». Обычное десятичное число «3» в двоичной записи будет выглядеть как «11», т.е. 310 = 112. Нижние индексы указывают в какой системе счисления записано число, т.е. 10 – десятичная, а 2 – двоичная. Одна цифра в двоичном числе называется разрядом. У разрядов есть старшинство. Самый правый разряд называется младшим, а самый левый – старшим. Старшинство разряда растет справа налево:

Двоичное число, состоящее из 8 разрядов называется 8-ми разрядным, из 16 – шестнадцатиразрядным и т.д. Разрядность двоичного числа имеет самое прямое отношение к взаимодействию между процессором, памятью и устройствами ввода-вывода.

Дело в том, что в твоем МК бегают такие же двоичные числа. Они ходят от памяти к процессору, от процессора назад к памяти или УВВ, а от последних к процессору. Бегают они естественно по проводам (в МК эти шины спрятаны внутри микросхемы). Каждый провод в определённый момент времени может передавать только один разряд со значением «0» или «1». Поэтому, чтобы передать, к примеру, 8-ми разрядное число от процессора к памяти или назад понадобится минимум 8 таких поводов.

Несколько таких проводов, объединенных вместе называются шиной. Шины бывают нескольких видов: шина адреса, шина данных и шина управления. По шине адреса бегают числа, которые обозначают адрес ячейки памяти или устройства ввода-вывода, откуда ты хочешь получить или куда хочешь записать данные. А сами данные будут передаваться уже по шине данных. Это похоже на почтовую посылку. У посылки есть адрес и есть содержание. Так вот в микропроцессорной системе, каковой МК также является, адрес и данные передаются по разным путям, именуемым шинами.

Сколько проводов должно быть в шине?

Это напрямую зависит от конструкции процессора. Процессор может иметь 32-разрядную шину данных и 16-ти разрядное АЛУ. Такие случаи в истории процессоров и МК встречаются многократно. Поэтому разрядность процессора не определяет 100% разрядность шин данных и шин адреса. Всё зависит от конкретной конструкции.

На что влияет разрядность шины адреса

Самым главным, на что она влияет, является количество адресов, которые можно по ней передавать. Например, в 4-разрядной системе это будет всего 24 = 16 адресов, в 64-разрядной числов сдресов будет уже 264=18 446 744 073 709 551 616. Таким образом, чем выше разрядность шины адреса, тем к больше объем памяти и больше устройств ввода-вывода, с которыми может работать процессор

Это важно

На что влияет разрядность шины данных

Её разрядность определяет сколько данных процессор может считать за один раз. Чем выше разрядность, тем больше данных можно считывать за один раз. Её разрядность, как и разрядность шины адреса целиком определяется конструкцией конкретного процессора или МК. Но при этом всегда кратна восьми. Связано это с тем, что практически во всех устройствах памяти минимальной единицей информации является байт, т.е. двоичное число из 8-ми разрядов.

Зачем было нужно вводить ещё одно название: байт? Оно служит для обозначения количества информации. Если количество разрядов говорит просто о длине двоичного числа, то битность говорит о количестве информации, которую это число несет. Считается, что один разряд двоичного числа может передавать 1 бит информации. При этом биты группируются в байты, килобайты, мегабайты, гигабайты, терабайты и т.д.

Кстати, 1 байт = 8 бит, 1 килобайт = 1024 байтам, 1 мегабайт = 1024 килобайтам и т.д. Почему именно 1024? Все это связано с тем, что размер памяти всегда кратен степени двойки: 23 = 8, 210=1024. В свою очередь кратность двойке была выбрана благодаря тому, что она упрощает техническую реализацию устройств памяти. Устройство памяти представляет.

Шина процессора

Шина PCI

Peripheral Component Interconnect (PCI) — это самая новая разработка в области шин расширений. Она является текущем стандартом для карт расширений персональных компьютеров. Intel разработала эту технологию в 1993 году для процессора Pentium. С помощью этой шины соединяется процессор с памятью и другими периферийными устройствами.

PCI поддерживает передачу 32 и 64 разрядных данных, количество передаваемых данных равно разрядности процессора, 32 битный процессор будет использовать 32 битную шину, а 64 битный — 64 битную. Работает шина на частоте 33 МГц.

В PCI можно использовать технологию Plug and Play (PnP). Все карты PCI поддерживают PnP. Это значит, что пользователь может подключить новую карту, включить компьютер и она будет автоматически распознана и настроена.

Также тут поддерживается управление шиной, есть некоторые возможности обработки данных, поэтому процессор тратит меньше времени на их обработку. Большинство PCI карт работают на напряжении 5 Вольт, но есть карты, которым нужно 3 Вольта.

Шина MCA

Компания IBM разработала эту шину в качестве замены для ISA, для компьютера PS/2, который вышел в 1987 году. Шина получила еще больше усовершенствований по сравнению с ISA. Например, была увеличена частота до 10 МГц, а это привело к увеличению скорости, а также шина могла передавать 16 или 32 бит данных за раз.

Также была добавлена технология Bus Mastering. На плате каждого расширения помещался мини-процессор, эти процессоры контролировали большую часть процессов передачи данных освобождая ресурсы основного процессора.

Одним из преимуществ этой шины было то, что подключаемые устройства имели свое программное обеспечение, а это значит что требовалось минимальное вмешательство пользователя для настройки. Шина MCA уже не поддерживала карты ISA и IBM решила брать деньги от других производителей за использование этой технологии, это сделало ее непопулярной с сейчас она нигде не используется.

Шина USB

Шина USB (Universal Serial Bus) наиболее распространенный способ подключения внешних устройств к материнской плате телевизора, ноутбука и других устройств. Данная шина разработана в 1996 году, широкое применение получила начиная с 2000 года, с появлением первой Flash.

На данный момент шина имеет три стандарта отличающихся скоростью передачи данных:

  • USB 1 примерно 12 МБит/с
  • USB 2 примерно 450 МБит/с
  • USB 3 примерно 5 ГБит/с

Шина USB является асимметричной и работает по типу MASTER-SLAVE. Драйвера у шины разные. Один из них Downstream – управляет поведением шины данных от устройства

Шина устройства представляет из себя четыре проводника, являющихся сигнальными проводами обернутыми в защитную землю. Провода идут со стандартной цветовой маркировкой: красный, белый, зеленый, черный. По красному и черному проводу передается напряжение питания – 5V. И рассчитано на ток в 100 мА для одного устройства. К одному устройству можно подключать до 5 внешних устройств, соответственно до 500 мА.

Схема подключения устройства имеет следующий вид:

Схема подключения

По белому и зеленому проводу осуществляется дифференциальная передача сигналов. Передача управляется при помощи передатчиков управлений кодером, по соответствующим сигналам.

Второй драйвер – Upstream. Расположен на стороне приемника, управляется кодером для передачи данных, аналогично как Downstream.

Разъемы подключения шин имеют следующий вид:

Схема подключения USB портов

Тестирование Arduino I2C

А вот и самая захватывающая часть — включение питания и тестирование!

Используя Arduino IDE, загрузите эскиз мастера Arduino в одну из Ардуино. Затем загрузите скетч наследника в другую Arduino.

  • Отрегулируйте потенциометр на ведущем устройстве, чтобы регулировать частоту мигания светодиода ведомого устройства.
  • Отрегулируйте потенциометр на ведомом устройстве, чтобы контролировать частоту мигания светодиода ведущего устройства.

Наш код принимает положение потенциометра мастера и посылает его ведомому устройству через I2C. Затем ведомое устройство использует полученное значение для настройки времени задержки мигания светодиода. То же самое происходит и с положением потенциометра ведомого.

Максимальная длина кабеля в CAN-шине

При скорости 1 Мбит/с максимальная длина кабеля может составлять около 40 метров. Это связано с тем, что схема арбитража требует, чтобы волновой фронт сигнала успел распространиться до самого удаленного узла и обратно. Другими словами, длина кабеля ограничена скоростью света.

Другие максимальные длины кабелей (значения приблизительны):

  • 100 метров при скорости 500 кбит/с;
  • 200 метров — при 250 кбит/с;
  • 500 метров — при 125 кбит/с;
  • 6 километров — при 10 кбит/с.

Если для обеспечения гальванической развязки используются оптопары, максимальная длина шины соответственно уменьшается.

Предыдущая запись Плохо заводится на холодную
Следующая запись Ошибка P0126 — недостаточная температура охлаждающей жидкости

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2

Обработка позволяет перенести из УПП в ERP / 1С:УТ 11 / КА 2 всю возможную информацию. Переносятся документы, а также начальные остатки и справочная информация. Типовая обработка от фирмы 1С не позволяет сохранить документы за период работы. Кроме того, наши алгоритмы выгрузки начальных остатков тоже имеют больше функционала и тщательно проверялись на реальных проектах перехода с УПП на ERP.
При приобретении обработки вы будете 1 месяц получать ее обновления, далее можно приобрести подписку на обновления. Конфигурации 1С постоянно меняются, выходят новые релизы. Имея подписку на обновления, вы всегда можете быть уверены, что правила конвертации данных будут работать на ваших базах 1С.

50722
45650 руб.

341

Шина EISA

Необходимость повышения производительности наряду
с обеспечением совместимости привела к дальнейшему
развитию шины ISA. Поэтому в сентябре 1988 года
Compaq, Epson, Hewllett-Packard, NEC, Wyse, Zenith,
Olivetti, AST Research и Tandy представили 32-разрядное
расширение шины с полной обратной совместимостью,
которое получило название EISA (Extended ISA
).
Основные характеристики нового интерфейса были следующими:

  • Слот EISA полностью совместим со слотом ISA.
    Как и в случае 16-разрядного расширения, новые
    возможности обеспечивались путем добавления новых
    линий. Поскольку дальше удлинять разъем ISA было
    некуда, разработчики нашли оригинальное решение:
    новые контакты были размещены между контактами
    шины ISA и не были доведены до края разъема. Специальная
    система выступов на разъеме и щелей в cоответствующих
    местах на EISA-картах позволяла им (картам) глубже
    заходить в разъем и подсоединяться к новым контактам.
    На «первом этаже» (верхнем) этой двухэтажной конструкции
    находятся контакты уже известной ISA, в то время
    как на «втором этаже» (нижнем) находятся новые
    выводы EISA. По этой причине в слоты EISA могут
    вставляться и ISA-карточки (последние не будут
    полностью входить в разъем, так как они не имеют
    прорези)
  • EISA является 32-разрядной шиной, что в сочетании
    с 8.33 MHz»ами дает пропускную способность в 33
    Mb/s
  • 32-разрядная адресация памяти позволяла адресовать
    до 4 Gb памяти (как и в расширении ISA, новые
    адресные линии были без задержки)
  • Автонастройка плат расширения, а также возможность
    их конфигурации не с помощью DIP-переключателей,
    а программно
  • Поддержка возможности задания уровня двухуровневого
    (edge-triggered
    ) прерывания, что позволяло
    нескольким устройствам использовать одно прерывание,
    как и в случае многоуровневого (level-triggered
    )
    прерывания
  • Поддержка multiply bus master
  • Шина EISA предоставляет большие преимущества
    при использовании кэш-памяти

Как видно из изложенного описания, для потребностей
того времени этого было вполне достаточно.

Важной особенностью шины являлась возможность для
любого bus master обращаться к любому устройству
памяти или периферийному устройству, даже если они
имели разные разряды шины. Говоря о полной обратной
совместимости с ISA, следует отметить, что ISA-карты,
естественно, не поддерживали разделение прерываний,
даже будучи вставленными в EISA-коннектор

Что касается
поддержки multiply bus master, то она представляла
собой улучшенную и дополненную версию таковой для
ISA. Также присутствовали четыре уровня приоритета:

  1. Cхемы обновления памяти
  2. Процессор
  3. Адаптеры шины

Имелся также арбитр шины EISA — так называемый
перефирийный контроллер (ISP, Integrated System
Peripheral
), который следил за порядком. Кроме
этого, наличествовало еще одно устройство — Intel»s
Bus Master Interface Chip
(BMIC), которое следило
за тем, чтобы master не засиживался на шине. Через
определенное количество тактов master снимался с
шины и генерировалось немаскируемое прерывание.

Я не буду приводить назначение выводов EISA-слота,
так как шина EISA не получила такого большого распространения,
как ISA, и уже давно вымерла. Найти ее можно разве
что только в достаточно древних компьютерах.

Шина SPI

SPI (Serial Peripheral Interface) – четырех проводной интерфейс, применяется в схемах с микроконтроллерами. Обеспечивает синхронный дуплексный обмен данными. SPI работает по принципу сдвигового регистра. Регистры находятся в разных устройствах. Одно из них является MASTER. Это может быть микроконтроллер с тактовым генератором имеющий определенную программу.

Другим устройством может быть:

  • память
  • датчик температуры
  • принтер
  • др.

Для обмена информацией между мастером и устройствами используются сигналы INPUT и OUTPUT. Название шин образовалось от сокращенных слов устройств и сигналов:

  • MISO – Master Input Slave Output
  • MOSI – Master Output Slave Input

Основной сигнал в этой шине является SLK (CLOCK).

Когда микроконтроллер работает с несколькими устройствами, будут необходимы дополнительные сигналы, для выбора соответствующего устройства с которым будет происходить обмен. В этом случае потребуется сигнал выборки – SS (Slave Select). Если устройств N, то увеличивается количество выводов от MASTER. При этом сигналы поступающие от MASTERA идут параллельно. 

В таком случае при поступлении SS на одном выводе, данные передаются только с необходимого устройства выбранного мастером для обмена. Чтобы устройства не мешали работе друг друга при обмене, происходит стробирование, которое осуществляется по сигналу SS для каждого устройства.


Схема SPI шины

Преимущества шины SPI:

  • простота реализации
  • полный дуплекс – передача данных от мастера к устройству и в обратном направлении за один такт
  • низкие требования к стабильности тактовых импульсов, так как передача данных начинается по фронту SCLK


Шина SPI

Недостатки шины SPI:

отсутствие контроля. Например обрыв шин MISO или MOSI, накладывается при помощи программных средств

Объяснение скетча для ведомого

Для ведомого устройства существует небольшая разница в кодировании I2C-связи. Первая разница заключается в адресе .

Для ведомых устройств адрес является обязательным. Для нашего проекта адрес для ведомого устройства будет 0x08. Это может быть любой адрес, но убедитесь, что он уникален в сети I2C.

Некоторые I2C ведомые устройства также имеют определенные I2C-адреса, поэтому сначала проверьте спецификацию.

Мы присоединим I2C сеть в качестве ведомого устройства, добавив код внутри .

Обработчики событий

Следующая задача — добавить в наш код обработчики событий для управления данными, полученными с других устройств в I2C сети.

Обработчики событий — это части кода, которые управляют событиями, с которыми наше устройство, скорее всего, столкнется во время работы.

Wire.onReceive()

В части скетча мы добавляем функцию для регистрации функции (обработчика), которая будет управлять полученными данными.

Мы вызываем нашу функцию-обработчик

Обратите внимание, что имя функции может быть любым. В приведенном выше эскизе вызывается в секции

В конце эскиза находится код функции-обработчика. Он инициализируется как . Параметр содержит количество байт полученных данных.

Wire.onRequest()

Следующий обработчик события, который мы будем использовать — . Эта функция используется на подчиненных устройствах и работает аналогично .

Единственное отличие заключается в том, что она обрабатывает события запроса данных. Запросы данных поступают от основных устройств.

В функцию мы добавляем код . А в конце нашего эскиза добавляем функцию

Обратите внимание, что обработчики не принимают никаких параметров. Функция содержит только

Нам не нужны и , потому что библиотека Wire уже обрабатывает ответы от ведомых устройств.

Расшифровка кодов

Что же, если произвести проверку авто на предмет неисправностей у вас получилось, то тогда необходимо расшифровать комбинации ошибок, иначе зачем вообще нужна диагностика?

Самостоятельная диагностика

Рассмотрим расшифровку комбинаций неисправностей, которые вы можете считать при самостоятельной проверке Лады Приоры.

Обратите внимание: если кнопка переключения функций бортового компьютера не будет нажиматься более 10 секунд, то приборная панель вновь перейдет в рабочее состояние

Поломки в системе зажигания

Если вы не смогли провести проверку своей ВАЗ Приора самостоятельно, то можно сделать это при помощи специального тестера. В этом случае код ошибки будет представлять собой комбинацию из буквы и четырех цифр:

  • Р — означает поломку в работе электронных систем ДВС;
  • С — неисправности в работе шасси;
  • В — поломка в электронике салона авто;
  • U — свидетельствует об ошибке в совместной работе разных систем;
  • цифра 0 обозначает код OBD-2;
  • 1 и 2 — код предприятия;
  • 3 — резервный код.
Комбинация Описание поломки
Р0300 Блок управления передает сигнал об отсутствии искры во всех цилиндрах двигателя 16 клапанов авто.
Р0326 Некорректный сигнал, поступающий на блок управления с датчика детонации. Рекомендуется произвести более тщательную проверку устройства.
Р0327 В цепи датчика детонации произошел обрыв или замыкание. Следует проверить цепь.
Р0335, Р0336 Возникли ошибки в работе датчика коленчатого вала. Кроме того, такие комбинации могут свидетельствовать о некорректном сигнале, поступающем с устройства на бортовой компьютер.
Р0337 Устройство контроля положения коленчатого вала замыкает на массу.
Р0338 Произошло короткое замыкание или обрыв в цепи датчика коленвала.
Р0342 В цепи датчика фар зафиксирован слишком низкий сигнал
Р0343 Зафиксирован слишком высокий сигнал в цепи того же устройства.
Р0422 Произошла поломка нейтрализатора, рекомендуется заменить устройство.
Р0444 Блоком управления Лада Приора зафиксирован обрыв в проводке клапана адсорбера.
Р0445 Клапан адсорбера закоротил на массу.
Р0480 Произошел обрыв в проводке реле вентилятора, следует произвести проверку реле и при необходимости заменить его.
Р0481 В проводке вентилятора системы охлаждения произошло замыкание.

После принятия ресивером согласия он изначально проведет инсталляцию со спутника, а затем, после достижения 50 -й отметки на шкале прогресса, начнет инсталлировать скачанные файлы в память устройства.

Комбинация Описание поломки
Р0300 Блок управления передает сигнал об отсутствии искры во всех цилиндрах двигателя 16 клапанов авто.
Р0326 Некорректный сигнал, поступающий на блок управления с датчика детонации. Рекомендуется произвести более тщательную проверку устройства.
Р0327 В цепи датчика детонации произошел обрыв или замыкание. Следует проверить цепь.
Р0335, Р0336 Возникли ошибки в работе датчика коленчатого вала. Кроме того, такие комбинации могут свидетельствовать о некорректном сигнале, поступающем с устройства на бортовой компьютер.
Р0337 Устройство контроля положения коленчатого вала замыкает на массу.
Р0338 Произошло короткое замыкание или обрыв в цепи датчика коленвала.
Р0342 В цепи датчика фар зафиксирован слишком низкий сигнал
Р0343 Зафиксирован слишком высокий сигнал в цепи того же устройства.
Р0422 Произошла поломка нейтрализатора, рекомендуется заменить устройство.
Р0444 Блоком управления Лада Приора зафиксирован обрыв в проводке клапана адсорбера.
Р0445 Клапан адсорбера закоротил на массу.
Р0480 Произошел обрыв в проводке реле вентилятора, следует произвести проверку реле и при необходимости заменить его.
Р0481 В проводке вентилятора системы охлаждения произошло замыкание.

Что такое шина компьютера

Как я уже сказал — шина — это устройство, которое позволяет связать между собой несколько компонентов компьютера. Но к одной шине могут быть подключены несколько устройств и у каждой шины есть свой набор слотов для подключения кабелей или карт.

Фактически, шина — это набор электрических проводов, собранных в пучок, среди них есть провода питания, а также сигнальные провода для передачи данных. Шины также могут быть сделаны не в виде внешних проводов, а вмонтированы в схему материнской платы.

По способу передачи данных шины делятся на последовательные и параллельные. Последовательные шины передают данные по одному проводнику, один бит за один раз, в параллельных шинах передача данных разделена между несколькими проводниками и поэтому можно передать большее количество данных.

Понравилась статья? Поделиться с друзьями:
Автоэксперт
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: