#1 2017-01-28 23:25:35

IgorT12
Учасник
Зареєстрований: 2017-01-28
Повідомлень: 10

Байт в порт.

Доброго времени суток, любителям и Гуру! ПереГуглил уже не мало, везде говорится что выдать переменную типа byte, в среде Arduino нельзя. Вопрос - или плохо искал, или всё таки нет возможности такой. Пытался решить этот вопрос программно - неполучается sad  sad  sad . Кто - нибудь сталкивался с этим???
   
   Буду благодарен за любой ответ.

Неактивний

#2 2017-01-28 23:30:15

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Байт в порт.

какая то абракадабра
что нельзя, куда нельзя...
всё можно
напишите вашу задачу

Неактивний

#3 2017-01-30 14:12:01

IgorT12
Учасник
Зареєстрований: 2017-01-28
Повідомлень: 10

Re: Байт в порт.

O.K.
Читаю SD Card и каждый считанный байт отдаю в порт. Такой вариант "DDRD = B11111110;" не подходит.

Остання редакція IgorT12 (2017-01-30 14:12:31)

Неактивний

#4 2017-01-30 14:28:36

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Байт в порт.

vvr,  он имеет в виду что на флешку записал данные некоего скипта,   что выставляет 0/1 на неких ногах
и почему то ему нужно  это сделать очень быстро и параллельно,
и пишет он почему то в порт D,
 
IgorT12,  я думаю что у вас ТЗ некоректное,
и вам и мне однозначно   сюда  - http://easyelectronics.ru/author/di-halt

Неактивний

#5 2017-01-30 18:55:10

IgorT12
Учасник
Зареєстрований: 2017-01-28
Повідомлень: 10

Re: Байт в порт.

"... думаю что у вас ТЗ некорректное..." В чём не корректность вопроса ???
"...пишет он почему то в порт D..." - это строка из примера ( Ctrl-C, Ctrl-V быстрее чем тыкать в кнопки).
Если не понятен вопрос, поясняю: вместо "DDRx = B11111110", "DDRx = (Value)?, где Value имя переменной. Примерно вот так мне и хотелось бы увидеть. По моему вопрос не сложный, всего навсего синтаксис языка.

Неактивний

#6 2017-01-30 20:32:20

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Байт в порт.

Да, в Ардуино нельзя. Только в обход.))

Неактивний

#7 2017-01-30 21:09:47

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Байт в порт.

https://www.arduino.cc/en/Reference/PortManipulation

как все странно )

#include <avr/pgmspace.h>
#include <avr/io.h>

Неактивний

#8 2017-01-30 21:10:01

IgorT12
Учасник
Зареєстрований: 2017-01-28
Повідомлень: 10

Re: Байт в порт.

Спасибо. Лаконично и уверенно.

Неактивний

#9 2017-01-30 21:11:21

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Байт в порт.

но не факт что это правильно )
отпишитесь по результату.

Неактивний

#10 2017-01-31 06:04:33

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Байт в порт.

Для Ардуино неправильно. Ибо нет там портов. Только отдельные пины, с номерами.
К примеру, у меня Ардуино от Интел и чо, в какой порт будем выводить? Или chipKit от PIC...
Та даже у Ардуино Микро порты совсем не те что у Нано, не говоря уже о всяких Тини и пр.)).
По красивому, у AVR нужно читать сигнатуру сначала, с тем что бы определить тип МК, а затем же играться с портами. Только кому оно надо.))

Неактивний

#11 2017-01-31 09:01:47

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Байт в порт.

Неверно выразился. Порты в АВР естественно есть, но в Ардуино они скрыты от программиста. Потому как могут быть любыми, самыми разными. В чём собственно и фишка.))

Неактивний

#12 2017-01-31 09:32:42

Kirill
Гість

Re: Байт в порт.

В порт отправить можно, но нужно убедиться, что он полный (по тому как бывает что не полные порты, не хватает ног на корпусе), и на нем ничего не сидело.
По регистрам
DDRx - регистр направления порта, в вашем случае все пины на выход (8-мь единиц в двоичной системе исчисления), следовательно
DDRx = 0xFF;
Для порта D будет так:
DDRD = 0xFF;

а чтобы выводить в порт нужно использовать PORTx = значение;
для порта D будет так:
PORTD = значение;

пример:

uint8_t value = 0; // Переменная типа Byte
void setup()
{
    DDRD = 0xFF;    // все 8 пинов порта D на выход
}

void loop()
{
    PORTD = value++;    // Вывод значения value в порт D
}

#13 2017-01-31 14:43:10

IgorT12
Учасник
Зареєстрований: 2017-01-28
Повідомлень: 10

Re: Байт в порт.

Kirill, спасибо. Вот это value++; я и проморгал.
  P.S. К старости мартышка слаба глазами мозгами стала. wink  wink  wink

Неактивний

#14 2017-02-01 18:22:13

IgorT12
Учасник
Зареєстрований: 2017-01-28
Повідомлень: 10

Re: Байт в порт.

Всем привет. Не люблю не законченных тем. "PORTD = value;" работает, проблема заключалась в глюке софта.
Переустановил софт и всё ОК. Прошу прощения за беспокойство.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму