Особенности выбора МК для проектов

10.09.2015 11:00

Микроконтроллеры AVR семейств Mega и Tiny, как мы в этом и убедимся в дальнейшем, сильно отличаются друг от друга по цене и функциональности. Действительно, для самых простых проектов теоретически достаточно даже дешевого Tiny 13. Стоит он всего 120 рублей на момент написания статьи и имеет 8 ножек.  Для более сложных проектов лучше подойдет Tiny 2313 по цене 140 рублей. У нее  намного больше портов ввода - вывода. Всего у нее имеется 20 ножек. Для серьезных проектов лучше применить МК Mega 8 по цене 200 рублей, у которого уже 28 ножек. Цена данных МК является не очень высокой, если учесть то, что их можно перепрошивать очень много раз, применяя все в новых и новых устройствах.

 

 

Давайте разберем, как выглядят все эти три микроконтроллера:

 

- Tiny 13 в корпусе Dip – 8

 

- Tiny 2313 в корпусе Dip – 20

 

 

- Mega 8 в корпусе Dip – 28

 

 

Цифры после обозначения типа корпуса DIP означают количество ножек данного МК. Более подробно про типы корпусов микросхем можно прочитать здесь. Ну а для сборки цифровых устройств, например осциллографов или транзистор-тестеров, которым требуется более высокое быстродействие и объем памяти, можно применить и Mega 32 или другой подобный МК. На первый взгляд может показаться, что нужно взять МК Tiny 13 в корпусе Dip 8, ведь его же намного легче паять. У него всего 8 ножек и стоимость ниже:

 

Но небольшое количество ножек (читайте портов ввода - вывода) имеет и обратную сторону. Мы не сможем подключить к нему, например, больше 6 светодиодов, потому что 2 ножки, питание (VCC) и земля (GND), не являются портами ввода – вывода, и их мы для этих целей использовать не сможем. А если потребуется переключать с помощью кнопки режимы работы МК, например, задавая режимы мигания, то у нас остается всего 5 ножек, которые мы можем использовать как порты ввода - вывода. Второй существенный минус - это то, что у Tiny 13, объем Flash памяти (память, куда мы заливаем прошивку) равен всего 1 Килобайт.  Это очень мало даже по меркам МК. Например, мы написали программу, она поместилась у нас в памяти МК, а впоследствии нам потребуется существенно доработать программу. Программа у нас просто банально не влезет.

 

 

Давайте разберем подробнее, какой объем памяти будет оптимален для наших проектов, а также проведем сравнение памяти персональных компьютеров и микроконтроллеров. Память персональных компьютеров (ПК), имеет существенно больший объем, чем память микроконтроллеров. Размер программы устанавливаемой на ПК, равен подчас нескольким гигабайтам, тогда как память не очень дорогих микроконтроллеров AVR, обычно равна всего лишь 2 - 8 Килобайт. Да – да, вы не ослышались, именно Килобайт. Но возникает вопрос, зачем тогда персональным компьютерам такой гигантский объем памяти, гигабайты, превосходящей подчас в миллион (!) раз объем памяти МК ? Дело в том, что программисты, которые пишут программы для ПК, не стеснены объемом памяти. Им достаточно того, чтобы их программное обеспечение работало с достаточной скоростью на большинстве средних по мощности ПК.

 

При написании программ для МК каждая сотня байт может быть на счету, особенно если использовать недорогие МК типа Tiny 2313, с объемом памяти всего 2 килобайта, и тем более Tiny 13, у которой объем памяти в два раза меньше. Много это, или мало,  1 - 2 килобайта ? Для того, чтобы помигать одним - тремя светодиодами, нам может быть достаточно и нескольких сотен байт или даже меньше, тогда как если собирать сложное устройство, управляющее какими-либо исполнительными механизмами или производящее точные измерения, такого объема памяти может быть недостаточно. В таком случае можно приобрести МК помощнее, например Mega 8, имеющий 8 Килобайт памяти. Если нужен МК под какой-либо серьезный проект, то лучше взять сразу Mega 32. Но не спешите сразу же бежать в магазин и приобретать самый крутой микроконтроллер из имеющихся в продаже). Это ни к чему.

 

Прошивка МК бывает написана  конкретно  под определенную модель микроконтроллера и несовместима с другими моделями. То есть если прошить МК Tiny 2313 прошивкой от Tiny 13 может и прошьется, только результата вам это не даст. Устройство в таком случае работать не будет.

 

Приведу пример, как мы видим при написании текста программы в Code vision AVR (все это мы разберем в следующих статьях), у нас стоит директива #include . По этой надписи можно определить, под какой тип МК написан данный исходник программы:

Как вы видите, в данном случае программа написана под МК Tiny 2313.

 

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

Как вы уже, наверное, могли заметить, практически во всех случаях, когда я упоминаю конкретную модель МК, я говорю про Tiny 2313. Это не случайно, именно на нем будут основаны все наши проекты. Данный МК выбран из-за того, что имеет довольно низкую стоимость и достаточный для нас функционал. Существуют варианты МК Tiny 2313 с индексом V, пишется как Tiny 2313V. Он имеет такой же объем памяти, как и идущий без индекса "V". Тем, кто собрался поэтапно осваивать изучение МК вместе с нами, настоятельно рекомендую приобрести именно его. Почему имеено его? Проще говоря, он может спокойно работать от 3 Вольт и даже меньше. То есть берем простые две пальчиковые батарейки и запускаем схему на МК ;-). Минус его в том, что он работает на более низкой граничной тактовой частоте, чем версия без индекса "V", но в нашем случае, это не имеет существенной разницы.

 

 

 

Подключение светодиода к порту МК через ключ.

 

Помигать светодиодами - это классика жанра. Все с этого начинали и я не исключение). В противном случае, если мы возьмем МК без индекса "V", то нам придется применять источник питания +5 вольт и токограничительные резисторы для ограничения тока через светодиоды. Если светодиоды подключить напрямую к выводам МК, запитанного от +5 вольт, светодиоды будут светить какое - то время. Внешне будет казаться, что все работает нормально, но в скором времени они просто-напросто сгорят из-за того, что через них пойдет повышенный ток. Сразу хочу сказать, для любителей собрать некое подобие гирлянды, навесив на один МК максимальное количество светодиодов (в Tiny в данном случае можно цепануть 18 светодиодов) без использования транзисторных ключей, не предназначены для этого. Никогда не подключайте больше 4 светодиодов к одному МК без применения транзисторных ключей! С применением ключей – пожалуйста. Потребляемый ток при этом не превысит предельно допустимого. Также нельзя подключать несколько светодиодов параллельно к одной ножке! Для МК допустимый ток равен всего 40 мА для одной ножки и 200 мА максимальное общее потребление микроконтроллера. Если вы превысите эти значения,  то высока вероятность того, что вам придется отправиться в магазин за новым МК ;-)

 

На схеме ниже типичное подключение светодиода к порту

 

Также перед тем, как начинать работать с любым МК, нужно сначала скачать Даташит (Datasheet). Datasheet - это страничка в PDF формате с информацией о параметрах и характеристиках на данный микроконтроллер. Ознакомившись с даташитом, мы, например, узнаем распиновку (назначение ножек) микроконтроллера. И исходя из этой информации, мы  подключаем программатор к нужным ножкам МК. Для того, чтобы скачать Даташит на любую модель МК, нам достаточно лишь набрать в поисковике, например в яндексе, слова "Cкачать Datasheet" и  рядом название модели микроконтроллера.  Например: “Скачать Datasheet Tiny 2313”. Яндекс мне выдал вот  такие результаты:

Качаем по любой ссылке.

 

 

На скрине ниже можно увидеть, как выглядит первая страница даташита на МК Tiny 2313

 

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

 

Также прикрепляю даташиты на все три МК, которые описывались в статье. Качаем здесь.

 

Читаем следующую статью:

 

Работа в CodeVisionAVR. Написание первой программы