#1 2018-03-07 17:08:46

Леонид
Участник
Зарегистрирован: 2017-10-27
Сообщений: 4

Atmega 328p. PortB-6, PortB-7

Всем добрый день.

Можно ли использовать PortB-6, PortB-7 как I/O, если контроллер сконфигурирован на работу от Internal Oscillator 8MHz?
Если да, то это будут Pin D14 и D15 соответственно?
Для программирования используется Arduini IDE 1.6.8.

Спасибо.

#2 2018-03-07 17:52:40

Леонид
Участник
Зарегистрирован: 2017-10-27
Сообщений: 4

Re: Atmega 328p. PortB-6, PortB-7

Спасибо.
"однако все настройки, и ввод-вывод вам придется делать самостоятельно, или модифицировать библиотеки Ардуино, в которых поддержки ввода-вывода, для этих выводов, нет."
Не подскажете Как?

#3 2018-03-07 18:22:36

Леонид
Участник
Зарегистрирован: 2017-10-27
Сообщений: 4

Re: Atmega 328p. PortB-6, PortB-7

Спасибо. Сейчас попробую и отпишусь.

#4 2018-03-07 19:39:17

Вячеславу
Гость

Re: Atmega 328p. PortB-6, PortB-7

Я нашел в c:\Program Files\Arduino\hardware\tools\avr\include\avr\iom328p.h:
#ifndef _AVR_IOM328P_H_
#define _AVR_IOM328P_H_ 1

/* Registers and associated bit numbers */

#define PINB _SFR_IO8(0x03)
#define PINB0 0
#define PINB1 1
#define PINB2 2
#define PINB3 3
#define PINB4 4
#define PINB5 5
#define PINB6 6
#define PINB7 7

#define DDRB _SFR_IO8(0x04)
#define DDB0 0
#define DDB1 1
#define DDB2 2
#define DDB3 3
#define DDB4 4
#define DDB5 5
#define DDB6 6
#define DDB7 7

#define PORTB _SFR_IO8(0x05)
#define PORTB0 0
#define PORTB1 1
#define PORTB2 2
#define PORTB3 3
#define PORTB4 4
#define PORTB5 5
#define PORTB6 6
#define PORTB7 7

setup()
{
  pinMode(PINB6, OUTPUT); //PortB Pin6 as output
}

void loop()
{
  digitalWrite(PINB6, HIGH);
  delay(50);
  digitalWrite(PINB6, LOW);
}

Не работает.

#5 2018-03-07 20:17:18

qwone
Участник
Зарегистрирован: 2016-07-25
Сообщений: 130

Re: Atmega 328p. PortB-6, PortB-7

Похоже здесь только к опыту Крылова обращаться

МАРТЫШКА И ОЧКИ
Мартышка к старости слаба глазами стала;
А у людей она слыхала,
Что это зло еще не так большой руки:
Лишь стоит завести Очки.
Очков с полдюжины себе она достала;
Вертит Очками так и сяк:
То к темю их прижмет, то их на хвост нанижет,
То их понюхает, то их полижет;
Очки не действуют никак.
«Тьфу пропасть!» говорит она: «и тот дурак,
Кто слушает людских всех врак:
Всё про Очки лишь мне налгали;
А проку на́-волос нет в них».
Мартышка тут с досады и с печали
О камень так хватила их,
Что только брызги засверкали.

ПС:http://myarduino.at.ua/index/biblioteka_cyberlib_arduino/0-11

Редактировался qwone (2018-03-07 20:22:52)

#6 2018-03-08 09:45:51

To qwone от Леонида
Гость

Re: Atmega 328p. PortB-6, PortB-7

В предлагаемой библиотеке разряды 6,7 порта PORTB (мультиплексированные с ХТАL1 и ХТАL2) и не показаны как I/O. Т.е. как I/O ипользуются только 6 разрядов порта:
//***************Output Pins*************
#define MotorA0 DDRD |=B00010000
#define MotorA1 DDRD |=B00100000
#define MotorB0 DDRD |=B01000000
#define MotorB1 DDRD |=B10000000

#define D0_Out DDRD |=B00000001
#define D1_Out DDRD |=B00000010
#define D2_Out DDRD |=B00000100
#define D3_Out DDRD |=B00001000
#define D4_Out DDRD |=B00010000
#define D5_Out DDRD |=B00100000
#define D6_Out DDRD |=B01000000
#define D7_Out DDRD |=B10000000

#define D8_Out DDRB |= B00000001
#define D9_Out DDRB |= B00000010
#define D10_Out DDRB |=B00000100
#define D11_Out DDRB |=B10001000
#define D12_Out DDRB |=B00010000
#define D13_Out DDRB |=B00100000


#define D14_Out DDRC |=B00000001
#define D15_Out DDRC |=B00000010
#define D16_Out DDRC |=B00000100
#define D17_Out DDRC |=B00001000
#define D18_Out DDRC |=B00010000
#define D19_Out DDRC |=B00100000

В моем проекте не хватает 2-х I/O, поэтому я использую внутренний генератор 8МГц для высвобождения PORTB6, PORTB7 и использования их как  I/O.

#7 2018-03-08 13:31:00

To Вячеслав Азаров
Гость

Re: Atmega 328p. PortB-6, PortB-7

Вот так работает:

void setup ()
{
  DDRB = DDRB | B11000000; //PORTB.6 and PORTB.7 are as output now
}

void loop()
{
   PORTB ^= B11000000;  //PORTB.6 and PORTB.7 inverts its state every each second
   delay(1000);
}

Спасибо всем.

#8 2018-03-09 08:27:26

Green
Участник
Зарегистрирован: 2015-11-08
Сообщений: 531

Re: Atmega 328p. PortB-6, PortB-7

Я бы написал пару макросов, типа

#define LED_INIT()  (DDRB |= 1<<6)
#define LED_ON()    (PORTB |= 1<<6)
#define LED_OFF()   (PORTB &= ~(1<<6))

и не лез бы ни в какое IDE.

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела