Соответствие выводов в IDE

User MTU
Offline
Зарегистрирован: 24.03.2012

Добрый день.

Чего-то перестал понимать, что делаю. Некоторый проект отлаживался на макетка с mega328 в DIP корпусе. Само устройство в дальнейшем собрано на меге в корпусе tqfp32. ПО писалось в arduino IDE. Сейчас почему-то не так работает устройство.

const uint8_t     pinConfig0 = 0;
const uint8_t     pinConfig1 = 1;
const uint8_t     pinConfig2 = 12;
const uint8_t     pinConfig3 = 11;


uint8_t           pinExtControl = 0;

void setup() {
  pinMode (pinConfig0, INPUT_PULLUP);
  pinMode (pinConfig1, INPUT_PULLUP);  
  pinMode (pinConfig2, INPUT_PULLUP);
  pinMode (pinConfig3, INPUT_PULLUP);  
  pinMode (pinConfig4, INPUT_PULLUP);   
  
  if (digitalRead (pinConfig0) && digitalRead (pinConfig1)) {
    pinExtControl = 1;
  }

  if (digitalRead (pinConfig0) && !digitalRead (pinConfig1)) {
    pinExtControl = 2;
  }
 
  if (!digitalRead (pinConfig0) && !digitalRead (pinConfig1)) {
    pinExtControl = 3;
  }
  
  if (!digitalRead (pinConfig0) && digitalRead (pinConfig1)) {
    ;
  } 
  
}

В итоге, не так работают условия с выводами pinConfig0 и pinConfig1. Есть подозрение, что я не так их определяю для корпуса tqfp32 в IDE? Ведь выводы 11, 12 (физически 15 и 16 выводы) отрабатывают верно, а с выводами 0 (физически 30) и 1 (физически 31) проблема...
 

 

 

nik182
Offline
Зарегистрирован: 04.05.2015

Выводы 0 и 1 соединены с USB-TTL конвертером. Через них заливается программа. Не стоит их использовать без крайней необходимости.

User MTU
Offline
Зарегистрирован: 24.03.2012

Не, устройство на совсе мотдельной плате собрано. Мега прошивается через ICSP. Выводы 0 и 1 нигде кроме как входы не задействованы.

b707
Offline
Зарегистрирован: 26.05.2017

Номера выводов не имеют значения, важны номера портов МК. Пины ардуино для одних и тех портов в ДИП и в tqfp32 одинаковы - вот и проверяйте

User MTU
Offline
Зарегистрирован: 24.03.2012

Вот тут и затык.

Вывод под номером 30, он же PD0, а также вывод под номером 31, он же PD1 - как их обозвать в arduino IDE ?

b707
Offline
Зарегистрирован: 26.05.2017

User MTU пишет:

Вот тут и затык.

Вывод под номером 30, он же PD0, а также вывод под номером 31, он же PD1 - как их обозвать в arduino IDE ?

ну какой затык то?

забиваете в гугль "atmega328 pinout" и сравниваете картинки на разные типы корпусов

Я вам и так скажу - это пины 0 и 1 на обоих ваших чипах. Ищите ошибку в другом месте

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

User MTU пишет:

Вот тут и затык.

Вывод под номером 30, он же PD0, а также вывод под номером 31, он же PD1 - как их обозвать в arduino IDE ?

https://avatars.mds.yandex.net/get-zen_doc/3414416/pub_5fe84976e5cdbc6a9...

0 (D0) и 1 (D1) соответственно

b707
Offline
Зарегистрирован: 26.05.2017

кстати, вот эта хрень

if (digitalRead (pinConfig0) && digitalRead (pinConfig1)) {
    pinExtControl = 1;
  }

  if (digitalRead (pinConfig0) && !digitalRead (pinConfig1)) {
    pinExtControl = 2;
  }
 
  if (!digitalRead (pinConfig0) && !digitalRead (pinConfig1)) {
    pinExtControl = 3;
  }
  
  if (!digitalRead (pinConfig0) && digitalRead (pinConfig1)) {
    ;
  } 

пишется в одну строчку, если вспомнить что результат работы digitalRead() - это фактически 1 бит

Upper
Offline
Зарегистрирован: 23.06.2020

Прозванивали? Может непропай или замыкание? И если схемотехника позволяет - напишите тестовый скетч с выводом на эти пины разной частоты и посмотрите. Но сначала проверьте на КЗ.

User MTU
Offline
Зарегистрирован: 24.03.2012

Всем спасибо.

В итоге оказался подбитый 30-й вывод. При чем один, работает как надо, если начинать работать еще с некоторыми входами, иногда его поведение неработоспособно. По закону подлости, проверка устройства началась как раз с его странного поведения.

В arduino IDE, выводы 30 и 31 в корпусе TQFP32 для меги 328p соответственно обзываются как 0 и 1.