при условии, что сумма падений на них меньше напряжения питания. например при питании 3,6 вольта и суперярких светодиодах они оба будут погашены, если пин МК будет в третьем состоянии...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Заголовок сообщения: Re: Формирование случайной импульсной последовательности
Добавлено: Чт дек 07, 2017 22:00:05
Открыл глаза
Зарегистрирован: Вс май 28, 2017 19:07:32 Сообщений: 63
Рейтинг сообщения:0
Работа двух кнопок на одном входе - легко: Не нажата кнопка включения - на входе лог. 0 (в протосе так же), горит красный светодиод, зеленый не должен гореть (но в протосе оба не горят...) Нажата кнопка включения и не нажата кнопка выключения - на входе лог. 1 (в протосе так же), горит зеленый светодиод, красный совсем не горит. Нажата кнопка выключения - горит красный светодиод, на входе лог. 0. Но в протосе не горит красный светодиод, почему-то напряжение высокого уровня показывает, при нажатой кнопке выключения, хотя на входе стоит лог. 0.
Этот Weak pull-up я так пытаюсь отключить - нифига не правильно, как я понял:
Ето два варианта - с подтяжкой к + и к земле. Подтяжка нужна, иначе все будет лезть на вход. И мой вопрос: Какой силой нужно нажимать S2 и S3 дабы на вход появилось 0 (+Vdd) если они там уже есть.
В ету схему включения активна одна кнопка - противоположная на резистора подтяжки. Когда отпускаем активную кнопку на входе ЛЕ появляется потенциал с резистора подтяжки и всякое нажимание на кнопки S2 и S3 не имеет никакого смысла
Логика кода должна быть такая If (нажата) ; else //ненажата ;
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Что касается вопроса о кнопках: "На борту" этого контроллера есть АЦП... Можно хоть 20-ть кнопок "повесить" на один вход (ANx) контроллера /как делают в автомагнитолах и т.п./.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Заголовок сообщения: Re: Формирование случайной импульсной последовательности
Добавлено: Пт дек 08, 2017 16:21:25
Открыл глаза
Зарегистрирован: Вс май 28, 2017 19:07:32 Сообщений: 63
Рейтинг сообщения:0
Прочитал я даташит, прочитал комментарии, пересобрал схему, изменил код. Все равно, я не могу установить ноль на выходе ножке RA3. Я не понимаю, что это за магия и как убрать эти 2,5 с этой ножки. Диоды не горят, вообще. Входы RA0 и RA1 имеют лог. 0 при нажатых кнопок, а диоды не горят, никакие.
#define SIGNAL 30 // Длительность сигнала в мкс #define DELMIN 100 // Максимальная задержка в мкс #define DELMAX 400000 // Максимальная задержка в мкс
// PIC10F322 Configuration Bit Settings
// 'C' source line config statements
// CONFIG #pragma config FOSC = EC // Oscillator Selection bits (EC: CLKIN function enabled) #pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled) #pragma config WDTE = OFF // Watchdog Timer Enable (WDT enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD) #pragma config CP = ON // Code Protection bit (Program memory code protection is enabled) #pragma config LVP = OFF // Low-Voltage Programming Enable (Low-voltage programming enabled) #pragma config LPBOR = ON // Brown-out Reset Selection bits (BOR enabled) #pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.) #pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
// #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF.
void Prepare(); // Функция подготовки МК
int main() { Prepare(); // Запуск функции подготовки int K = 4; while(1) // Бесконечный цикл работы { if(RA0 == 0 && RA1 == 1) // Проверка на нажатые кнопки { RA3 = 1; // Зажигаем зеленый светодиод //srand(K); // Инициализация генератора случайных импульсов //K = DELMIN + rand ()% DELMAX; // Присвоение псевдослучайного числа //for(int i = 0; i <= K/60; i++) {} // Пустой цикл задержки __delay_us(SIGNAL-4); // Определяем задержку RA2 = 1; // Подаем на выход лог. единицу __delay_us(SIGNAL-2); // Определяем длительность сигнала RA2 = 0; // Подаем на выход лог. ноль } else { RA3 = 0; // Зажигаем красный светодиод RA2 = 0; // На выход ставил лог. ноль } } return 0; }
// Функция подготовки void Prepare() { TRISA = 0b0011; // Направление работы ножек порта А (вход) PORTA = 0b0000; // очищаем порт А OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz WPUA&=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); // Отключение WEAK PULL-UP }
Конечно, но для этого его надо назначить в Config-е как вход (_MCLRE_OFF). !!! Но, некоторые самодельные программаторы не смогут потом "залить" новую прошивку!!!
Заголовок сообщения: Re: Формирование случайной импульсной последовательности
Добавлено: Пт дек 08, 2017 16:52:17
Открыл глаза
Зарегистрирован: Вс май 28, 2017 19:07:32 Сообщений: 63
Рейтинг сообщения:0
Теперь генерация сигнала есть, горит зеленый светодиод, НО:
1. Зеленый светодиод горит даже тогда, когда кнопка старт не нажата. 2. Красный светодиод не горит, когда не нажата кнопка старта или нажата кнопка стоп.
Код:
#pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD) - выключено
#define SIGNAL 30 // Длительность сигнала в мкс #define DELMIN 100 // Максимальная задержка в мкс #define DELMAX 400000 // Максимальная задержка в мкс
// PIC10F322 Configuration Bit Settings
// 'C' source line config statements
// CONFIG #pragma config FOSC = EC // Oscillator Selection bits (EC: CLKIN function enabled) #pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled) #pragma config WDTE = OFF // Watchdog Timer Enable (WDT enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD) #pragma config CP = ON // Code Protection bit (Program memory code protection is enabled) #pragma config LVP = OFF // Low-Voltage Programming Enable (Low-voltage programming enabled) #pragma config LPBOR = ON // Brown-out Reset Selection bits (BOR enabled) #pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.) #pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
// #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF.
void Prepare(); // Функция подготовки МК
int main() { Prepare(); // Запуск функции подготовки int K = 4; while(1) // Бесконечный цикл работы { if((RA0 == 0) && (RA3 == 1)) // Проверка на нажатые кнопки { RA1 = 0; // Зажигаем зеленый светодиод //srand(K); // Инициализация генератора случайных импульсов //K = DELMIN + rand ()% DELMAX; // Присвоение псевдослучайного числа //for(int i = 0; i <= K/60; i++) {} // Пустой цикл задержки __delay_us(SIGNAL-4); // Определяем задержку RA2 = 1; // Подаем на выход лог. единицу __delay_us(SIGNAL-2); // Определяем длительность сигнала RA2 = 0; // Подаем на выход лог. ноль } else { RA1 = 1; // Зажигаем красный светодиод RA2 = 0; // На выход ставил лог. ноль } } return 0; }
// Функция подготовки void Prepare() { TRISA = 0b1001; // Направление работы ножек порта А (вход) PORTA = 0b0000; // очищаем порт А OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz WPUA&=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); // Отключение WEAK PULL-UP }
Заголовок сообщения: Re: Формирование случайной импульсной последовательности
Добавлено: Пт дек 08, 2017 17:25:00
Открыл глаза
Зарегистрирован: Вс май 28, 2017 19:07:32 Сообщений: 63
Рейтинг сообщения:0
В симуляторе (Prouteus).
Стало лучше, а именно: Зеленый светодиод нормально горит при нажатой кнопке включения и выключается, если нажать кнопку стоп или отжать кнопку включения.
НО:
При нажатой кнопке стоп не горит красный светодиод, он вообще не горит:
// Параметры сигнала #define SIGNAL 30 // Длительность сигнала в мкс #define DELMIN 100 // Максимальная задержка в мкс #define DELMAX 400000 // Максимальная задержка в мкс
// Обознаение выводов и кнопок #define START RA0 // Кнопка запуска работы МК #define STOP RA3 // Кнопкка остановки работы МК #define LED RA1 // Вывод на светодиоды #define GREEN 0 // Сигнал для зеленого светодиода #define RED 1 // Сигнал для красного светодиода #define GENERATOR RA2 // Выход генератора
// PIC10F322 Configuration Bit Settings
// 'C' source line config statements
// CONFIG #pragma config FOSC = EC // Oscillator Selection bits (EC: CLKIN function enabled) #pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled) #pragma config WDTE = OFF // Watchdog Timer Enable (WDT enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD) #pragma config CP = ON // Code Protection bit (Program memory code protection is enabled) #pragma config LVP = OFF // Low-Voltage Programming Enable (Low-voltage programming enabled) #pragma config LPBOR = ON // Brown-out Reset Selection bits (BOR enabled) #pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.) #pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
// #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF.
void Prepare(); // Функция подготовки МК
int main() { Prepare(); // Запуск функции подготовки int K = 4; while(1) // Бесконечный цикл работы { if((START == 0) && (STOP == 1)) // Проверка на нажатые кнопки { LED = 0; // Зажигаем зеленый светодиод //srand(K); // Инициализация генератора случайных импульсов //K = DELMIN + rand ()% DELMAX; // Присвоение псевдослучайного числа //for(int i = 0; i <= K/60; i++) {} // Пустой цикл задержки __delay_us(SIGNAL-4); // Определяем задержку GENERATOR = 1; // Подаем на выход лог. единицу __delay_us(SIGNAL-2); // Определяем длительность сигнала GENERATOR = 0; // Подаем на выход лог. ноль } else { LED = 1; // Зажигаем красный светодиод GENERATOR = 0; // На выход ставил лог. ноль } } return 0; }
// Функция подготовки void Prepare() { TRISA = 0b1001; // Направление работы ножек порта А (вход) PORTA = 0b0000; // очищаем порт А OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz WPUA&=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); // Отключение WEAK PULL-UP ANSELA&=~((1<<0)|(1<<1)|(1<<2)); }
// Параметры сигнала #define SIGNAL 30 // Длительность сигнала в мкс #define DELMIN 100 // Максимальная задержка в мкс #define DELMAX 400000 // Максимальная задержка в мкс
// Обознаение выводов и кнопок #define BUTTON RA0 // Кнопка МК #define LED RA1 // Вывод на светодиоды #define GREEN 0 // Сигнал для зеленого светодиода #define RED 1 // Сигнал для красного светодиода #define GENERATOR RA2 // Выход генератора
// PIC10F322 Configuration Bit Settings
// 'C' source line config statements
// CONFIG #pragma config FOSC = EC // Oscillator Selection bits (EC: CLKIN function enabled) #pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled) #pragma config WDTE = OFF // Watchdog Timer Enable (WDT enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD) #pragma config CP = ON // Code Protection bit (Program memory code protection is enabled) #pragma config LVP = OFF // Low-Voltage Programming Enable (Low-voltage programming enabled) #pragma config LPBOR = ON // Brown-out Reset Selection bits (BOR enabled) #pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.) #pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
// #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF.
void Prepare(); // Функция подготовки МК
int main() { Prepare(); // Запуск функции подготовки int K = 4; while(1) // Бесконечный цикл работы { if(BUTTON == 1) // Проверка на нажатые кнопки { LED = GREEN; // Зажигаем зеленый светодиод //srand(K); // Инициализация генератора случайных импульсов //K = DELMIN + rand ()% DELMAX; // Присвоение псевдослучайного числа //for(int i = 0; i <= K/60; i++) {} // Пустой цикл задержки __delay_us(SIGNAL-4); // Определяем задержку GENERATOR = 1; // Подаем на выход лог. единицу __delay_us(SIGNAL-2); // Определяем длительность сигнала GENERATOR = 0; // Подаем на выход лог. ноль } else { LED = RED; // Зажигаем красный светодиод GENERATOR = 0; // На выход ставил лог. ноль } } return 0; }
// Функция подготовки void Prepare() { TRISA = 0b1001; // Направление работы ножек порта А (вход) PORTA = 0b0000; // очищаем порт А OSCCON = (1<<4)|(1<<5)|(1<<6); // Установка IRCF = '111' для частоты в 16 MHz WPUA&=~((1<<0)|(1<<1)|(1<<2)|(1<<3)); // Отключение WEAK PULL-UP ANSELA = 0; // Отключение аналоговой части }
Спойлер
Последний раз редактировалось SpeedFighter Пт дек 08, 2017 19:14:41, всего редактировалось 1 раз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения