Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.216.121.55] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
У меня есть плата Banana Pro
У нее есть порты ввода вывода (распиновка), есть документация на плату. Для управления портами ввода- Прикреплённая картинка
вывода есть библиотека wiringPi, я ее использовал, проблем нет. Но я хочу разобраться с управлением напрямую с записью в регистр процессора/, смотрю в документацию, вижу фигу, объясните как это связать и понять.Например меня интересует управление 31, 33, 35, 37 портом. Прикреплённый файлBanana_Pro_Schematic.pdf (1,62 Мбайт, скачиваний: 152) |
Сообщ.
#2
,
|
|
|
Цитата ter_nk_ @ Но я хочу разобраться с управлением напрямую с записью в регистр процессора Посмотрите тут, я мигал светодиодиками (делал тест для распи)на этом.Может , переделаете для банана. |
Сообщ.
#3
,
|
|
|
Спасибо, но не то. Там библиотека есть под raspberry. Но я спрашивал как разобраться, а не как строчку кода написать.
|
Сообщ.
#4
,
|
|
|
Цитата ter_nk_ @ Но я спрашивал как разобраться, а не как строчку кода написать. Тебе нужна документация на используемый процессор (контроллер). Там и найдёшь подробное описание всех портов и регистров для управления ими. |
Сообщ.
#5
,
|
|
|
Эта та что в аттачмент? Не надо писать читай документация и поймешь. Суть вопроса была - читал документацию - не понял.
|
Сообщ.
#6
,
|
|
|
Цитата ter_nk_ @ Эта та что в аттачмент? Нет. Ты читал не ту документацию. Надо "UserGuide" на процессор. Судя по плате это "A20". Но лучше точно узнать его полную маркировку и искать документацию на сайте производителя. Примерно так выглядит документация Перелистывая страницы одну за другой, там можно обнаружить такое (по каждой подсистеме ЦПУ): --- Ещё можно порыцца в заголовочных файлах, для работы с этим процессором... |
Сообщ.
#7
,
|
|
|
Нашел таблицу
1.19.1. Port Description The chip has several ports for multi-functional input/out pins. They are shown below: Port A(PA): 18 input/output port Port B(PB): 24 input/output port Таблица 1.19.2. Port Configuration Table Port A(PA) Multiplex Function Select Меня например интересует PA15 ECRS UART7_RX UART1_DSR GTXCK/ECRS I2S1_LRCK Дальше высчитываю адрес исходя из Module Name Base Address PIO 0x01C20800 Register Name Offset Description Pn_CFG0 n*0x24+0x00 Port n Configure Register 0 (n from 0 to 9) Pn_CFG1 n*0x24+0x04 Port n Configure Register 1 (n from 0 to 9) Pn_CFG2 n*0x24+0x08 Port n Configure Register 2 (n from 0 to 9) Pn_CFG3 n*0x24+0x0C Port n Configure Register 3 (n from 0 to 9) For Т.е. я буду плясать от этого адреса - 0x01C20800 Pn_DAT n*0x24+0x10 Port n Data Register (n from 0 to 9) 1.19.4.2. PA CONFIGURE REGISTER 1 Offset: 0x04 Register Name: PA_CFG1 Default Value: 0x0000_0000 Bit Read/Write Default Description 31 / / / 30:28 R/W 0 PA15_SELECT 000: Input 001: Output 010: ECRS 011: UART7_RX 100: UART1_DSR 101: GTXCK/ECRS 110: I2S1_LRCK 111: Reserved Т.е. я должен для конфигурации OUTPUT чтоб мне управлять портом со смещением 0x01C20800 + 4 и в четырех байтах 28 бит установить в единицу? |
Сообщ.
#8
,
|
|
|
Цитата ter_nk_ @ 0x01C20800 + 4 и в четырех байтах 28 бит установить в единицу? Вероятно, да. Надо пробовать. я именно с таким процессором не работал. Делай по документации и всё получится. --- Обрати внимание, в каком состоянии биты после RESET. И, насколько я знаю, у ARM порцессоров вроде бы имеется возможность устанавливать биты (интерфесных портов) непосредственно, без операций чтения-модификация-запись. Возможно, не у всех. Но могу и ошибаться. |
Сообщ.
#9
,
|
|
|
Это я пока до конфигурации, а запись что-то типа open("/dev/mem", O_RDWR) и write(...
Добавлено Цитата ЫукпШ @ Обрати внимание, в каком состоянии биты после RESET. Биты меня интересующие портов ввода-вывода как и настройки их в нулях вроде. Там библиотечка есть wiringPi я писал, там можно посмотреть состояние, так вот показывает, что ничего. Кстати только при включении что-то происходит на портах. У меня сервоприводы подключены, так вот при включении проехаться успевают. |
Сообщ.
#10
,
|
|
|
Цитата ter_nk_ @ У меня сервоприводы подключены, так вот при включении проехаться успевают. "Что-то не то". Не должно такого быть в принципе, согласись. А если ЦП вообще не запустится (сломалось) - и что тогда будет с механическими приводами ? Надо спаять схему таким образом, чтобы по аппаратному сигналу RESET всё гарантированно останавливалось. Проснувшийся интеллект процессора после сброса должен всё правильно сконфигурировать-подключить-поуправлять. Никакой самостоятельной "механической жизни" быть не должно. |
Сообщ.
#11
,
|
|
|
Цитата ЫукпШ @ "Что-то не то". Не должно такого быть в принципе, согласись. А если ЦП вообще не запустится (сломалось) - и что тогда будет с механическими приводами ? Надо спаять схему таким образом, чтобы по аппаратному сигналу RESET всё гарантированно останавливалось. Проснувшийся интеллект процессора после сброса должен всё правильно сконфигурировать-подключить-поуправлять. Никакой самостоятельной "механической жизни" быть не должно. Ну там что происходит... сервопривод имеет три контакта - питание, управление и земля. Земля и питания сразу включаются, а управляется от управляющим портом, который подает управляющий сигнал условно на 1,5 мл секунды, потом надо давать паузу условно 18,5 мл секунд. Вот с таким приблизительно периодом он и управляется и чуть больше чуть меньше указывают отклонение куда ему двигаться. Вот в процессе подачи питания на пинах какой-то шум во время инициализации. Как вариант что я могу сделать, это подавать питание через обычный полевой транзистор (друзья из Китая прислали) тогда эти шумы ничего не сделают, вопрос надо ли |
Сообщ.
#12
,
|
|
|
Цитата ter_nk_ @ Вот в процессе подачи питания на пинах какой-то шум во время инициализации. Как вариант что я могу сделать, это подавать питание через обычный полевой транзистор (друзья из Китая прислали) тогда эти шумы ничего не сделают, вопрос надо ли Если по другому нельзя, конечно надо. (А я так и делал, кстати) Но для начала необходимо понять, что появляется на управляющем входе привода. Вероятно, лучше всего соединить его допустимым по значению резистором к пассивному уровню напряжения. Поскольку после старта процессора его интерфейсные пины включены "на ввод" имеют высокое входное сопротивление. Как отреагирует внешняя электроника на висящий в воздухе провод - это "вопрос". Может и гореть будет. Вместе с процессором. Из-за возможных внешних наводок. После старта процессора он должен перепрограммировать управляющий пин "на выход" и взять управление приводом на себя. А до этого на управляющий вывод привода должен подаваться пассивный сигнал. |
Сообщ.
#13
,
|
|
|
Цитата ЫукпШ @ Но для начала необходимо понять, что появляется на управляющем входе привода. Как я предполагаю скачки 3.3 В Цитата ЫукпШ @ Вероятно, лучше всего соединить его допустимым по значению резистором к пассивному уровню напряжения. Э... что значит к пассивному уровню напряжения? Цитата ЫукпШ @ Поскольку после старта процессора его интерфейсные пины включены "на ввод" имеют высокое входное сопротивление. Как отреагирует внешняя электроника на висящий в воздухе провод - это "вопрос". Может и гореть будет. Вместе с процессором. Из-за возможных внешних наводок. Не ну если провод как бы висит в воздухе управляющих у сервопривода, ничего не будет с ним. Хоть с наводками хоть без. А читать писать open("/dev/mem", O_RDWR) ? Добавлено Состояние видимо этим определяется... 1.19.4.5. PA DATA REGISTER Offset: 0x10 Register Name: PA_DAT Default Value: 0x0000_0000 Bit Read/Write Default Description 31:18 / / / 17:0 R/W 0 PA_DAT If the port is configured as input, the corresponding bit is the pin state. If the port is configured as output, the pin state is the same as the corresponding bit. The read bit value is the value setup by software. If the port is configured as functional pin, the undefined value will be read. |
Сообщ.
#14
,
|
|
|
Цитата ter_nk_ @ Э... что значит к пассивному уровню напряжения? Наверное, ты и сам мог бы догадаться. Если некое устройство включается логической "1" (3.3V), а выключается логическим "0" (0V), значит пассивный уровень - "0" (0V) Добавлено Цитата ter_nk_ @ Не ну если провод как бы висит в воздухе управляющих у сервопривода, ничего не будет с ним. Хоть с наводками хоть без. Откуда ты знаешь ? И что будет с пином ЦП, если рядом кто-то неудачно выключит электрочайник или лампу дневного света ? (фрезерный станок, электросварку..) |
Сообщ.
#15
,
|
|
|
Цитата ЫукпШ @ Откуда ты знаешь ? Ну когда управляющий пин не подсоединен, в сервоприводе в любом же случае цепь будет разомкнута что ты там не делай. Цитата ЫукпШ @ И что будет с пином ЦП, если рядом кто-то неудачно выключит электрочайник или лампу дневного света ? (фрезерный станок, электросварку..) Жена угрожала, что будет пыль протирать и "мало ли что может случиться с моим железом", а о таком варианте не думал. |