Например TDA7294

Форум РадиоКот • Просмотр темы - 595 + уно на выходе вместо нулей единицы
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт дек 12, 2025 07:17:36

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


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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: 595 + уно на выходе вместо нулей единицы
СообщениеДобавлено: Пн сен 09, 2024 08:26:23 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Пт авг 05, 2016 04:47:49
Сообщений: 1123
Рейтинг сообщения: 0
загружаю код где все пины у 595 должны быть в 0
но на деле они все в 1
сначала думал анализатор тупит но нет вольтметр показывает что на выходах напруга питания

Спойлер
Код:
#include "flprogUtilites.h"
#include <SPI.h>
byte _74HC5951OB1 = 0;
byte _74HC5951TB = 0;
bool _74HC5951NS = 0;
void setup()
{
    SPI.begin();
    pinMode(9, OUTPUT);
}
void loop()
{
    //Плата:1
    _74HC5951NS = 0;
    bitWrite(_74HC5951TB, 0, 0);
    bitWrite(_74HC5951TB, 1, 0);
    bitWrite(_74HC5951TB, 2, 0);
    bitWrite(_74HC5951TB, 3, 0);
    bitWrite(_74HC5951TB, 4, 0);
    bitWrite(_74HC5951TB, 5, 0);
    bitWrite(_74HC5951TB, 6, 0);
    bitWrite(_74HC5951TB, 7, 0);
    if(! (_74HC5951TB == _74HC5951OB1))
    {
        _74HC5951OB1 = _74HC5951TB;
        _74HC5951NS = 1;
    }
    if (_74HC5951NS)
    {
        digitalWrite(9, 0);
        SPI.transfer(_74HC5951OB1);
        digitalWrite(9, 1);
    }
}


но стоит подать 1 на один из пинов как всё на выходе 595 начинает соответствовать действительности

Спойлер
Код:
#include "flprogUtilites.h"
#include <SPI.h>
byte _74HC5951OB1 = 0;
byte _74HC5951TB = 0;
bool _74HC5951NS = 0;
void setup()
{
    SPI.begin();
    pinMode(9, OUTPUT);
}
void loop()
{
    //Плата:1
    _74HC5951NS = 0;
    bitWrite(_74HC5951TB, 0, 1);
    bitWrite(_74HC5951TB, 1, 0);
    bitWrite(_74HC5951TB, 2, 0);
    bitWrite(_74HC5951TB, 3, 0);
    bitWrite(_74HC5951TB, 4, 0);
    bitWrite(_74HC5951TB, 5, 0);
    bitWrite(_74HC5951TB, 6, 0);
    bitWrite(_74HC5951TB, 7, 0);
    if(! (_74HC5951TB == _74HC5951OB1))
    {
        _74HC5951OB1 = _74HC5951TB;
        _74HC5951NS = 1;
    }
    if (_74HC5951NS)
    {
        digitalWrite(9, 0);
        SPI.transfer(_74HC5951OB1);
        digitalWrite(9, 1);
    }
}


а как получить одни нули на выходе ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
СообщениеДобавлено: Пн сен 09, 2024 10:34:02 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1306
Рейтинг сообщения: 0
Нарисовать схему. Оформить текст - пробелы, пустые строки. Сделать смысловыми имена переменных, удалить неиспользуемые include.
Как бы, всё это мелочи, но из мелочей всё складывается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
СообщениеДобавлено: Пн сен 09, 2024 11:00:17 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Пт авг 05, 2016 04:47:49
Сообщений: 1123
Рейтинг сообщения: 0
я не понимаю как пишится код
это программа сгенерировала мне

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
СообщениеДобавлено: Пн сен 09, 2024 11:35:45 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1306
Рейтинг сообщения: 0
Примерно так.
Спойлер
Код:
#include <SPI.h>


const byte ST_SP = 9;                   //pin

byte hc_old = -1;
byte hc_data;


void setup() {
    SPI.begin();
    digitalWrite(ST_SP, HIGH);
    pinMode(ST_SP, OUTPUT);
}


void loop() {
    //Плата:1
    // bitWrite(hc_data, 0, 0);
    // bitWrite(hc_data, 1, 0);
    // bitWrite(hc_data, 2, 0);
    // bitWrite(hc_data, 3, 0);
    // bitWrite(hc_data, 4, 0);
    // bitWrite(hc_data, 5, 0);
    // bitWrite(hc_data, 6, 0);
    // bitWrite(hc_data, 7, 0);
    hc_data = 0;
    if (hc_data != hc_old) {
        hc_old = hc_data;
        digitalWrite(ST_SP, LOW);
        SPI.transfer(hc_data);
        delay(1);                       //test
        digitalWrite(ST_SP, HIGH);
    }
}

У вас запись в 595 происходит при изменении данных для записи, а т.к. они изначально в нуле, то и запись не происходит. Единицы на выходах - это произвольное состояние после подачи питания. Задействуйте вход сброса и будут нули при включении.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
СообщениеДобавлено: Пн сен 09, 2024 13:19:11 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Пт авг 05, 2016 04:47:49
Сообщений: 1123
Рейтинг сообщения: 0
да ваш код отрабатывает как надо и убедился что спаино и исправность деталей в норме
но я привязан к флпрогу

попробовал напаять резистор с MR на плюс и прижать к минусу во время загрузки мк то да на выходе нули

ещё подумал и поставил инверсный ртриг на один вход 595 теперь после загрузки 595 сбрасывает единицы автоматом


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
СообщениеДобавлено: Пн сен 09, 2024 14:43:00 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1306
Рейтинг сообщения: 0
Дело хозяйское. Но в Ардуино среде это делается примерно так:
Спойлер
Код:
#include <SPI.h>


const byte ST_SP = 9;                   //pin

byte hc_old;
byte hc_data;


void setup() {
    SPI.begin();
    pinMode(ST_SP, OUTPUT);
    hcWrite(0);
}


void loop() {
    //Плата:1
    hc_data = 0;
    if (hc_data != hc_old) {
        hc_old = hc_data;
        hcWrite(hc_data);
    }
}


void hcWrite(byte data) {
    digitalWrite(ST_SP, LOW);
    SPI.transfer(data);
    digitalWrite(ST_SP, HIGH);
}

Без использования /MR.
Либо подключайте RC цепочку на /MR для сброса. Обязано работать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
СообщениеДобавлено: Ср сен 11, 2024 10:36:29 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 139
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1480
Рейтинг сообщения: 0
У этих сдвиговых регистров есть вход разрешения выходов. В блоке инициализации вывести на регистры начальные значения и только после этого разрешить выходы. Я в своих проектах так делал. Чтобы при включении питания гарантировано не было не нужных выбросов. Так как на регистрах могут висеть разные устройства и начальные уровни могут быть разные.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
СообщениеДобавлено: Ср сен 18, 2024 21:38:39 
Электрический кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 47
Зарегистрирован: Вс мар 01, 2009 19:47:16
Сообщений: 1046
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Вырвиглазно конечно FL код пишет... Задача какая у этой железки? Обязательно ли библиотеку юзать, может программный SPI организовать проще?

_________________
Не важно чем все начнется. Важно чем кончится!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
СообщениеДобавлено: Вс дек 08, 2024 12:43:38 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 139
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1480
Рейтинг сообщения: 0
Зашунтировать входы резисторами в соответствии с даташитом. Дело в том что, при включении питания выходы МК в состоянии Z. Попросту говоря, входы сдвигового регистра висят в воздухе. И на выходах регистров могут быть нежелательные уровни на данный момент. Какие то входы проще намертво подключить к плюсу или минусу питания. В соответствии с даташитом.
Я делаю так. У регистра есть вход разрешения выходов (см. выше, зашунтировать резистором), . И в программе сначала инициализация всего и вся. Пихаем нужные данные в регистр. И только после этого я разрешаю выходы регистра.
Я пока занят. Позже, если не забуду, выложу схему. И пример работы с регистром.


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

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


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

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


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

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


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