Микроконтроллеры - пример простейшей схемы, образец применения. Фузы (Фьюзы)

Самая первая Ваша схема на микро-контроллере. Простой пример. Что такой фузы? (10+)

Микроконтроллеры - самоучитель - Фузы. Пример простейшей схемы

Оглавление :: ПоискТехника безопасности :: Помощь

Подключаем зеленый светодиод на вывод PC1, красный – на PC0. Должно получиться примерно вот так:

Микроконтроллер. Микро-контроллер. Простейшая схема. Пример. Образец

И теперь напишем для этого программу: Все, что вам здесь нужно понимать, так это то, что компилятор имеет специальные переменные PORTn для записи байтов, через присваивание этой переменно значения. Если нужно записывать бит, то добавляется еще число от 0 до 7 после точки, определяющее номер бита. Например, PORTA.0=1; Есть переменная и для считывания состояние порта – PINn. Логика работы такая же. Только мы уже берем значение PINn для своей переменной. Если у вас порт настроен на ввод, а вы пытаетесь установить на нем состояние 0 или 1, то ровным счетом ничего происходить не будет.

Вашему вниманию подборка материалов:

Практика проектирования электронных схем Искусство разработки устройств. Элементная база. Типовые схемы. Примеры готовых устройств. Подробные описания. Онлайн расчет. Возможность задать вопрос авторам

#include    // используем соответствующую библиотеку для нашего контроллера
#include    // библиотека для функции задержки мс и мкс

// определяем функции установки и сброса бита. Для удобства.
#define sbi(port, bit) (port) |= (1 << (bit)) 
#define cbi(port, bit) (port) &= ~(1 << (bit)) 

void main(void){  //основная программа
// конфигурируем порты. B и D - на прием данных. C - на передачу данных. Осуществляется это через биты  DDRx
  PORTB=0x00;
  DDRB=0x00;
  PORTC=0x00;
  DDRC=0x7F;
  PORTD=0x00;
  DDRD=0x00;
  sbi(PORTC,0);  // зажигаем красный светодиод
  while (1){  // бесконечный цикл
// теперь нам нужно постоянно опрашивать кнопку и при нажатии выключаем красный и зажигаем зеленый светодиод
    if ((~PINB)&1){
      cbi(PORTC,0); sbi(PORTC,1);
//вместо этих двух команд вы можете, например, сделать и так: PORTC=2;
    } else {
      sbi(PORTC,0);cbi(PORTC,1);
    }   
// а здесь: PORTC=1 ; Это значит, что сразу в порт мы пишем 00000001
      delay_ms(100); // для устранения «дребезга» кнопки.
  }
}

Это не единственный возможный вариант алгоритма. Вы будете писать программы так как вам удобнее. Но всегда следует помнить – код по возможности должен быть оптимизирован. У вас устройство автоматики, а это управление реального времени. Иногда вам придется даже учитывать сколько машинных циклов занимает та или иная команда, чтобы вовремя принять или передать необходимый сигнал.

Теперь скомпилированный файл, назовем его demo_button.hex (по умолчанию находится в папке вашего проекта /exe) 'прошиваем в микроконтроллер'. Для этого в ISIS идем в свойства микроконтроллера и выбираем его в качестве Program File. Можно запускать!

Жмем на кнопку – красный светодиод выключается, а зеленый включается! Так быстро и все, что мы хотели! Обратите внимание, что в свойствах микроконтроллера мы используем внутренний генератор RC. Для нашей задачи этого вполне достаточно.

Если у вас что-то не получается – не расстраивайтесь. В следующей части я более подробно расскажу о процессе компиляции и выполнения, отладки программы в среде CodeVisionAVR и ISIS.

Фузы (Фьюзы)

Так вот. Еще одна вещь, на которую вам придется обратить внимание при прошивке МК – это т.н. 'фьюзы' (fuses) или еще в Интернете встречается 'фузы'. Это специально устанавливаемые во время прошивки байты в специальной памяти МК, которые меняют его базовое поведение. Причем устанавливаются они вопреки логике наоборот – 0 это 'установлен', 1 - 'сброшен'. С ними нужно быть очень аккуратными – неверно установленные фьюзы могут привести ваш МК в нерабочее состояние. Потребуется специальная процедура восстановления. Иногда проще, иногда сложнее. Пока они нам не нужны и мы о них поговорим подробнее позже.

Вам всегда следует уделять пристальное внимание тому, в каком состоянии в каждый момент времени находятся регистры МК. Как основные, так и дополнительные, управляющие. Один неверно установленный бит может стоить вам суток пыхтения над кодом. Особенно следует избегать третьего – X состояния порта, когда он не установлен ни на прием, ни на передачу. Теперь вы готовы начать эксперименты, а я постараюсь побыстрее написать продолжение.

Удачи!

(читать дальше...) :: (в начало статьи)

Оглавление :: ПоискТехника безопасности :: Помощь

 

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

Если что-то непонятно, обязательно спросите!
Задать вопрос. Обсуждение статьи.

Еще статьи

Широтно-импульсная модуляция, ШИМ, PWM, управление, регулирование, рег...
Широтно-импульсная модуляция. Описание. Применение....

Питание светодиода. Драйвер. Светодиодный фонарь, фонарик. Своими рука...
Включение светодиодов в светодиодном фонаре....

Плавная регулировка яркости свечения люминесцентных ламп дневного свет...
Схема драйвера для плавной регулировки яркости свечения ламп дневного света. Дра...

Ключевой режим полевого транзистора (FET, MOSFET, МОП). Мощный, силово...
Применение полевого транзистора в качестве ключа....

Магнитный усилитель - проектирование, формулы, расчет онлайн (online)....
Расчет магнитного усилителя. Формулы для проектирования....

Двухполярный, двухполупериодный бестрансформаторный источник питания, ...
Примеры схем двуполярного и двухполупериодного бестрансформаторного источника пи...

Применение тиристоров (динисторов, тринисторов, симисторов). Схемы. Ис...
Тиристоры в электронных схемах. Тонкости и особенности использования. Виды тирис...

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