Форум РадиоКот • Просмотр темы - 595 + уно на выходе вместо нулей единицы
Сообщения без ответов | Активные темы
Страница 1 из 1
[ Сообщений: 9 ]
Автор
Сообщение
Di123
Заголовок сообщения: 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); } }
а как получить одни нули на выходе ?
Вернуться наверх
Реклама
OKF
Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
Добавлено: Пн сен 09, 2024 10:34:02
Это не хвост, это антенна
Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18Сообщений: 1306
Рейтинг сообщения: 0
Нарисовать схему. Оформить текст - пробелы, пустые строки. Сделать смысловыми имена переменных, удалить неиспользуемые include. Как бы, всё это мелочи, но из мелочей всё складывается.
Вернуться наверх
Реклама
Di123
Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
Добавлено: Пн сен 09, 2024 11:00:17
Сверлит текстолит когтями
Зарегистрирован: Пт авг 05, 2016 04:47:49Сообщений: 1123
Рейтинг сообщения: 0
я не понимаю как пишится код
это программа сгенерировала мне
Вернуться наверх
OKF
Заголовок сообщения: 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 происходит при изменении данных для записи, а т.к. они изначально в нуле, то и запись не происходит. Единицы на выходах - это произвольное состояние после подачи питания. Задействуйте вход сброса и будут нули при включении.
Вернуться наверх
Реклама
Di123
Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
Добавлено: Пн сен 09, 2024 13:19:11
Сверлит текстолит когтями
Зарегистрирован: Пт авг 05, 2016 04:47:49Сообщений: 1123
Рейтинг сообщения: 0
да ваш код отрабатывает как надо и убедился что спаино и исправность деталей в норме но я привязан к флпрогу попробовал напаять резистор с MR на плюс и прижать к минусу во время загрузки мк то да на выходе нули ещё подумал и поставил инверсный ртриг на один вход 595 теперь после загрузки 595 сбрасывает единицы автоматом
Вернуться наверх
Реклама
OKF
Заголовок сообщения: 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 для сброса. Обязано работать.
Вернуться наверх
Реклама
Demiurg
Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
Добавлено: Ср сен 11, 2024 10:36:29
Это не хвост, это антенна
Карма: 4
Рейтинг сообщений: 139
Зарегистрирован: Ср июн 25, 2008 15:19:44Сообщений: 1480
Рейтинг сообщения: 0
У этих сдвиговых регистров есть вход разрешения выходов. В блоке инициализации вывести на регистры начальные значения и только после этого разрешить выходы. Я в своих проектах так делал. Чтобы при включении питания гарантировано не было не нужных выбросов. Так как на регистрах могут висеть разные устройства и начальные уровни могут быть разные.
Вернуться наверх
Viper_Snake
Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
Добавлено: Ср сен 18, 2024 21:38:39
Электрический кот
Карма: 2
Рейтинг сообщений: 47
Зарегистрирован: Вс мар 01, 2009 19:47:16Сообщений: 1046Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Вырвиглазно конечно FL код пишет... Задача какая у этой железки? Обязательно ли библиотеку юзать, может программный SPI организовать проще?
_________________ Не важно чем все начнется. Важно чем кончится!
Вернуться наверх
Demiurg
Заголовок сообщения: Re: 595 + уно на выходе вместо нулей единицы
Добавлено: Вс дек 08, 2024 12:43:38
Это не хвост, это антенна
Карма: 4
Рейтинг сообщений: 139
Зарегистрирован: Ср июн 25, 2008 15:19:44Сообщений: 1480
Рейтинг сообщения: 0
Зашунтировать входы резисторами в соответствии с даташитом. Дело в том что, при включении питания выходы МК в состоянии Z. Попросту говоря, входы сдвигового регистра висят в воздухе. И на выходах регистров могут быть нежелательные уровни на данный момент. Какие то входы проще намертво подключить к плюсу или минусу питания. В соответствии с даташитом. Я делаю так. У регистра есть вход разрешения выходов (см. выше, зашунтировать резистором), . И в программе сначала инициализация всего и вся. Пихаем нужные данные в регистр. И только после этого я разрешаю выходы регистра. Я пока занят. Позже, если не забуду, выложу схему. И пример работы с регистром.
Вернуться наверх
Реклама
Страница 1 из 1
[ Сообщений: 9 ]
Кто сейчас на форуме
Сейчас этот форум просматривают: codenamehawk и гости: 36
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения