Каталог статей

Главная » Статьи » Мои статьи

PIC24H - 18.0 Улучшенный модуль CAN (ECAN)

Примечание: в данном техническом описании собрана информация о возможностях устройств только группы PIC24H. Этот документ не является всеобъемлющим источником информации. Дополнить содержащиеся здесь сведения вы сможете, обратившись к документу "Справочное руководство по семейству dsPIC30F" ("dsPIC30F Family Reference Manual" - DS70046).

Примечание: В описаниях модулей ECAN в даташитах на микроконтроллеры PIC довольно часто попадаются ошибки, зачастую являющиеся последствием копирования информации из описаний более ранних версий микроконтроллеров или модуля CAN. Этот раздел в даташите на PIC24H не стал исключением. Обнаруженные ошибки исправлены, к некоторым исправлениям имеются пояснения в сносках. Но, возможно, не все ошибки обнаружены, так что будьте внимательны! - прим. пер.


18.1 Краткий обзор модуля

Улучшенный модуль CAN1 (Enhanced Controller Area Network - ECAN) - это последовательный интерфейс, используемый для взаимодействия с другими модулями CAN или микроконтроллерными устройствами. Этот интерфейс/протокол был разработан для обеспечения связи в среде с помехами. Устройства PIC24H содержат до двух модулей ECAN.

Модуль CAN - это коммуникационный контроллер, реализующий протокол CAN 2.0A/B согласно спецификации BOSCH. Модуль поддерживает следующие версии протокола: CAN 1.2, CAN 2.0A, CAN 2.0B пассивный и CAN 2.0B активный. Исполнение модуля - это полная система CAN2.

Модуль обладает следующими функциональными возможностями:
- реализация протокола CAN версий CAN 1.2, CAN 2.0A и CAN 2.0B;
- стандартные и расширенные кадры данных;
- длина данных от 0 до 8 байтов;
- программируемая скорость до 1 Мбит/с;
- автоматический ответ на удалённый запрос передачи;
- до 8 передающих буферов с задаваемой программно системой приоритетов и возможностью отмены сообщений (каждый буфер может содержать до 8 байтов данных);
- до 32 приёмных буферов (каждый буфер может содержать до 8 байтов данных);
- до 16 полных (стандартный/расширенный идентификатор) приёмных фильтров;
- три полных приёмных маски;
- поддержка адресации DeviceNet;
- программируемая функциональная возможность пробуждения со встроенным фильтром нижних частот;
- задаваемый программно режим петли для осуществления самоконтроля;
- сигнализация обо всех ошибках приёма и передачи CAN с помощью прерываний;
- программируемый источник тактовой частоты;
- программируемая связь с входом модуля захвата (IC2 для обоих модулей CAN1 и CAN2) для метки времени и сетевой синхронизации;
- режимы низкого энергопотребления Sleep и Idle.

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

Блок-схема модуля ECAN. Нажмите для увеличения
Примечание: i = 1 или 2 и обозначает конкретный модуль ECAN1 или ECAN2

Рис. 18-1. Блок-схема модуля ECAN

1 CAN - Controller Area Network - локальная сеть контроллеров - прим. пер.
2 Спецификация CAN не рассматривается в данном техническом описании. За более подробной информацией читатель может обратиться к спецификации CAN от BOSCH.

18.2 Типы кадров

Модуль CAN передаёт различные типы кадров, которые включают сообщения с данными, удалённые запросы передачи, а также другие кадры, автоматически генерируемые для служебных целей. Поддерживаются следующие типы кадров:

1) Стандартный кадр данных - генерируется узлом, когда узел желает передать данные. Он содержит 11-битный стандартный идентификатор (SID).

2) Расширенный кадр данных - подобен стандартному кадру данных, содержит 11-битный стандартный идентификатор (SID), а также 18-битный расширенный идентификатор (EID).

3) Кадр удалённого запроса передачи. Узел-получатель может запросить данные у узла-источника. Для этих целей узел-получатель посылает кадр удалённого запроса передачи с идентификатором, который соответствует идентификатору кадра запрашиваемых данных. После этого соответствующий узел-источник в ответ на этот удалённый запрос вышлет кадр данных.

4) Кадр ошибки - генерируется любым узлом, который обнаруживает ошибку на шине. Кадр ошибки состоит из двух полей: поле флага ошибки и поле разделителя ошибки.

5) Кадр перегрузки - может генерироваться узлом в результате двух условий. Первое - узел обнаружил доминантный бит во время межкадрового интервала, что является недопустимым условием. Второе - из-за внутренних условий узел всё ещё не способен начать приём очередного сообщения. Узел может сгенерировать максимум 2 последовательных кадра перегрузки, чтобы задержать начало следующего сообщения.

6) Межкадровый интервал - отделяет текущий кадр (любого типа) от следующего кадра данных или кадра удалённого запроса.

18.3 Режимы работы

Модуль CAN может работать в одном из нескольких режимов, выбираемых пользователем:
1) Режим настройки;
2) Выключенный режим (модуль выключен);
3) Нормальный режим работы;
4) Режим прослушивания;
5) Режим прослушивания всех сообщений;
6) Режим петли.

Режим запрашивается установкой битов REQOP<2:0> (CiCTRL1<10:8>). Вход в указанный режим подтверждается наблюдением за битами OPMODE<2:0>(CiCTRL1<7:5>). Состояние модуля и, соответственно, битов OPMODE не изменится до тех пор, пока изменение режима неприемлемо. Как правило, переход в другой режим осуществляется во время простоя шины, который определяется наличием на шине последовательности минимум из 11 рецессивных битов.

18.3.1 Режим настройки

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

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

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

18.3.2 Выключенный режим

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

Если биты REQOP<2:0>(CiCTRL1<10:8>) = 001, модуль перейдёт в выключенный режим. Если модуль активен, то сначала он будет ждать 11 рецессивных битов на шине CAN (условие простоя шины), а затем примет команду отключения модуля. Если биты OPMODE<2:0>(CiCTRL1<7:5>) = 001, это указывает, что модуль успешно перешёл в отключенный режим. Когда модуль находится в выключенном состоянии, выводы ввода/вывода возвращаются к функционированию в обычном режиме порта ввода/вывода.

Модуль можно запрограммировать на применение функции низкочастотного фильтра на входной линии CiRX, когда модуль или ЦПУ находятся в режиме Sleep. Бит WAKFIL (CiCFG2<14>) включает или отключает фильтр.

Примечание: как правило, если модулю CAN в установленном режиме работы разрешено передавать сообщения, и передача запрашивается сразу же после перехода модуля в этот режим, то перед началом передачи модуль будет ожидать появления 11 последовательных рецессивных битов на шине. Если пользователь переключит модуль в выключенный режим в течение этого 11-битного периода, тогда эта передача отменяется, соответствующий бит TXABT устанавливается, а бит TXREQ сбрасывается.

18.3.3 Нормальный режим работы

Нормальный режим работы выбран, если REQOP<2:0> = 000. В этом режиме модуль активен, а выводы ввода/вывода принимают на себя функции шины CAN. Модуль будет передавать и принимать сообщения CAN через выводы CiTX и CiRX.

18.3.4 Режим прослушивания

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

18.3.5 Режим прослушивания всех сообщений

Модуль можно настроить на игнорирование всех ошибок и приём любых сообщений. Этот режим активируется установкой битов REQOP<2:0> = "111". В этом режиме данные, находившиеся в буфере сборки сообщения до возникновения ошибки, копируются в приёмный буфер и могут быть считаны через интерфейс ЦПУ.

18.3.6 Режим петли

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

18.4 Приём сообщений

18.4.1 Приёмные буферы

Модуль CAN имеет 32 приёмных буфера, размещённых в DMA RAM. Первые 8 буферов необходимо настраивать как приёмные сбросом соответствующих битов выбора TX/RX буфера (TXENn) в регистре XiTRmnCON. Полный (суммарный) размер области буферов CAN в DMA RAM выбирается пользователем и определяется битами DMABS<2:0>(CiFCTRL<15:13>). Первые 16 буферов могут назначаться в качестве приёмных буферов, остальные же можно использовать только в качестве FIFO-буфера.

Также имеется дополнительный буфер, предназначенный исключительно для наблюдения за входящими сообщениями шины. Этот буфер называется буфером сборки сообщения (Message Assembly Buffer - MAB).

Все сообщения, собираемые в MAB, передаются в буферы только в том случае, если они соответствуют критерию приёмного фильтра. Когда сообщение принято, устанавливается флаг RBIF (CiINTF<1>). После этого пользователь должен проверить регистр CiVEC и/или CiRXFUL1, чтобы определить, какие именно фильтр и буфер вызвали прерывание. Бит RBIF может устанавливаться только модулем при приёме сообщения. Бит сбрасывается пользовательской программой, после того как она завершила обработку сообщения в буфере. Если установлен бит RBIE, то при получении сообщения будет генерироваться прерывание.

18.4.2 Режим FIFO-буфера

Модуль ECAN работает в режиме FIFO-буфера, если указатель буфера для фильтра имеет значение "1111". В этом режиме в результате попадания сообщения в буфер будет записываться следующая доступная буферная ячейка внутри FIFO.

Размер FIFO задаётся в регистре CiFCTRL. Биты FSA<4:0> в этом регистре определяют начало FIFO-буфера. Конец FIFO-буфера определяется битами DMABS<2:0>, если включен DMA. Таким образом, FIFO может иметь размер до 32 буферных ячеек.

18.4.3 Приёмные фильтры сообщений

Приёмные фильтры сообщений и маски используются для определения, нужно ли сообщение из буфера сборки загружать в один из приёмных буферов. Как только в MAB принято допустимое сообщение, поля идентификатора сообщения сравниваются со значениями фильтра. Если имеется соответствие критерию фильтра, сообщение будет загружено в соответствующий приёмный буфер. Каждый фильтр ассоциируется с буферным указателем (FnBP<3:0>), который используется для связи фильтра с одним из 16 приёмных буферов.

Приёмный фильтр проверяет бит IDE (CiTRBnSID<0>) входящего сообщения, чтобы определить, как сравнивать идентификаторы. Если бит IDE сброшен, сообщение представляет собой стандартный кадр и сравнивается только с фильтрами, у которых сброшен бит EXIDE (CiRXFnSID). Если бит IDE установлен, сообщение является расширенным кадром и сравнивается только с теми фильтрами, где бит EXIDE установлен.

18.4.4 Маски фильтров принимаемых сообщений

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

Имеется три программируемых приёмных маски, связанных с приёмными буферами. Любая из этих масок может быть привязана к любому фильтру выбором желаемой маски с помощью битов FnMSK<1:0> в соответствующем регистре CiFMSKSELn.

18.4.5 Ошибки приёма

Модуль CAN обнаруживает следующие ошибки приёма:
1) ошибка CRC;
2) ошибка битового наполнения;
3) приём неправильного сообщения.

Эти ошибки приёма не генерируют прерываний. Тем не менее, в случае возникновения одной из этих ошибок, счётчик ошибок приёма увеличивается на единицу. Если счётчик ошибок приёма достигает предела предупреждения ЦПУ, равного 96, бит RXWAR (CiINTF<9>) устанавливается и генерируется прерывание.

18.4.6 Прерывания по приёму

Прерывания по приёму можно разделить на 3 основные группы, каждая из которых включает различные условия, генерирующие прерывание:

1) Прерывания по приёму - если сообщение было успешно принято и загружено в один из приёмных буферов. Это прерывание активируется сразу же после приёма поля конца кадра (End-of-Frame - EOF). В этом случае установится флаг прерывания RBIF (CiINTF<1>), а чтение битов ICODE<6:0> (CiVEC<6:0>)1 укажет, который из приёмных буферов вызвал прерывание.

2) Прерывание по пробуждению - модуль CAN может быть пробуждён из выключенного режима, либо устройство может быть пробуждено из режима Sleep.

3) Прерывание по ошибкам приёма - будет указано битом ERRIF. Этот бит показывает, что возникло условие ошибки. Источник ошибки можно определить проверкой битов в регистре флагов прерываний CAN CiINTF:

- приём неправильного сообщения. Ошибка любого типа, возникшая во время приёма последнего сообщения, будет индицироваться битом IVRIF.

- переполнение приёмного буфера. Бит RBOVIF (CiINTF<2>) указывает, что произошло переполнение приёмного буфера.

- предупреждение приёмника. Бит RXWAR указывает, что счётчик ошибок приёма (RERRCNT<7:0>) достиг предела предупреждения, равного 96.

- пассивная ошибка приёма. Бит RXEP указывает, что счётчик ошибок приёма превысил пассивный лимит в 127, и модуль перешёл в состояние пассивной ошибки.

1 В оригинале было написано: "Reading the RXnIF flag..." ("Чтение флага RXnIF..."), но в регистрах модуля ECAN PIC24H нет таких флагов! Есть единственный флаг RBIF (CiINTF<1>), указывающий, что произошло прерывание от приёмного буфера, а определить, от какого именно, можно с помощью битов ICODE<6:0> (CiVEC<6:0>), либо регистров CiRXFUL1 и CiRXFUL2. Кстати, об этом упоминается выше - в разделе "18.4.1 Приёмные буферы". - прим. пер.

18.5 Передача сообщения

18.5.1 Передающие буферы

Модуль CAN имеет до восьми передающих буферов, размещённых в DMA RAM. Эти 8 буферов нужно настраивать как передающие установкой соответствующих битов выбора буфера TX/RX (TXENn или TXENm) в регистре CiTRmnCON. Полный размер области буферов CAN в DMA RAM выбирается пользователем и задаётся битами DMABS<2:0> (CiFCTRL<15:13>).

Каждый передающий буфер занимает 14 байтов данных. Восемь из этих байтов отведены для поля данных сообщения (его максимальная длина составляет 8 байтов). Пять байтов содержат стандартный и расширенный идентификаторы и другую арбитражную информацию сообщения. Последний байт не используется.

18.5.2 Приоритет передаваемого сообщения

Приоритет передачи - это система приоритетов для ожидающих передачи сообщений внутри каждого узла. Имеется четыре уровня приоритетов передачи. Если биты TXnPRI<1:0> (в регистре CiTRmnCON) для конкретного буфера сообщения установлены в "11", этот буфер имеет наивысший приоритет. Если биты TXnPRI<1:0> для конкретного буфера сообщения установлены в "10" или "01", этот буфер имеет промежуточный приоритет. Если же биты TXnPRI<1:0> установлены в "00", этот буфер имеет низший приоритет. Если два или более ожидающих сообщения имеют одинаковый приоритет, сообщения передаются в порядке убывания индекса буфера1.

1 Т.е. чем большее значение имеет индекс буфера, тем выше его приоритет. - прим. пер.

18.5.3 Последовательность передачи

Чтобы инициировать передачу сообщения, нужно установить бит TXREQn (в регистре CiTRmnCON). Модуль CAN решает любой конфликт синхронизации между установкой бита TXREQn и началом кадра (Start-of-Frame - SOF), гарантируя корректное разрешение ситуации, если до возникновения SOF происходит изменение приоритета. Когда TXREQn устанавливается, биты флагов TXABTn, TXLARBn и TXERRn автоматически сбрасываются.

Установка бита TXREQn просто помечает буфер сообщения, указывая, что тот установлен в очередь на передачу. Когда модуль обнаруживает, что шина доступна, он начинает передачу сообщения с наивысшим приоритетом.

Если передача завершается успешно с первой попытки, бит TXREQn автоматически сбрасывается и, если установлен бит TBIE (CiINTE<0>)1, генерируется прерывание.

Если передача сообщения терпит неудачу, установится один из флагов ошибок, а бит TXREQn останется установленным, указывая, что сообщение по-прежнему ожидает передачи.

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

1 В оригинале указан "TXnIE" - это неверно, т.к. прерывания по передаче разрешаются единственным битом TBIE (CiINTE<0>). - прим. пер.

18.5.4 Автоматическая обработка удалённого запроса передачи

Если бит RTRENn (в регистре CiTRmnCON) для данного передающего буфера установлен, аппаратная часть модуля автоматически передаст данные из этого буфера в ответ на удалённый запрос передачи, соответствующий фильтру, указывающему именно на этот буфер. В этом случае пользователю не нужно вручную инициировать передачу.

18.5.5 Отмена передачи сообщения

Система может отменить сообщение сбросом соответствующего бита TXREQ, имеющегося у каждого буфера сообщений. Установка бита ABAT (CiCTRL1<12>) запросит отмену всех ожидающих сообщений. Если передача сообщения ещё не начата, либо если передача начата, но прервана потерей арбитража или ошибкой, сообщение будет отменено. Модуль сообщает о произведённой отмене установкой бита TXABT, флаг TBIF (CiINTF<0>)1 при этом установлен не будет.

1 В оригинале указан флаг "TXnIF". См. текст предыдущей сноски. - прим. пер.

18.5.6 Ошибки передачи

Модуль CAN обнаруживает следующие ошибки передачи:
1) ошибка подтверждения;
2) ошибка формата кадра;
3) битовая ошибка.

Эти ошибки не обязательно генерируют прерывание, но индицируются счётчиком ошибок передачи: каждая из этих ошибок заставляет его увеличиваться на единицу. Как только значение счётчика ошибок превысит 96, сгенерируется прерывание, и установятся биты ERRIF (CiINTF<5>) и TXWAR (CiINTF<10>).

18.5.7 Прерывания по передаче

Прерывания по передаче можно разделить на две основные группы, каждая из которых включает различные условия, генерирующие прерывание:

1) Прерывание по передаче - если хотя бы один из восьми передающих буферов успешно передал сообщение и теперь пуст и может быть загружен новым сообщением и установлен в очередь на передачу. В этом случае установится флаг прерывания TBIF (CiINTF<0>), а чтение битов ICODE<6:0> (CiVEC<6:0>)1 укажет, который из передающих буферов доступен и вызвал прерывание.

2) Прерывание по ошибке передачи - будет указано флагом ERRIF. Этот флаг показывает, что возникло условие ошибки. Источник ошибки можно определить проверкой флагов ошибок в регистре флагов прерываний CAN CiINTF. Флаги в этом регистре относятся к ошибкам приёма и передачи. К передатчику относятся следующие флаги ошибок:

- прерывание по предупреждению передачи. Бит TXWAR указывает, что счётчик ошибок передачи достиг предела предупреждения ЦПУ, равного 96.

- переход передатчика в состояние пассивной ошибки. Бит TXEP (CiINTF<12>) указывает, что счётчик ошибок передачи превысил предел пассивной ошибки, равный 127, и модуль перешёл в состояние пассивной ошибки.

- отключение от шины. Бит TXBO (CiINTF) указывает, что счётчик ошибок передачи превысил значение 255, и модуль перешёл в состояние "отключен от шины".

Примечание: оба модуля, ECAN1 и ECAN2, могут переключать передачи DMA. Если в качестве источника DMA IRQ выбран C1TX, C1RX, C2TX или C2RX, передачи DMA происходят, когда бит C1TXIF, C1RXIF, C2TXIF или C2RXIF устанавливается как результат приёма или передачи ECAN1, или ECAN2.

1 В оригинале было написано: "Reading the TXnIF flags..." ("Чтение флагов TXnIF..."). Здесь ошибка аналогична той, что допущена в описании прерывания по передаче (см. текст соответствующей сноски). В модуле ECAN PIC24 имеется единственный флаг TBIF (CiINTF<0>), указывающий, что произошло прерывание от передающего буфера. А чтобы определить, от какого именно, нужно проанализировать биты ICODE<6:0> (CiVEC<6:0>). - прим. пер.

18.6 Настройка скорости передачи

Все узлы на любой отдельно взятой шине CAN должны иметь одинаковую номинальную скорость передачи битов. Для того чтобы настроить скорость передачи, необходимо проинициализировать следующие параметры:
1) ширина перехода синхронизации;
2) предделитель скорости передачи;
3) фазовые сегменты;
4) определение длины фазового сегмента 2;
5) точка выборки;
6) биты сегмента распространения.

18.6.1 Битовая синхронизация

Все контроллеры на шине CAN должны иметь одинаковую скорость передачи данных и длину битового интервала (время передачи одного бита). Однако различные контроллеры не обязательно должны иметь одинаковую тактовую частоту основного генератора. При различных тактовых частотах каждого отдельного контроллера, скорость передачи должна подстраиваться с помощью подстройки числа квантов времени в каждом сегменте.

Номинальное время передачи бита можно представить разделённым на отдельные не перекрывающиеся сегменты времени. Эти сегменты показаны на Рис.18-2:
1) Сегмент синхронизации (Sync Seg);
2) Сегмент времени распространения (Prop Seg);
3) Фазовый сегмент 1 (Phase1 Seg);
4) Фазовый сегмент 2 (Phase2 Seg).

Битовая синхронизация модуля ECAN

Рис. 18-2. Битовая синхронизация модуля ECAN

Временные сегменты, а также номинальное время передачи бита состоят из целых единиц времени, называемых квантами времени (TQ - time quantum). По определению, номинальное время передачи бита состоит из минимум 8TQ и максимум 25TQ. Также, по определению, минимальное номинальное время передачи бита составляет 1 мкс, что соответствует максимальной скорости передачи 1 МГц (1 Мбит/с).

18.6.2 Настройка предделителя

В дополнение к фиксированному "делению на два" для генерации тактовых импульсов, также имеется ещё и программируемый предделитель с диапазоном целочисленных значений от 1 до 64. Квант времени (TQ) - это фиксированная единица времени, получаемая от периода генератора и задаваемая Формулой 18-1.

Примечание: FCAN не должна превышать 40 МГц. Если CANCKS = 0, тогда FCY не должна превышать 20 МГц.

Формула 18-1. Расчёт кванта времени в зависимости от FCAN.

TQ = 2 (BRP<5:0> + 1) / FCAN

18.6.7 Сегмент распространения

Эта часть битового интервала используется для компенсации времён физических задержек внутри сети. Эти задержки состоят из времени задержки сигнала на линии шины и времени внутренней задержки в узлах. Длину Prop Seg можно запрограммировать от 1 TQ до 8 TQ установкой битов PRSEG<2:0> (CiCFG2<2:0>).

Категория: Мои статьи | Добавил: MAS (25.11.2012)
Просмотров: 961 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Мои статьи [51]
Справочные данные [165]
Справочные данные
Наш опрос
Оцените мой сайт
Всего ответов: 30
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Баннер
$$
Друзья сайта
  • Спортсменам
  • Огородникам СЮД(А
  • Строим вместе
  • Мир развлечений
  • Кто хочет похудеть
  • Здоровье у нас одно
  • Юмор
  • Кулинарные рецепты
  • Картинки_Заставки_Демотивоторы
  • Семья
  • Кто на мальчишник
  • Металлообработка
  • Кто на девишник
  • Блоки питания
  • Смерть соседям
  • Радиомедведь
  • Кибермедведь
  • Радиосайт
  • Деревообработка
  • Поиск