Expert Zamkovoy Vladimir "Фабрика инновационных технологий"
Микроконтроллеры AVR - Форум
Меню сайта

Форма входа

Поиск

Друзья сайта

Статистика

Приветствую Вас, Гость · RSS 26.11.2024, 18:34

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Диттер  
Микроконтроллеры AVR
ДиттерДата: Суббота, 20.12.2008, 22:24 | Сообщение # 1
ведущий консультант форума
Группа: Администраторы
Сообщений: 591
Статус: Offline
Если о микропроцессоре Вы слышите впервые, то рекомендую начать знакомство с чтения:

http://ntkexpert.at.ua/forum/24-53-1#197

На соседних ветках Вы увидели другие микроконтроллеры PIC , АРМ MSP.
Микроконтроллеров, большое разнообразие.
Конструктору схем сложно изучать особенности программирования такого разнообразия.
Моя идея состоит в разработке универсального языка высокого уровня с наглядным графическим многомерны интерфейсом.
Таким наглядным интерфейсом может быть многомерное отображение алгоритма на экране монитора.
Например, 3D графика. Четвертое измерение время.
Элементы языка - модули - квадраты, ромбы, треугольники, кубики, цилиндры, шары ....
отображают операторы языка, циклы, макрокоманды, подпрограммы ...

Для каждого контроллера изготовитель пишет библиотеки в стандартах графического многомерного языка.
Разработчику допускается самому писать макросы на языках С или Асемблере.
Такой язык удобен для организации параллельной работы многих процессоров.
И главное переносить программу - транслировать Hex можно на любой контроллер, АРМ, DSP ...

Описание языка на специализированной ветке

Рассмотрим АVR.

Процессор
Сердцем микроконтроллеров AVR является 8-битное микропроцессорное ядро или центральное процессорное устройство (ЦПУ), построенное на принципах RISK-архитектуры. Основой этого блока служит арифметико-логическое устройство (АЛУ). По системному тактовому сигналу из памяти программ в соответствии с содержимым счетчика команд (Program Counter - PC) выбирается очередная команда и выполняется АЛУ. Во время выбора команды из памяти программ происходит выполнение предыдущей выбранной команды, что и позволяет достичь быстродействия 1 MIPS на 1 МГц.

АЛУ подключено к регистрам общего назначения РОН (General Purpose Registers - GPR). Регистров общего назначения всего 32, они имеют байтовый формат, то есть каждый из них состоит из восьми бит. РОН находятся в начале адресного пространства оперативной памяти, но физически не являются ее частью. Поэтому к ним можно обращаться двумя способами (как к регистрам и как к памяти). Такое решение является особенностью AVR и повышает эффективность работы и производительность микроконтроллера.
Отличие между регистрами и оперативной памятью состоит в том, что с регистрами можно производить любые операции (арифметические, логические, битовые), а в оперативную память можно лишь записывать данные из регистров.

Память
В микроконтроллерах AVR реализована Гарвардская архитектура, в соответствии с которой разделены не только адресные пространства памяти программ и памяти данных, но и шины доступа к ним. Каждая из областей памяти данных (оперативная память и EEPROM) также расположена в своем адресном пространстве.

Память программ (Flash ROM или Flash ПЗУ)

Память программ предназначена для хранения последовательности команд, управляющих функционированием микроконтроллера, и имеет 16-ти битную организацию. Все AVR имеют Flash-память программ, которая может быть различного размера - от 1 до 256 КБайт. Ее главное достоинство в том, что она построена на принципе электрической перепрограммируемости, т. е. допускает многократное стирание и запись информации. Программа заносится во Flash-память AVR как с помощью обычного программатора, так и с помощью SPI-интерфейса, в том числе непосредственно на собранной плате. Возможностью внутрисхемного программирования (функция ISP) через коммуникационный интерфейс SPI обладают все микроконтроллеры AVR, кроме Tiny11 и Tiny28.
Все микроконтроллеры семейства Mega имеют возможность самопрограммирования, т. е. самостоятельного изменения содержимого своей памяти программ. Эта особенность позволяет создавать на их основе очень гибкие системы, алгоритм работы которых будет меняться самим микроконтроллером в зависимости от каких-либо внутренних условий или внешних событий.
Гарантированное число циклов перезаписи Flash-памяти у микроконтроллеров AVR второго поколения составляет не менее 10 тыс. циклов при типовом значении 100 тыс. циклов. (В официальной технической документации Atmel Corp. указывается значение 10 тыс. циклов.)
Подробнее:
http://www.atmel.com/dyn/products/devices.asp?family_id=607


Чем больше мы знаем, тем дороже стоим на рынке труда
 
ДиттерДата: Суббота, 20.12.2008, 22:26 | Сообщение # 2
ведущий консультант форума
Группа: Администраторы
Сообщений: 591
Статус: Offline
Новые микроконтроллеры AVR XMEGA:

Производительность до 32 MIPS
Низкое энергопотребление (технология picoPower второго поколения)
Инновационная система обработки событий "Event System", обеспечивающая независимую от ЦПУ быстродействующую передачу данных между интегрированными периферийными устройствами
Контроллер прямого доступа в память
Контроллер многоуровневых прерываний, поддерживающий приоритеты прерываний и немаскируемые прерывания
Быстродействующие 12-битные АЦП и ЦАП
Поддержка криптографических алгоритмов AES и DES

Новые микроконтроллеры работают при напряжении питания от 1.6В до 3.6В и достигают производительности 32 MIPS на тактовой частоте 32 МГц. Микроконтроллеры содержат флэш-память объемом от 16 до 384 кбайт и поставляются в 44…100-выводных корпусах (CBGA, TQFP, MLF).
Микроконтроллеры AVR XMEGA являются микроконтроллерами общего назначения и могут применяться в широком диапазоне устройств, таких как аудиосистемы, системы ZigBee®, медицинская техника, промышленное оборудование, системы автоматизации, коммуникационное оборудование, измерительные приборы, оптические трансиверы, системы управления электроприводами, бытовое электрооборудование, системы климат-контроля и приборы с батарейным питанием.

Микроконтроллеры AVR XMEGA поддерживаются основными средствами разработок для AVR-контроллеров - AVRISP2, JTAGICE2, AVR Studio, компилятор IAR Systems. Также компания Atmel предлагает новый стартовый набор STK600, который поддерживает все микроконтроллеры AVR, включая XMEGA и AVR32 UC3.

Производители электроники могут создавать базовые разработки на основе ATxmega128A1, т.к. все контроллеры AVR XMEGA программно совместимы, а в будущем перейти на микроконтроллеры с необходимым объемом памяти и набором периферии.

Первыми в серийное производство будут запущены микроконтроллеры ATxmega128A1 и ATxmega64A1. Начало серийного производства других микроконтроллеров AVR XMEGA планируется в третьем и четвертом кварталах 2008 года. Более подробную информацию по семейству AVR XMEGA смотрите на сайте компании Atmel:

http://www.atmel.com/products/AVR/default_xmega.asp.

Контроллеры AVR

Память данных

Память данных разделена на три части: регистровая память, оперативная память (ОЗУ - оперативное запоминающее устройство или RAM) и энергонезависимая память (ЭСППЗУ или EEPROM).

Регистровая память (РОН и РВВ)

Регистровая память включает 32 регистра общего назначения (РОН или GPR), объединенных в файл, и служебные регистры ввода/вывода (РВВ). И те и другие расположены в адресном пространстве ОЗУ, но не являются его частью.
В области регистров ввода/вывода расположены различные служебные регистры (регистры управления микроконтроллером, регистры состояния и т. п.), а также регистры управления периферийными устройствами, входящими в состав микроконтроллера. По сути, управление микроконтроллером заключается в управлении этими регистрами.

Энергонезависимая память данных (EEPROM)

Для долговременного хранения различной информации, которая может изменяться в процессе функционирования микроконтроллерной системы, используется EEPROM-память. Все AVR имеют блок энергонезависимой электрически перезаписываемой памяти данных EEPROM от 64 Байт до 4 КБайт. Этот тип памяти, доступный программе микроконтроллера непосредственно в ходе ее выполнения, удобен для хранения промежуточных данных, различных констант, коэффициентов, серийных номеров, ключей и т.п. EEPROM может быть загружена извне как через SPI интерфейс, так и с помощью обычного программатора. Число циклов стирание/запись - не менее 100 тыс.


Чем больше мы знаем, тем дороже стоим на рынке труда
 
ДиттерДата: Суббота, 20.12.2008, 22:28 | Сообщение # 3
ведущий консультант форума
Группа: Администраторы
Сообщений: 591
Статус: Offline
Оперативная память (ОЗУ или RAM)
Внутренняя оперативная статическая память Static RAM (SRAM) имеет байтовый формат и используется для оперативного хранения данных.
Размер оперативной памяти может варьироваться у различных чипов от 64 Байт до 4 КБайт. Число циклов чтения и записи в RAM не ограничено, но при отключении питающего напряжения вся информация теряется.
Для некоторых микроконтроллеров возможна организация подключения внешнего статического ОЗУ объемом до 64К.

Периферия
Периферия микроконтроллеров AVR включает: порты (от 3 до 48 линий ввода и вывода), поддержку внешних прерываний, таймеры-счетчики, сторожевой таймер, аналоговые компараторы, 10-разрядный 8-канальный АЦП, интерфейсы UART, JTAG и SPI, устройство сброса по понижению питания, широтно-импульсные модуляторы.

Порты ввода/вывода (I/O)

Порты ввода/вывода AVR имеют число независимых линий "вход/выход" от 3 до 53. Каждая линия порта может быть запрограммирована на вход или на выход. Мощные выходные драйверы обеспечивают токовую нагрузочную способность 20 мА на линию порта (втекающий ток) при максимальном значении 40 мА, что позволяет, например, непосредственно подключать к микроконтроллеру светодиоды и биполярные транзисторы. Общая токовая нагрузка на все линии одного порта не должна превышать 80 мА (все значения приведены для напряжения питания 5 В).

Архитектурная особенность построения портов ввода/вывода у AVR заключается в том, что для каждого физического вывода (пина) существует 3 бита контроля/управления, а не 2, как у распространенных 8-разрядных микроконтроллеров (Intel, Microchip, Motorola и т.д.). Это позволяет избежать необходимости иметь копию содержимого порта в памяти для безопасности и повышает скорость работы микроконтроллера при работе с внешними устройствами, особенно в условиях внешних электрических помех


Чем больше мы знаем, тем дороже стоим на рынке труда
 
ДиттерДата: Суббота, 20.12.2008, 22:30 | Сообщение # 4
ведущий консультант форума
Группа: Администраторы
Сообщений: 591
Статус: Offline
Прерывания (INTERRUPTS)

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

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

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

Таймеры/счетчики (TIMER/COUNTERS)

Микроконтроллеры AVR имеют в своем составе от 1 до 4 таймеров/счетчиков с разрядностью 8 или 16 бит, которые могут работать и как таймеры от внутреннего источника тактовой частоты, и как счетчики внешних событий.

Их можно использовать для точного формирования временных интервалов, подсчета импульсов на выводах микроконтроллера, формирования последовательности импульсов, тактирования приемопередатчика последовательного канала связи. В режиме ШИМ (PWM) таймер/счетчик может представлять собой широтно-импульсный модулятор и используется для генерирования сигнала с программируемыми частотой и скважностью. Таймеры/счетчики способны вырабатывать запросы прерываний, переключая процессор на их обслуживание по событиям и освобождая его от необходимости периодического опроса состояния таймеров. Поскольку основное применение микроконтроллеры находят в системах реального времени, таймеры/счетчики являются одним из наиболее важных элементов.

Сторожевой таймер (WDT)

Сторожевой таймер (WatchDog Timer) предназначен для предотвращения катастрофических последствий от случайных сбоев программы. Он имеет свой собственный RC-генератор, работающий на частоте 1 МГц. Как и для основного внутреннего RC-генератора, значение 1 МГц является приближенным и зависит прежде всего от величины напряжения питания микроконтроллера и от температуры.

Идея использования стоpожевого таймеpа предельно проста и состоит в pегуляpном его сбpасывании под упpавлением пpогpаммы или внешнего воздействия до того, как закончится его выдеpжка вpемени и не пpоизойдет сбpос пpоцессоpа. Если пpогpамма pаботает ноpмально, то команда сбpоса стоpожевого таймеpа должна pегуляpно выполняться, пpедохpаняя поцессоp от сбpоса. Если же микpопpоцессоp случайно вышел за пpеделы пpогpаммы (напpимеp, от сильной помехи по цепи питания) либо зациклился на каком-либо участке пpогpаммы, команда сбpоса стоpожевого таймеpа скоpее всего не будет выполнена в течение достаточного вpемени и пpоизойдет полный сбpос пpоцессоpа, инициализиpующий все pегистpы и пpиводящий систему в pабочее состояние.


Чем больше мы знаем, тем дороже стоим на рынке труда
 
ДиттерДата: Суббота, 20.12.2008, 22:32 | Сообщение # 5
ведущий консультант форума
Группа: Администраторы
Сообщений: 591
Статус: Offline
Аналоговый компаратор (AC)

Аналоговый компаратор (Analog Comparator) сравнивает напряжения на двух выводах (пинах) микроконтроллера. Результатом сравнения будет логическое значение, которое может быть прочитано из программы.
Выход аналогового компаратора можно включить на прерывание от аналогового компаратора. Пользователь может установить срабатывание прерывания по нарастающему или спадающему фронту или по переключению.
Присутствует у всех современных AVR, кроме Mega8515

Аналого-цифровой преобразователь (A/D CONVERTER)

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

Универсальный последовательный приемопередатчик (UART или USART)

Универсальный асинхронный или универсальный синхронно/асинхронный приемопередатчик (Universal Synchronous/Asynchronous Receiver and Transmitter - UART или USART) - удобный и простой последовательный интерфейс для организации информационного канала обмена микроконтроллера с внешним миром. Способен работать в дуплексном режиме (одновременная передача и прием данных). Он поддерживает протокол стандарта RS-232, что обеспечивает возможность организации связи с персональным компьютером. (Для стыковки МК и компьютера обязательно понадобится схема сопряжения уровней сигналов. Для этого существуют специальные микросхемы, например MAX232.)

Последовательный периферийный интерфейс SPI

Последовательный периферийный трехпроводный интерфейс SPI (Serial Peripheral Interface) предназначен для организации обмена данными между двумя устройствами. С его помощью может осуществляться обмен данными между микроконтроллером и различными устройствами, такими, как цифровые потенциометры, ЦАП/АЦП, FLASH-ПЗУ и др. С помощью этого интерфейса удобно производить обмен данными между несколькими микроконтроллерами AVR.
Кроме того, через интерфейс SPI может осуществляться программирование микроконтроллера.
Последовательный периферийный интерфейс - SPI
Интерфейс SPI позволяет организовать последовательную синхронную высокоскоростную передачу данных между ATmega128 и другим периферийным устройством или между несколькими AVR-микроконтроллерами.

Отличительные особенности интерфейса SPI в ATmega128:

Полнодуплексная, трехпроводная синхронная передача данных
Ведущая или подчиненная работа
Передача первым младшего или старшего бита
Семь программируемых скоростей связи
Флаг прерывания для индикации окончания передачи данных
Защитный флаг при повторной записи
Пробуждение из режима холостого хода (Idle)
Режим ведущего (мастера) SPI с удвоением скорости (CK/2)

Двухпроводной последовательный интерфейс TWI

Двухпроводной последовательный интерфейс TWI (Two-wire Serial Interface) является полным аналогом базовой версии интерфейса I2C (двухпроводная двунаправленная шина) фирмы Philips. Этот интерфейс позволяет объединить вместе до 128 различных устройств с помощью двунаправленной шины, состоящей из линии тактового сигнала (SCL) и линии данных (SDA).

Интерфейс JTAG

Интерфейс JTAG был разработан группой ведущих специалистов по проблемам тестирования электронных компонентов (Joint Test Action Group) и был зарегистрирован в качестве промышленного стандарта IEEE Std 1149.1-1990. Четырехпроводной интерфейс JTAG используется для тестирования печатных плат, внутрисхемной отладки, программирования микроконтроллеров.
Многие микроконтроллеры семейства Mega имеют совместимый с IEEE Std 1149.1 интерфейс JTAG или debugWIRE для встроенной отладки. Кроме того, все микроконтроллеры Mega с флэш-памятью емкостью 16 кбайт и более могут программироваться через интерфейс JTAG.


Чем больше мы знаем, тем дороже стоим на рынке труда
 
ДиттерДата: Суббота, 20.12.2008, 22:34 | Сообщение # 6
ведущий консультант форума
Группа: Администраторы
Сообщений: 591
Статус: Offline
Тактовый генератор

Тактовый генератор вырабатывает импульсы для синхронизации работы всех узлов микроконтроллера. Внутренний тактовый генератор AVR может запускаться от нескольких источников опорной частоты (внешний генератор, внешний кварцевый резонатор, внутренняя или внешняя RC-цепочка). Минимальная допустимая частота ничем не ограничена (вплоть до пошагового режима). Максимальная рабочая частота определяется конкретным типом микроконтроллера и указывается Atmel в его характеристиках, хотя практически любой AVR-микроконтроллер с заявленной рабочей частотой, например, в 10 МГц при комнатной температуре легко может быть "разогнан" до 12 МГц и выше.

Система реального времени (RTC)

RTC реализована во всех микроконтроллерах Mega и в двух кристаллах "classic" - AT90(L)S8535. Таймер/счетчик RTC имеет отдельный предделитель, который может быть программным способом подключен или к источнику основной тактовой частоты, или к дополнительному асинхронному источнику опорной частоты (кварцевый резонатор или внешний синхросигнал). Для этой цели зарезервированы два вывода микросхемы. Внутренний осциллятор оптимизирован для работы с внешним "часовым" кварцевым резонатором 32,768 кГц.

Питание

AVR функционируют при напряжениях питания от 1,8 до 6,0 Вольт. Ток потребления в активном режиме зависит от величины напряжения питания и частоты, на которой работает микроконтроллер, и составляет менее 1 мА для 500 кГц,5 ... 6 мА для 5 МГц и 8 ... 9 мА для частоты 12 МГц.
AVR могут быть переведены программным путем в один из трех режимов пониженного энергопотребления.
Режим холостого хода (IDLE). Прекращает работу только процессор и фиксируется содержимое памяти данных, а внутренний генератор синхросигналов, таймеры, система прерываний и сторожевой таймер продолжают функционировать. Ток потребления не превышает 2,5 мА на частоте 12 МГц.
Стоповый режим (POWER DOWN). Сохраняется содержимое регистрового файла, но останавливается внутренний генератор синхросигналов, и, следовательно, останавливаются все функции, пока не поступит сигнал внешнего прерывания или аппаратного сброса. При включенном сторожевом таймере ток потребления в этом режиме составляет около 80 мкА, а при выключенном - менее 1 мкА. (Все приведенные значения справедливы для напряжения питания 5 В).
Экономичный режим (POWER SAVE). Продолжает работать только генератор таймера, что обеспечивает сохранность временной базы. Все остальные функции отключены.

Сброс при снижении напряжения питания (BOD)

Схема BOD (Brown-Out Detection) отслеживает напряжение источника питания. Если схема включена, то при снижении питания ниже некоторого значения она переводит микроконтроллер в состояние сброса. Когда напряжение питания вновь увеличится до порогового значения, запускается таймер задержки сброса. После формирования задержки внутренний сигнал сброса снимается и происходит запуск микроконтроллера.


Чем больше мы знаем, тем дороже стоим на рынке труда
 
ДиттерДата: Воскресенье, 21.12.2008, 17:51 | Сообщение # 7
ведущий консультант форума
Группа: Администраторы
Сообщений: 591
Статус: Offline
В начале ветки мы заговорили о многомерном графическом языке программирования контроллеров.
Первый шаг к такому языку - двухмерный язык графического программирования контроллеров AVR.

Вы можете скачать Демо версию Flowcode для AVR.

http://www.matrixmultimedia.com

Учебник можно скачать:

http://www.sharemania.ru/0261057

Flowcode AVR is one of the world's most advanced graphical programming languages for microcontrollers. Flowcode AVR является одной из самых передовых графических языков программирования для микроконтроллеров.

The great advantage of Flowcode is that it allows those with little experience to create complex electronic and robotic systems. Большим преимуществом Flowcode заключается в том, что он позволяет работать ВСЕМ, даже с небольшим опытом в создании сложных электронных и робототехнических систем.

Flowcode is a powerful language that uses macros to facilitate the control of complex devices like 7-segment displays, motor controllers, and LCD displays. Flowcode является мощным языком, который использует макросы для облегчения контроля сложных устройств, как 7-сегмент дисплеи, моторные контроллеры и ЖК-дисплеи.

The use of macros allows students to control highly complex electronic devices without getting bogged down in understanding the programming involved. Использование макросов позволяет студентам контролировать весьма сложные электронные устройства без погружения в тонкости понимания программирования.

Flowcode is used in education as a means of introducing students to the concepts of programming. Flowcode используется в сфере образования, как средство введения учащихся к концепциям программирования.

Flowcode is used in industry for rapid development and as a means of managing large projects.
Flowcode используется в промышленности для быстрого развития, и как средство управления крупными проектами.

New features in version 3 include 16 bit arithmetic, strings and string manipulation, improved graphical user interface and printing, support for 18 series devices, Pulse Width Modulation, I2C, new ADC component and many more. Новые функции в версии 3, 16 бит арифметика, строки и строки манипуляции, улучшение графического интерфейса пользователя и печать, поддержка 18 серии устройств, импульсной модуляции Ширина, I2C, ADC новых компонентов и многое другое.

Available in English, French, German, Dutch, Spanish, Italian, Greek, Finnish, Mandarin, Danish and Thai. Доступно на английском, французском, немецком, голландском, испанском, итальянском, греческом, финском, китайском, датском и тайский.


Чем больше мы знаем, тем дороже стоим на рынке труда
 
ДиттерДата: Воскресенье, 18.01.2009, 22:07 | Сообщение # 8
ведущий консультант форума
Группа: Администраторы
Сообщений: 591
Статус: Offline
Можно скачать HELP На русском:

http://www.sharemania.ru/0271426

В дальнейшем мы вместе решим простую задачу:
создание аудио РАДИО домофона на 100 абонентов.

Продолжение следует.


Чем больше мы знаем, тем дороже стоим на рынке труда
 
ДиттерДата: Воскресенье, 22.03.2009, 16:18 | Сообщение # 9
ведущий консультант форума
Группа: Администраторы
Сообщений: 591
Статус: Offline
Статьи

AVR-МИКРОКОНТРОЛЛЕРЫ: СЕМЬ ЯРКИХ ЛЕТ СТАНОВЛЕНИЯ. ЧТО ДАЛЬШЕ? ЧАСТЬ 1.

http://www.efo.ru/doc/Atmel/Atmel.pl?743

AVR-МИКРОКОНТРОЛЛЕРЫ: СЕМЬ ЯРКИХ ЛЕТ СТАНОВЛЕНИЯ. ЧТО ДАЛЬШЕ? ЧАСТЬ 2.

http://www.efo.ru/doc/Atmel/Atmel.pl?498

AVR-МИКРОКОНТРОЛЛЕРЫ: СЕМЬ ЯРКИХ ЛЕТ СТАНОВЛЕНИЯ. ЧТО ДАЛЬШЕ? ЧАСТЬ 3.

http://www.efo.ru/doc/Atmel/Atmel.pl?2020
http://www.avrfreaks.net/


Чем больше мы знаем, тем дороже стоим на рынке труда
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024
Используются технологии uCoz