www.kn34pc.com
https://www.kn34pc.com/forums/

Начално състояние на PCF8574
https://www.kn34pc.com/forums/viewtopic.php?f=74&t=937
Страница 1 от 1

Автор:  LZ2WSG [ 10 Сеп 2017, 13:06 ]
Заглавие:  Начално състояние на PCF8574

За управление на обхватни релета към трансивера с Arduino използвам PCF8574 - 8-Bit I/O Expander, който се управлява през I2C.
Активното изходно състояние за релетата (през буферите им) е "1". С наличните библиотеки из интернет управлението е лесно.

Интрегралните схеми са евтини и се намират.

Единствено не ми допада кратко "самопроизволно" (и неуправляемо от мен) състояние на изходите при включване: всички изходи кратко време са в "1" и ... релетата ми прещракват досадно (докато се изпълни boot в Arduino и заредя в setup "всички изходи: в "0").

Няма ли начин да го променя това начално установяване в "1" преди да е сработила програмата?
Не, че състоянието е "вредно" - нищо не се случва. Дори така ще гоня паяците из кутията (от звука) :crazy и ще "премахвам" окисите по контактите на релетата, но ми се ще да имам контрол над това.

При замяна с MCP23XXX такъв момент липсва, но ми се иска да употребя за случая и наличните ИС.
---
P.S.
И при силово изгасяне на цялото управление (Arduino, синтезаторен чип, PCF8574, дисплей ...) релетата се вдигат за кратко време ...
И при цялостно изгасяне на трансивера от мрежата с всичките му захранвания ефектът го има.

Автор:  ramzes [ 17 Сеп 2017, 10:19 ]
Заглавие:  Re: Начално състояние на PCF8574

Ако подадеш захранване на PCF8574 няколко милисекунди по-късно ? Т.е след като тръгне Ардуиното ?

Автор:  LZ2WSG [ 17 Сеп 2017, 12:03 ]
Заглавие:  Re: Начално състояние на PCF8574

ramzes написа:
Ако подадеш захранване на PCF8574 няколко милисекунди по-късно ? Т.е след като тръгне Ардуиното ?

Нищо не се променя - изходите тръгват с "1" за малко време, после се изпълнява зададеното.
При захранен PCF8574 (само чипа, без никакво управление), на изводите има "1" и си стои.
---
Четем из .pdf-а:
Код за потвърждение:
8.4 Power-on reset
When power is applied to VDD, an internal Power-On Reset (POR) holds the PCF8574/74A in a reset condition until VDD has reached VPOR. At that point, the reset condition is released and the PCF8574/74A registers and I2C-bus/SMBus state machine will initialize to their default states of all I/Os to inputs with weak current source to VDD. Thereafter VDD must be lowered below VPOR and back up to the operation voltage for power-on reset cycle.

Ще да е затова през светодиода, свързан на извода без управление (предвиден за изход с товар към +5V), да ми тече нищожния входен ток и диодът леко да свети ...
Като дойде управление (след определено време) като изходи се зануляват и после нормално си се управляват:
Код за потвърждение:
void PortExpander_I2C::init_priv(){
   _portValues = 0x00;
   Wire.begin();
    digitalWriteAll(0x00);
}

---
С тестовото си свързане преди малко на 2 LED за изводите и "рехавото" им светене към GND си спомних как преди повече от година "бях изхвърлил" за приложение въпросната ИС:

- различава се максималния изходен ток за "1" и за "0":
Код за потвърждение:
IOL LOW-level output current: 10-25 mA
IOH HIGH-level output current: 300 uA

Няма да изхвърлям ИС :mail . Ще ги използвам в такива места, където ефектът не е определящ (напр. I2C конвертор за LCD 1602).

Автор:  LZ2WSG [ 22 Сеп 2017, 11:47 ]
Заглавие:  Re: Начално състояние на PCF8574

То и библиотеки не му на трябват на PCF8475, управлението е няколко реда:
Код за потвърждение:
#include <Wire.h>
void setup() {
  Wire.begin();
}
void loop() {
  pcf_write(0b00000001);
  delay(250);
  pcf_write(0b00000000);
  delay(250);
}
void pcf_write(uint8_t data) {
  Wire.beginTransmission(0x20);
  Wire.write(data);
  Wire.endTransmission();
}

Извидите са изходи по подразбиране. A0, A1, A2 са "0" -> I2C адресът е 0x20.

Отново го има ефектът на присветването до инициализацията (при LED към земя): напр. при свързване на два светодиода: на OUT 0 (pin 4) и поне още един светодиод напр. на OUT 1 (pin 4). При старт двата светват за кратко, на pin 4 започва да си мига, а на 5 загася.

Отново при свързване на LED (с 1kOm) към + свети нормално, а LED при свързвне (с 1kOm) към GND свети "рехаво"...

Автор:  ramzes [ 23 Сеп 2017, 11:47 ]
Заглавие:  Re: Начално състояние на PCF8574

С едно _парче_ от сорта на 24С02 по средата колкото да диктува в първоначален момент момент няма ли да стане ? :?

Автор:  LZ2WSG [ 23 Сеп 2017, 11:54 ]
Заглавие:  Re: Начално състояние на PCF8574

Не, няма нужда. Ефектът е преди да тръгне Arduino (boot). След установяването му състоянията са напълно предивидими и управляеми.

Автор:  LZ2WSG [ 09 Авг 2019, 10:03 ]
Заглавие:  Re: Начално състояние на PCF8574

За използване с предвидими действия при старт остава: при избрано активно ниво "0" PCF8574 стартира без активиран изход, а след като сработи управлението, се установява в исканото състояние. Ограничено използване на PCF ще е за товари, свързани към "+5V". (Предпочитам да са към "ЗЕМЯ").
Код за потвърждение:
#include <Wire.h>
void setup() {
  Wire.begin();
}
void loop() {
  pcf_write(0b00000001);
  delay(250);
  pcf_write(0b00000010);
  delay(250);
  pcf_write(0b00000100);
  delay(250);
  pcf_write(0b00001000);
  delay(250);
}
void pcf_write(uint8_t m_data) {
  Wire.beginTransmission(0x20);
  Wire.write(~m_data);
  Wire.endTransmission();
}

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/