Например TDA7294

Форум РадиоКот • Просмотр темы - PINx не читает порт на леонардо :(
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб авг 09, 2025 14:58:05

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 67 ]    , 2, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 06:47:09 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
а она там есть на самом деле?

как писал выше горит светик. он таки горит!

Добавлено after 2 minutes 22 seconds:
Чему у вас результат равен PINE & 1<<PE6 ?
Какие значение может принимать digitalWrite(13, х ) ?


равен как писал выше горит светик. он таки горит!
digital write (pin, 0) все что не ноль единица. как и в if все что не ноль true.
так я же говорю что я дижиталврайт вообще убрал
if portE portC=1
дело не в райте

Добавлено after 6 minutes 58 seconds:
Читаем вывод настроенный на ВЫХОД, маскируем полученное значение по И с единицей и полученный результат впихериваем в другой порт.

это обычная програмерская логика :)
электронщики железячники пишут в лоб
програмеры использую значения одного для другого. обычная практика.

там логика школьника

выводЕ нам что позволяет отправить ноль или один правильно ? этот ноль один зажигает светик, реле, и т.д.

PINE или PORTE(как чтение. и маска тут вообще не причем , можете абстрогироваться от маски) просто читает что на выводе. ему всеравно даже этот вывод или вход. они просто читают что там ноль иои один а не выход это или вход. просто как 2 копейки.

PORTC (как запись) пишет 0 или 1.
дижитал врайт тоже пишет 0 или >=1 как один


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 07:07:46 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
У вас на HWB что включено, на сколь резистор (если он там вообще есть) стоит?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 07:28:16 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
Код:
#define CLED (1 << PC7)
#define DLED (1 << PD6)
#define ELED (1 << PE6)
#define FLED (1 << PF0)

void setup() {
DDRF = 0xFF; PORTF = 0;
DDRE = 0xFF; PORTE = 0;
DDRD = 0xFF; PORTD = 0;
DDRC = 0xFF; PORTC = 0;
DDRB = 0xFF; PORTB = 0;
}



void loop() {
  PORTC |= CLED;       //led high {setup start}
  delay(3000);
  PORTC &= ~CLED;        //led low {setup end}   

  //PF0 a5
  //PD6 12
  //PE6 7
  PORTF |= FLED;  //fled 1. portf !=0
 
  if (PINF) PORTC |= CLED;   // if != 0 (true)  cled 1.  но оно тут не работает
  delay(3000);
  PORTC &= ~CLED;        //led low {setup end}   
 
  PORTF &= ~FLED;

   
}


Добавлено after 1 minute 5 seconds:
HWB что это ?
стоит один лед внешний и один встроенный 13 всё


Последний раз редактировалось alex68md Чт май 23, 2019 09:51:09, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 07:40:00 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 66
Рейтинг сообщений: 536
Зарегистрирован: Чт июл 28, 2016 07:58:37
Сообщений: 1925
Откуда: Kyiv, UA
Рейтинг сообщения: 0
if (PINF) PORTC |= CLED; - тут CLED загорится, если хотя бы на одном из выводов порта F будет 1.....

_________________
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 07:57:15 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 4
Ваш лед загорается уже после того как вы прочитали Пин. После записи 1 в Порт эта 1 в Пин вылезет только через 1 такт, т.е. вы читаете, когда на Пин эта 1 ещё не пришла. Имхо. Когда читаете из Порт- всё хорошо. Вы посмотрите во что это компилируется. Вот сто пудов будет

Out PORTx,y
In PINx,y
Между ними поставите nop и всё будет ок

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 08:34:35 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15125
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Не пойму смысла в том примере...
(пишем данные в порт и затем считываем их значение )
Разве что использование в режиме самоконтроля выходного уровня вывода в простейших приложениях.
Но там заметно информативнее обратная связь от регулируемого объекта, а не контроль уровня перед силовым ключом.
Для передачи данных от выхода аппаратного модуля для последующего программного опроса данных с того же вывода такой способ неприемлем ибо альтернативные функции отключают стандартный аппаратный функционал порта.
:dont_know:
А за интервал стабилизации сигнала... то "по умолчанию" как бы должно использоваться... автором прожки...
Ибо коль влез аж на уровне портов, то даташит уж точно перечитать должен был...
:sleep:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 09:56:43 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
После записи 1 в Порт эта 1 в Пин вылезет только через 1 такт,


т.е. перед if поставить например delay(10); и PIN потом прочитает ?

Добавлено after 2 minutes 7 seconds:
Не пойму смысла в том примере...
(пишем данные в порт и затем считываем их значение )


все верно. скажем это дубликатор. верификатор. контрол чек.
сидим мы в кресле перед приборной панелью запуска реактивного двигателя и нам загорается лампочка когда двигатель запущен.
но вот зараза. двигатель реально запущен. а лампочка нам не загорается. и мы думаем что двигатель не запущен

Добавлено after 34 seconds:
я добавил коментарии в этот пример выше как оно должно работать и как оно сейчас работает

Добавлено after 48 seconds:
а тем временем такие эксперименты
Код:
        DDRB = 0xFF; PORTB = 0;
        DDRC = 0xFF; PORTC = 0;
        DDRD = 0xFF; PORTD = 0;
Serial.println("DDR B C D =");
Serial.println(PINB);
Serial.println(PINC);
Serial.println(PIND);
Serial.println(PORTB);
Serial.println(PORTC);
Serial.println(PORTD);
PORTD = 0x00;
Serial.println(PIND);
Serial.println(PORTD);


выводит
Код:
DDR B C D =
0
0
45
0
0
32
45
32


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 10:23:02 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Прогоните прогу в студии/протеусе пошагово и посмотрите на Порт, Пин- что происходит. И да, присоединяюсь к ВОВ51, так не делают. Приведённые вами цифры говорят, что или на линиях что-то есть( нагрузка) или альтернативные функции дают такой результат.
Вместо делай пойдёт ноп или а=0 - что угодно. Перед чтением 1 должна стабилизироваться на Пин.

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 10:47:59 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15125
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Было б не на леонадре, а на нано/уно/про-мини можно и перепроверить,
а так... только предположить...
:sleep:

Неуж-то выводов для нормального контроля нехватает?
8)

Кыстати...
Я на тиньке 2313 как-то недавно поймал поврежденный входной канал то-ли на РА0 то-ли
на РА1...
Ну не идет прожка и все...
Детальный тест проблему выявил - пришлось кристалл заменить - лапки "впритирку" требовались.
Воть тут...
https://radiokot.ru/forum/viewtopic.php ... 5#p3460865
:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 13:56:03 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
а на нано/уно/про-мини можно и перепроверить,


все достало меня это безобразие, иду заказывать нано

Добавлено after 3 minutes 57 seconds:
Приведённые вами цифры говорят, что или на линиях что-то есть( нагрузка) или альтернативные функции дают такой результат.

да дело в том что это весь код
и там может висеть что угодно (хотя плата пустая) у нас порты как выход - низкий. должны быть нули везде.

я вот непроверял еще когда у нас ВЫХОД а мы на лапку подаём питание из вне. то МК прочитает эту лапку как ноль или единицу ?

но у меня то плата пустая и это весь код. откуда в портD единицы?! блин


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 14:14:21 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15125
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Платка - то пустая, а вот начальная инициализация у адурины отнюдь не пустая (даже при пустом трафарете скотча).
Это совсем не одно и то же, что с "чистым" МК непосредственно в "чистом ассемблере" тест городить.
:?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 14:59:58 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
А если так попробовать?
https://www.arduino.cc/reference/en/lan ... gitalread/

int ledPin = 13; // LED connected to digital pin 13
int inPin = 7; // pushbutton connected to digital pin 7
int val = 0; // variable to store the read value

void setup() {
pinMode(ledPin, OUTPUT); // sets the digital pin 13 as output
pinMode(inPin, INPUT); // sets the digital pin 7 as input
}

void loop() {
val = digitalRead(inPin); // read the input pin
digitalWrite(ledPin, val); // sets the LED to the button's value
}

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 15:15:44 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
а вот начальная инициализация у адурины отнюдь не пустая


так я же сам инициализирую
DDRB = 0xFF; PORTB = 0;
DDRC = 0xFF; PORTC = 0;
DDRD = 0xFF; PORTD = 0;
должно подхватывать

с кнопкой думаю всё будет ок. да и без неё тоже должно :)
но попробую вначале с дилеем потом с кнопкой


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 15:35:18 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Я не силён в сях но
void loop() {
PORTE |= 1<<PE6;
digitalWrite(13, PINE & 1<<PE6 ); //issue here. if I change to PORTE will work
не понял, где здесь чтение? В леонарде 13 пин это что? Вы пишете в пинЕ6? Или тут digitalread должно быть?

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 17:19:59 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Сделайте следующее
Спойлер
Код:
void loop() {
 DDRE |= 1<<PE6;

 while (1) {
  PORTE |= 1<<PE6;
  delay(1000);                       // wait for a second
   Serial.print("HIGH PORTE = " );  Serial.println(PORTE , BIN);
   Serial.print("HIGH PINE = " );  Serial.println(PINE , BIN);
   
  PORTE  &= ~(1<<PE6);
  delay(1000);
   Serial.print("LOW PORTE = " );  Serial.println(PORTE , BIN);
   Serial.print("LOW PINE = " );  Serial.println(PINE , BIN);
   }
}
Для контроля на РЕ6 через резистор ом 300 повесить светодиод, что РЕ6 действительно моргает.
результат сюда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 19:08:45 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
как доберусь до платы выложу результат

а пока вот что нашёл в описании регистров

PIND is the input register variable It will read all of the digital input pins at the same time.

а так как у меня выходы то может поэтому такая катавася... хотя у всех работает и для выходов и всё хорошо :) и опять же в даташите написано внезависимости от направления PIN должен читать. чудеса


Последний раз редактировалось alex68md Чт май 23, 2019 19:14:41, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 19:11:56 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
alex68md писал(а):
а так как у меня выходы
вы бы еще почитали про то, как у AVR порты устроены. PIND - это регистр, хранящий уровни сигналов на физических пинах МК, PORTD - это регистр, управляющий подачей на пины МК уровни изнутри МК. поэтому независимо от режима работы порта, заданного регистром DDRD, читать PIND можно всегда, как и всегда можно писать PORTD - просто результаты могут быть неожиданными.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 21:23:30 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
Между ними поставите nop и всё будет ок



вот зараза атмел
одного нопа не хватило. решил эту гребаную загвоздку кто бы мог подумать!

1) значит те непонятные единицы в портах это всякая ерунда типо даже TX диода например. со всеми не разобрался. но любая мелочь портит нам ожидания :)

2) а вот IF начинает работать когда пауза более 3мс
Код:
  PORTC |= CLED;       //led high {setup start}
  delay(3000);
  PORTC &= ~CLED;        //led low {setup end}

  //PF0 a5
  //PD6 12
  //PE6 7
  PORTF |= FLED;  //fled 1. portf !=0
  delay(3);
  //Serial.println(PINF);
  //Serial.println(PORTF);
  if (PINF) PORTC |= CLED;   // if != 0 (true)  cled 1.  но оно тут не работает
  delay(3000);
  PORTC &= ~CLED;        //led low {setup end}
  PORTF &= ~FLED;

тормознутый однако авр )))

Добавлено after 2 minutes 30 seconds:
HIGH PORTE = 1000000
HIGH PINE = 1000000
LOW PORTE = 0
LOW PINE = 0


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Чт май 23, 2019 21:29:17 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
alex68md писал(а):
тормознутый однако авр
уже говорил в другой теме и повторю в этой: ваши проблемы не возникали ни у кого из тех, кто пользуется AVR. поэтому не надо пенять на микроконтроллер, проблема явно не в нём. согласно вашему коду между записью в порт и чтением его пинов проходит куда больше длительности одного NOP-а, так что дело явно не в том, что уровни не успевают устаканиться.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PINx не читает порт на леонардо :(
СообщениеДобавлено: Пт май 24, 2019 08:27:45 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15125
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
БЯДА однако с КОТЯТАМИ...
:(


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 67 ]    , 2, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y