РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

ФОРУМ НА ЭЛВО

РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ
  • БЛОГИ
  • НОВОЕ
  • СХЕМЫ
  • РАЗНОЕ
  • ТЕОРИЯ
  • ТЕЛЕВИДЕО
  • СВЕТОДИОД
  • МЕДТЕХНИКА
  • БЫТТЕХНИКА
  • ИЗМЕРИТЕЛИ
  • СПРАВОЧНИК
  • ТЕХНОЛОГИИ
  • РЕМОНТ СХЕМ
  • МОБИЛЬНИКИ
  • КОМПЬЮТЕРЫ
  • НАЧИНАЮЩИМ
  • ЗАРЯДКИ И АКБ
  • СИГНАЛИЗАЦИИ
  • АУДИОТЕХНИКА
  • АВТОВЕЛОМОТО
  • БЛОКИ ПИТАНИЯ
  • РАДИОПРИЁМНИКИ
  • МЕТАЛЛОИСКАТЕЛИ
  • МИКРОКОНТРОЛЛЕР
  • РАДИОПЕРЕДАТЧИКИ


    • Страница 1 из 1
    • 1
    Архив - только для чтения
    Порты ввода\вывода на Atmega8 как в ArduinoIDE
    Чт, 05.03.2020, 15:13 | Сообщение # 1        
    gurlogrod
    аватар
      Постов: 1   U 
    Всем привет дорогие радиолюбители!
    Думаю будет полезно для начинающих программистов микроконтроллеров.

    Многите те кто начинали свой путь с Ардуино привыкли к настройке пинов через pinMode(Номер пина, режим работы).
    Когда они чувствуют что пора рости и переходят на голые микроконтрллеры, то скорее всего их выбор падает на Atmega8.
    Конечно настройка портов тут вполне легкая, но думаю надйдуться те кто будут испытывать трудности с этим)
    Я сделал свою библиотеку для более привычного объявления портов ввода\ввыода, по типу того как это реализованно в ArduinoIDE.

    Работа с библиотекой довольно проста:
    pinModex (Номер пина, режим работы) (Гле Х - имя порта (pinModeD(0,1)))

    Номер пина - довольно понятно - это цифра 0-7 (кроме порта С (0-5))
    Режим работы (1 - на ввывод, 0 на вход)
    digitalWritex(Номер пина, значение)
    Значение: если пин до этого был сконфигурирован на выход, то при 1 будет 5в, при 0 0в
    Если пин до этого был сконфигурирован на вход, то при 1 будет подтянут к 5в, при 0 будет висячим.
    digitalReadx(Номер пина): при условии что пин был до этого установлен на вход. Функция вернет значение на пине.
    Если пин был до этого подтянут к 5в, то чтоб получить 1, нужно будет делать инверсию (x = !digitalReadD(1))

    Грубо говоря вся суть работы библиотеки - это подрожание работы в ArduinoIDE.

    P.S. - это моя первая публикация, так что прошу указать на мои ошибки и жду отзывов)

    Добавлено (05.03.2020, 16:13)
    ---------------------------------------------
    https://drive.google.com/open?id=1yv8Eo2yBfTIZc7JDxXIRUeIPtPtWpbeu

    Пт, 06.03.2020, 13:00 | Сообщение # 2        
    nolpofaze
    аватар
      Постов: 442   Друзья 
    gurlogrod, а почему у Вас на порт B и D - 7 ног, если их там 8?
    Код
    int digitalReadD(int number)
    {    int x;
        switch (number)
        {
      case 0: x = 0x01;
      break;
      case 1: x = 0x02;
      break;
      case 2: x = 0x04;
      break;
      case 3: x = 0x08;
      break;
      case 4: x = 0x10;
      break;
      case 5: x = 0x20;
      break;
      case 6: x = 0x40;
      break;
        }
        if((x & PIND) == 0) return 0;
        else return 1;    
    }

    что я получу если использую a=digitalReadD(7) - читаю цифровой вход порта D, нога 7 (есть такая нога PD7)?
    • Страница 1 из 1
    • 1
    Поиск:

    Внимание! Форум переехал на Tehnodium.ru



    © 2010-2022 "Форум Радиосхемы". All Rights Reserved  Почта  PDA