Перейти к содержанию

Поиск сообщества

Показаны результаты для тегов 'Таймеры'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Автомобильная электроника
    • Питание
    • Ремонт
    • Системы охраны и наблюдения. Личная безопасность
    • Роботы и модели на ДУ-управлении
    • Световые эффекты и LED
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Металлоискатели
    • Автоматика
    • Электрика
    • Промышленная электроника
    • Измерительная техника
    • Мастерская радиолюбителя
    • КВ и УКВ радиосвязь
    • Радиопередатчики
    • Сотовая связь
    • Спутниковое ТВ
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Схемотехника для профессионалов
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • Arduino, ESP32, ESP8266, Raspberry Pi
    • AVR
    • STM32
    • PIC
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Курилка
    • Сайт Паяльник и форум
    • FAQ (Архив)
    • Технический английский (English)
    • Личные блоги
    • Наши проекты для Android и Web
    • Корзина
    • Конкурсы сайта с призами
    • Вопросы с VK
  • Переделки ATX->ЛБП
  • Переделки разные темы
  • Киловольты юмора Юмор в youtube

Блоги

  • Твори, выдумывай, пробуй.
  • fant's блог
  • Ток покоя
  • Где купить велпатасвир, epclusa, velpanat, velasof, софосбувир в России по лучшей цене.
  • Китайские бренды видеокамер
  • Создание Маленькой Мастерской
  • Блог администрации
  • STEN50's блог
  • Изучение, наладка, исследование
  • MiSol62's блог
  • короткие записки по ходу дела
  • Программирование AVR и PIC блог
  • Стабилизированный выпрямитель тока ТЕС 12-3-НТ
  • Блог getshket
  • ТНПА
  • welder's блог
  • blog cheloveka loshadi
  • OPeX3's блог
  • Подводная робототехника
  • Сабвуфер и акустика.
  • Радиоуправляемая машина
  • Консультация психолога сексолога онлайн, психолог онлайн
  • Nokian блог
  • Оповещения Dermabellix Scam !! Не покупайте это !!!
  • Cheerful Boss' блог
  • Cheerful Boss' блог
  • VLAD1996B's блог
  • "Коллективное увеличение продаж"
  • Dudok's блог
  • "Коллективное увеличение продаж"
  • Goluboglazyi's блог
  • Прибор определяющий электролитический конденсатор на работоспособность.
  • Mosfet@'s блог
  • mazzi's блог
  • Лучшие компьютерные игры 2017
  • Marchenkokerya's блог
  • Заметки начинаущего аудиофила
  • Почти бесполезные проги
  • Светлый блог.
  • дядюшка Филин's блог
  • Дневники нуба
  • satyrn's блог
  • Люк. В погреб.
  • Фильм Дом Солнца
  • Светодиодная лента B-LED 2835-120 W белая негерметичная
  • Само-Реплицируещиеся Производственные Системы
  • Блог от Eknous
  • РВС's блог
  • Den_R's blog
  • РВС's блог
  • Чтото крутое и про криворукость
  • ekadom's блог
  • Проектирование любых чертежей
  • Lisovic's блог
  • Блог уже не юного радиогубителя
  • денди
  • eHouse
  • zaregan's блог
  • Схемотехника УНЧ с низковольтным питанием на примере приёмников фирмы Grundig
  • То, что в руки попало.
  • Блок питания водородного генератора и все что с ним связано
  • slava_va@mail.ru's блог
  • Блог alex123al97
  • slava_va@mail.ru's блог
  • параленое соединение КРЕНок или как сделать стабилизатор напряжения 24-12в
  • Свободная генерация Андрея Мельниченко
  • реобас
  • Модернизации системы впрыска на 555
  • помощь
  • Копии схем и печатных плат устройств попавшие ко мне
  • MBM75's блог
  • Буду
  • lagutai's блог
  • Мои проекты.
  • lagutai's блог
  • Трудовик
  • vOVK@'s блог
  • токарь-радиолюбитель
  • azlk3000's блог
  • Коллизия сингулярности
  • SmallAlex's блог
  • Вопрос по Цифровому усилителю мощности звука 2x12 Вт YDA138-E
  • bebulo's блог
  • Простейший макет станка термо-вакуумной формовки
  • Блог им. pryanic
  • peratronika
  • Zer's блог
  • MEDBEDb's
  • Гнездо кукушки
  • hiMiческий блог
  • luna_kamen's блог
  • Изучаем USI на основе сверхэкономичного прототипа
  • Алекс-Юстасу
  • SUBWOOFER.RU
  • kot sansher's блог
  • Поделки стареющего пионера
  • доброжелатель2's блог
  • Grig96. Полезные заметки.
  • Attiny 0-ой и 1-ой серии (Attiny817, 1614 и прочие)
  • pavlo's блог
  • MSP430FR
  • viper2's блог
  • Моя Электро Чинильня
  • Selyk's блог
  • VoltServis.ru
  • kpush's блог
  • OM3 на новых платах.
  • конни's блог
  • Электронный экстазёр "MASHKA".
  • ptimai's блог
  • noc functionalities
  • Sun kapitane's blog
  • ODEON AV-500
  • Sun kapitane's blog
  • Логика на транзисторах,диодах, счетние тригери на транзисторах
  • AleksandrBulchuck's блог
  • Качественные окна от производителя
  • KRALEX's блог
  • Javaman's projects
  • SeVeR36's блог
  • 3232
  • Пять копеек.
  • Az@t's блог
  • Индукционный нагрев
  • Схемы разных устройств
  • Кардшаринг SAT ТВ блог
  • PENTAGRID SAYS
  • Ещо раз о "Кощее 5И"
  • Игровые автоматы на официальном сайте
  • коллекционер
  • дямон's блог
  • Ламповый усилитель и акустика для озвучки семейных мероприятий
  • дямон's блог
  • tiosmutoutrup1971
  • Светомузыкальная установка для новачков
  • Лучшие игры для ПК скачать бесплатно
  • sqait's блог
  • Блокнотик
  • Gubernator's блог
  • Записки электрика
  • Полстакана
  • Vrednyuka
  • Интегральные микросхемы
  • grigorik's блог
  • Интегральные микросхемы
  • VMWare удобство и безопастность
  • Профсоюз обычных пользователей
  • rtfcnf's блог
  • Гидроэнергетика в России: отечественные гидроэлектростанции, типы и характеристики
  • VMWare удобство и безопастность
  • Лайфхаки от Кати
  • Kinh chong anh sang xanh gia re
  • ukabumaga's блог
  • АО "Диполь Технологии"
  • artos5's блог
  • блог
  • Kraftwerk's блог
  • 1
  • Kraftwerk's блог
  • Как выбрать точечный светильник?
  • мастерская ky3ne4ik'а
  • Работа с микроконтроллером Atmega8
  • Aronsky
  • Игорь Камский
  • Диммеры
  • 5В = 1,5+3
  • vitiv' блог
  • Ремонт цифровой панели прибора тойоты марк 100. Замена транзистора 36 ( SOT- 23 )PNP
  • Все СРО России
  • 300writers
  • Металлоискатель Tracker FM-1D3
  • Былое
  • Создание монстра "Blaster 8920"
  • 2Smart Cloud Blog
  • EmmGold's блог
  • 2Smart Cloud Blog
  • ivan15961596's блог
  • Кумир у-001
  • ivan15961596's блог
  • My blog
  • Интернет радио в машину
  • SamON
  • Помогите люди добрые
  • AI
  • Помогите подключить маяк 231 стерео.
  • Гаусс-пушки
  • Название
  • 7400's блог
  • Как я собирал свой первый импульсный источник питания
  • Віталік Приходько_130349's блог
  • Lithium ECAD - российская САПР печатных плат
  • Евгений Малюта's блог
  • ПИшу свои мысли
  • werekpro
  • Venera Electronica
  • afurgon's блог
  • Выбросьте это в парашу!
  • odaplus' блог
  • Zvik's блог
  • Smart overload protection power amplifier «Zita (Z) ThermalTrak™»
  • радиоэлектоника
  • BoBka777's блог
  • МиУЗР - Модернизация и Усовершенствование Звуковой Радиотехники .
  • aleksey9900's блог
  • Лабораторная блок питания
  • Нашел статью о пайке проводов к светодиодов
  • Китайский городовой
  • Костик0's блог
  • УФ лампа для маникюра SK-818
  • 8 Contrasts Between Web Servers and Application Servers
  • Конденсатор
  • Новости, обзоры и другая полезная информация от ИМ "Радиодар"
  • Цветомузыка
  • OPeX3's блог
  • Sem2012's блог
  • это не хлам – это часть моей жизни
  • Контроллер на базе ПК (OS Win LTSC)
  • OdiS' блог
  • Хитрости строителя
  • aleksfil's блог
  • Color Preamp - предусилитель на лампах 12AU7
  • Проблема с зарядкой литиевого аккумулятора для шуруповерта 21 вольт
  • EmmGold's блог; AVR
  • Микроэлектроника
  • З
  • CH32V
  • Блог Плотникова Ильи
  • Бесплатные радиодетали с Алиэкспресс
  • Повышение качества и снижение временных затрат при испытаниях электронных компонентов с помощью отечественного испытательного оборудования
  • Источники питания MEAN WELL
  • Жизнь и рыбалка
  • yureika's блог
  • Глушитель спутникогого интернета
  • Всякая всячина
  • Для начинающих
  • Ignite your senses with the grace and allure of female escorts near Laguna Niguel
  • Fumitox's блог
  • Наш-RXT6 топ-10 на январь 2023: Лучшие сайты онлайн казино в России
  • Лицензионные казино онлайн в 2024 году на реальные деньги
  • Самоделки блог
  • Домашняя автоматика
  • Интересное и полезное
  • Ремонт Амфитон 35у-101с
  • ульян's блог
  • Свет в грузовой газели
  • Блок питания 0-12В для начинающих
  • Dimko's блог
  • Иван Самец's блог
  • SolomonVR's блог
  • gendzz's блог
  • fleh138's блог
  • Электроника forever!
  • aleksejhozhenets' блог
  • aleksejhozhenets' блог
  • diserver блог
  • aleksey290476 блог
  • ВАРГ's блог
  • Люстра Чижевского
  • wanes101's блог
  • voldemar2009's блог
  • Jana's блог
  • Jana's блог
  • Рена Искужин's блог
  • abduraxman7's блог
  • Kuzumba's блог
  • Самопальник
  • заработок через интернет на запчасти!!!
  • electric.kiev's блог
  • lolo's блог
  • leravalera's блог
  • ideomatic's блог
  • приглашаем на работу инженера-радиоэлектронщика
  • FREEMAN_77's блог
  • Блог автоэлектрика
  • Блог начинающего электронщика
  • Dersu's блог
  • Электроэнергия и её экономия!
  • Электроэнергия и её экономия!
  • Семён Ковалёв's блог
  • piligrim-666's блог
  • помогите с партотивной калонкой
  • помогите с партотивной калонкой
  • Музыка в стене.
  • m-a-r-i-k-a's блог
  • cosmos44's блог
  • oyama14's блог
  • блог Виталика!
  • ciornii's блог
  • Великий и Ужастный блог
  • Denis__Ricov's блог
  • Universal12's блог
  • Sprut's блог
  • Alexeyslav's блог
  • cosmosemo's блог
  • Заметки радиолюбителя
  • Falconist. Мемуары
  • Блог MillyVolt
  • усилитель импульсов
  • Panasonic sa-ak 18
  • Простое радиоуправление из того, что было.
  • 35house
  • Блог Радиочайника
  • Блохи iiiytnik'a
  • Хороший сервис- Бяка
  • Аудиолаборатория "Философия Звука"
  • ОколоCADовое
  • Блог KVLADS
  • Короп блог
  • Автоматизация котла Protherm MTV
  • Бложиг Касянича
  • Обо всём
  • Эксперимент
  • No electronics
  • ПРИРОДА СВЕТА и ЕГО ВОЗМОЖНОСТИ
  • Генератор на xr2206
  • HTPOWLASER
  • Когда-то были очень популярны у радиолюбителей
  • AVR - микроконтроллеры
  • Микроконтроллер
  • Самодельный автосимулятор
  • Интернет-магазин керамической плитки «Боярская Плитка»
  • Разработка электронных метрических мишеней IPSC для мягкой пневматики (страйкбол)
  • ,

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


Skype


ICQ


Интересы


Город


Сфера радиоэлектроники


Оборудование

Найдено: 4 результата

  1. Имеется две готовых платы таймера FC-31 на IC 4541. Одну плату использую в штатной схеме включения, во второй - контакты 1-2 разъема J6 замкнуты постоянно, 5-6 перемычка удалена, входной сигнал подаю на контакт 5 Входной сигнал имеет два состояния - 0 и 12 В, подаю одновременно на две платы. Алгоритм работы схемы такой, что реле на выходе схемы срабатывает по сработке оптрона, остается включенным пока оптрон включен, а после выключения оптрона - реле остается замкунутым на время установки самого таймера. Вопрос: Как доработать схему, чтобы по фронту входного сигнала запускался один таймер, а по спаду - другой? PS. понимаю, что нужно поставить разделительные конденсаторы, но не хватает понимания, куда конкретно и в какой обвязке. FC-31 SCH_Relay Board description.pdf FC-31 SCH_Relay Board.pdf
  2. Привет, никак не могу разобраться с таймером в режиме сброса по внешнему событию, сам сброс работает, таймер сбрасывается, вопрос вот в чём, могу ли я в этом режиме использовать захват на оставшихся каналах? т.е. по внешнему событию сбрасывать таймер, и потом внешними событиями записывать сколько он протикал с момента сброса? STM32F429ZI СИ + VisualGDB + HAL + Cube
  3. Всем доброго времени суток. Я реальный нуб в ATMEGA. Могу более-менее понять чужой код и из кусков сделать целое. Вопрос такой: реально ли на ATMEGA8 сделать 2 ШИМ (таймер 1 и2) и внутреннее прерывание (по таймеру 0) для чтения данных с DS18B20 на 8Мгц чтобы еще осталось на опрос кнопок и небольшую логику? Я выложу пример кода. По отдельность: ШИМ, прерывания, логика, запись в ЕПРОМ работает. Собираю все вместе - не работает. Пробовал в Протеусе, тоже глючит, да и протеус тормозит. Может кто чего подскажет. //#define F_CPU 8000000UL // устанавливаем рабочую частоту контроллера #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/eeprom.h> #include "ds18x20.h" #include "onewire.h" #define MAXSENSORS 1 unsigned int tempint = 0; // переменная для целого значения температуры unsigned int subzero = 0; // переменная отрицательных значений температуры unsigned int clock = 0; //задержка для опроса датчика температуры unsigned int termo_error = 0; //флаг ошибки термодатчика unsigned char regim, R1_SHIBER, R1_VENT, R2_SHIBER, R2_VENT, R3_SHIBER, R3_VENT; //переменные режимов работы volatile char press = 0, pr = 0, pr1 = 0, set = 0; //дополнительные переменные для кнопок #define SHIBER_PB 1 //шибер подачи топлива #define SHIBER_PWM OCR1A #define VENT_PB 2 //вентилятор подачи воздуха #define VENT_PWM OCR1B #define LED1_ON PORTD |= _BV(PD3) // светодиод режим 1 #define LED1_OFF PORTD &= ~_BV(PD3) #define LED2_ON PORTD |= _BV(PD4) // светодиод режим 2 #define LED2_OFF PORTD &= ~_BV(PD4) #define LED3_ON PORTD |= _BV(PD6) // светодиод режим 3 #define LED3_OFF PORTD &= ~_BV(PD6) #define LED4_ON PORTD |= _BV(PD7) // светодиод 4 программирование #define LED4_OFF PORTD &= ~_BV(PD7) #define BUT_M PIND & (1 << PD1) // кнопка MENU #define BUT_U PIND & (1 << PD2) // кнопка UP #define BUT_D PIND & (1 << PD0) // кнопка DOWN unsigned char eep1 EEMEM; // режим работы unsigned char eep2 EEMEM; // режим 1 ШИМ вентилятор unsigned char eep3 EEMEM; //режим 1 ШИМ шибер unsigned char eep4 EEMEM; // режим 2 ШИМ вентилятор unsigned char eep5 EEMEM; // режим 2 ШИМ шибер unsigned char eep6 EEMEM; // режим 3 ШИМ вентилятор unsigned char eep7 EEMEM; // режим 3 ШИМ шибер unsigned char eep8 EEMEM; // флаг первого запуска uint8_t Temperature, szero; //-255 uint8_t nSensors, j; uint8_t cel_frac_bits; uint8_t gSensorIDs[MAXSENSORS][OW_ROMCODE_SIZE]; uint8_t search_sensors(void) // поиск DS18B20 { uint8_t i; uint8_t id[OW_ROMCODE_SIZE]; uint8_t diff, nSensors; nSensors = 0; for( diff = OW_SEARCH_FIRST; diff != OW_LAST_DEVICE && nSensors < MAXSENSORS ; ) { DS18X20_find_sensor( &diff, &id[0] ); if( diff == OW_PRESENCE_ERR ) { Temperature = 255; szero = 1; break; } if( diff == OW_DATA_ERR ) { Temperature = 255; szero = 1; break; } for (i=0; i<OW_ROMCODE_SIZE; i++) gSensorIDs[nSensors][i]=id[i]; nSensors++; } return nSensors; } void get_temp(int sensor){ // получаем температуру с датчиков DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL); DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL); j = gSensorIDs[0][sensor]; // family-code for conversion-routine if (DS18X20_read_meas_single(j, &szero, &Temperature, &cel_frac_bits) != DS18X20_OK) { //если не прочиталось то -255 Temperature = 255; szero = 1; } if (DS18X20_read_meas_single(j, &szero, &Temperature, &cel_frac_bits) != DS18X20_OK) { //если не прочиталось то -255 Temperature = 255; szero = 1; } tempint=(int)Temperature; subzero=(int)szero; } void pin_init(void) { //инициализация портов ШИМ DDRB |= (1<<SHIBER_PB) | (1<<VENT_PB); PORTB &= ~((1<<SHIBER_PB) | (1<<VENT_PB)); } void timer0_init(void) { //инициализация таймера для термодатчика TCCR0 |= (1<<CS00); TIMSK |= ( 1 << TOIE0); TCNT0 = 0xFF; } void timer1_init(void) { //инициализация таймера ШИМ шибера TCCR1A |= (1 << COM1A1) | (1 << COM1B1) | (1 << WGM11); TCCR1B |= (1 << WGM13) | (1 << WGM12) | (1 << CS10); TCNT1 = 0x00; ICR1 = 0xFF; OCR1A = 0x00; OCR1B = 0x00; } void timer2_init(void) { //инициализация таймера ШИМ вентилятора TCCR2 |= (1 << COM21) | (1 << WGM21) | (1 << WGM20) | (1 << CS20); TCNT2 = 0x00; OCR2 = 0x00; } ISR(TIMER0_OVF_vect){ //прерывание таймера 0 для термодатчика if (clock != 4294967295){_delay_us(50);clock++;}else{get_temp(0);clock=0;} } //***************** обработка нажатия кнопок ********************** void buttons(){ if(~BUT_U){if(set == 0)pr++; // кнопка UP if(pr == 10){ // долгое нажатие } _delay_ms(100); }else{ if(pr >= 1 && pr < 10){ // короткое нажатие regim++; if (regim>3){regim=0;} eeprom_write_byte(&eep1, regim); // сохранение настройки в eeprom set = 0; pr = 0; } pr = 0; } if(~BUT_D){if(set == 0)pr1++; // кнопка DOWN if(pr1 == 10){ // длинное нажатие } _delay_ms(100); }else{ if(pr1 >= 1 && pr1 < 10){ // короткое нажатие. //set = 20; regim--; if (regim<0){regim=3;} eeprom_write_byte(&eep1, regim); // сохранение настройки в eeprom _delay_ms(100); set = 0; pr1 = 0; } pr1 = 0; } if(~BUT_M){ // кнопка MENU press++; if(press == 1 && set != 0){set++;} // переход по настройкам if(press >= 100 && set == 0){set = 1; _delay_ms(200);} // ход в настройки if(set == 1) eeprom_write_byte(&eep2, R1_VENT); if(set == 2) eeprom_write_byte(&eep3, R1_SHIBER); if(set == 3) eeprom_write_byte(&eep4, R2_VENT); if(set == 4) eeprom_write_byte(&eep5, R2_SHIBER); if(set == 5) eeprom_write_byte(&eep6, R3_VENT); if(set == 6) eeprom_write_byte(&eep7, R3_SHIBER); if(set > 6){ _delay_ms(100); set = 0; press = 0;} // если включена настройка даты, }else{ if(set == 0 && press >= 1){ // если не вошли в настройки regim++; if (regim>3){regim=0;} eeprom_write_byte(&eep1, regim); // сохранение настройки в eeprom } press = 0; } } //*****************режим настроек******************** void settings(){ //визуальное подтверждение настроек if(press >= 1 && set == 1) { LED1_ON; LED2_OFF; LED3_OFF; LED4_ON; SHIBER_PWM = R1_VENT;} //ШИМ шибер 0-255 if(press >= 1 && set == 2) { LED1_ON; LED2_OFF; LED3_OFF; LED4_ON; VENT_PWM = R1_SHIBER;} //ШИМ вентилятор 0-255 if(press >= 1 && set == 3) { LED1_OFF; LED2_ON; LED3_OFF; LED4_ON; SHIBER_PWM = R2_VENT;} //ШИМ шибер 0-255 if(press >= 1 && set == 4) { LED1_OFF; LED2_ON; LED3_OFF; LED4_ON; VENT_PWM = R2_SHIBER;} //ШИМ вентилятор 0-255 if(press >= 1 && set == 5) { LED1_OFF; LED2_OFF; LED3_ON; LED4_ON; SHIBER_PWM = R3_VENT;} //ШИМ шибер 0-255 if(press >= 1 && set == 6) { LED1_OFF; LED2_OFF; LED3_ON; LED4_ON; VENT_PWM = R3_SHIBER;} //ШИМ вентилятор 0-255 switch(set) // включена настройка { case 1: // настройка R1_VENT if(~BUT_U){R1_VENT++; if(R1_VENT > 254) R1_VENT = 0; _delay_ms(100);} if(~BUT_D){R1_VENT--; if((~BUT_D) && R1_VENT == 0) R1_VENT = 254; _delay_ms(100);} break; case 2: // настройка R1_SHIBER if(~BUT_U){R1_SHIBER++; if(R1_SHIBER > 254) R1_SHIBER = 0; _delay_ms(100);} if(~BUT_D){R1_SHIBER--; if((~BUT_D) && R1_SHIBER == 0) R1_SHIBER = 254; _delay_ms(100);} break; case 3: // настройка R2_VENT if(~BUT_U){R2_VENT++; if(R2_VENT > 254) R2_VENT = 0; _delay_ms(100);} if(~BUT_D){R2_VENT--; if((~BUT_D) && R2_VENT == 0) R2_VENT = 254; _delay_ms(100);} break; case 4: // настройка R2_SHIBER if(~BUT_U){R2_SHIBER++; if(R2_SHIBER > 254) R2_SHIBER = 0; _delay_ms(100);} if(~BUT_D){R2_SHIBER--; if((~BUT_D) && R2_SHIBER == 0) R2_SHIBER = 254; _delay_ms(100);} break; case 5: // настройка R3_VENT if(~BUT_U){R3_VENT++; if(R3_VENT > 254) R3_VENT = 0; _delay_ms(100);} if(~BUT_D){R3_VENT--; if((~BUT_D) && R3_VENT == 0) R3_VENT = 254; _delay_ms(100);} break; case 6: // настройка R3_SHIBER if(~BUT_U){R3_SHIBER++; if(R3_SHIBER > 254) R3_SHIBER = 0; _delay_ms(100);} if(~BUT_D){R3_SHIBER--; if((~BUT_D) && R3_SHIBER == 0) R3_SHIBER = 254; _delay_ms(100);} break; } } int main(){ /*******************************настройка переферии******************************/ cli(); ow_set_bus(&PIND, &PORTD, &DDRD, PD5); // иництализация протокола 1-wire nSensors = search_sensors(); // поиск датчиков DS18B20 DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL); //включаем преобразование температуры pin_init(); //timer0_init(); timer1_init(); timer2_init(); _delay_ms(5); if(eeprom_read_byte(&eep8) != 1){ // читаем eeprom, если там мусор (первый запуск), пишем свои данные eeprom_write_byte(&eep1, 0); // режим работы eeprom_write_byte(&eep2, 150); // режим 1 ШИМ вентилятор eeprom_write_byte(&eep3, 100); //режим 1 ШИМ шибер eeprom_write_byte(&eep4, 200); //режим 2 ШИМ вентилятор eeprom_write_byte(&eep5, 150); //режим 2 ШИМ шибер eeprom_write_byte(&eep6, 230); //режим 3 ШИМ вентилятор eeprom_write_byte(&eep7, 200); //режим 3 ШИМ шибер eeprom_write_byte(&eep8, 1); // флаг первого запуска } //читаем настройки из памяти regim = eeprom_read_byte(&eep1); // читаем режим работы из eeprom R1_VENT = eeprom_read_byte(&eep2); // читаем режим 1 ШИМ вентилятор из eeprom R1_SHIBER = eeprom_read_byte(&eep3); //читаем режим 1 ШИМ шибер R2_VENT = eeprom_read_byte(&eep4); //читаем режим 2 ШИМ вентилятор R1_SHIBER = eeprom_read_byte(&eep5); //читаем режим 2 ШИМ шибер R3_VENT = eeprom_read_byte(&eep6); //читаем режим 3 ШИМ вентилятор R1_SHIBER = eeprom_read_byte(&eep7); //читаем режим 3 ШИМ шибер sei(); _delay_ms(5); /**********************************инициализация ШИМ*************************************/ while(1){ //if (tempint=255) {LED1_ON;LED2_OFF;LED3_ON;termo_error=1;} else {termo_error=0;}//выводим код ошибки датчика темппературы buttons();//обработик нажатия кнопок if (termo_error == 0){//блокировка по термодатчику if(set == 0) { //нормальный режим работы if (regim == 0){ //режим работы 0 LED1_OFF; LED2_OFF; LED3_OFF; LED4_OFF; SHIBER_PWM = 0; //ШИМ шибер 0-255 VENT_PWM = 0; //ШИМ вентилятор 0-255 } if (regim == 1){ //режим работы 1 LED1_ON; LED2_OFF; LED3_OFF; LED4_OFF; VENT_PWM = R1_VENT; //ШИМ вентилятор 0-255 if (tempint >=40) { //блокировка по температуре SHIBER_PWM = 0; //ШИМ шибер 0-255 }else{ SHIBER_PWM = R1_SHIBER; //ШИМ шибер 0-255 } } if (regim == 2){ //режим работы 2 LED1_OFF; LED2_ON; LED3_OFF; LED4_OFF; VENT_PWM = R2_VENT; //ШИМ вентилятор 0-255 if (tempint >=60) { //блокировка по температуре SHIBER_PWM = 0; //ШИМ шибер 0-255 }else{ SHIBER_PWM = R2_SHIBER; //ШИМ шибер 0-255 } } if (regim == 3){ //режим работы 3 LED1_OFF; LED2_OFF; LED3_ON; LED4_OFF; VENT_PWM = R3_VENT; //ШИМ вентилятор 0-255 if (tempint >=80) { //блокировка по температуре SHIBER_PWM = 0; //ШИМ шибер 0-255 }else{ SHIBER_PWM = R3_SHIBER; //ШИМ шибер 0-255 } } } }else{ SHIBER_PWM=0; VENT_PWM=0; } if(set != 0) settings();//вход в настройки } //return 0; }
  4. Здравствуйте. Есть желание делать прошивки более-менее грамотно. Чтобы не изобретать велосипедов хотелось бы увидеть советы, может быть ссылки на к-либо статьи. Я начал делать таймер для водяного насоса, вот на этом подопытном кролике и будет конкретика. Что собираюсь в него впихнуть и зачем: 1. Выход на одно реле. Оно и будет управлять насосом (~240 Вт.) 2. Дисплей - 2 модуля, каждый из 3х 8ми сегментных цифр, внутри модуля соединены для динамической индикации, т.е. 11ти ногие. Показывать будет время в часах/мин/сек ну и закорючки для индикации режимов. 3. Клавиатура - матрица 3*4. Настройка таймера/запуск/остановка. 4. Пищалка - динамик 8 Ом. Для звуковых сигналов о состоянии и при настройке таймера. 5. [Датчик тока/напряжения] его может быть и не стану делать, назначение - косвенно определять количество перекачанной воды, определять отсутствие воды в скважине. Плата готова уже, МК выбран 16LF1823 (на глазок, т.к. они уже есть и задача вроде как не сложная). Дисплей тоже готов и проверян средним пальцем левой ноги )) состоит из ключа подачи питания, 3х микросхем (8 D-триггеров каждая), из которых получился длинный сдвиговый регистр, ну и самих цифр, о которых уже написал. Получилось 3 входа: Power ON, Clk, Data, ну и питание + - . Планируется 4 программы работы: 1)-бесконечная работа с перерывами на восстановление скважины; 2)-30л; 3)-10л; 4)-по времени с клавиатуры. 2 и 3 можно настроить с клавиатуры, вход в режим настройки - долгим удержанием кнопки "OK", настройку можно проводить и в режиме, когда уже идёт перекачка. Запуск 2 коротким нажатием кнопки "отмена", 3 - кнопки "ОК". Запуск по времени просто вводом цифр, перед запуском анализ - если <10 сек, то это не секунды, а минуты. В процессе перекачки звуковые сигналы. После запуска перекачки дисплей гаснет по истечении некоторого времени, для включения - нажать любую кнопку из некоторой группы. По истечении времени перекачки - пикалка звуковой сигнал в теч. некоторого времени, затем выключение в спящий режим. Собираюсь задействовать DAC для пищалки (синусоиду слушать приятнее, чем меандр имхо), для дисплея - SPI, для задержек всяких разных - аппаратный таймер, если будет не лень, хватит ресурсов и вообще звёзды сойдутся, то может ещё ADC понадобится. Получается будут параллельно выполняться функции: 1. опрос клавиатуры 2. индикация 3. звук 4. расчёт оставшегося времени, либо ожидание запуска Делать собираюсь на С с компилятором XC8. Вопрос с чего нАчать. Ну решил начать с алгоритмма, понял что нужны будут отрезки времени со стабильной длительностью/периодичностью, и для отсчёта самих интервалов работы насоса и для опроса клавиатуры и для звука и для дисплея. Посоветуйте где что почитать, чтобы отстойный код не получился. Сейчас есть мысль что понадобится делать программные таймеры и возможно будет желательно конечные автоматы использовать, о которых почти ничего не знаю. По программным таймерам нашёл статью http://chipmk.ru/index.php/spisok-statej/24-uchimsya-programmirovat/120-programmnye-tajmery-na-assemblere, но она на асме, зато показалась хорошей. Есть разные и статьи и литература для начинающих, но там обычно как диодиком помигать, что такое МК и т.п., как правильно делать с точки зрения ресурсов МК, возможности корректировки кода в будущем, добавлении нового функционала мало где встречается, поэтому и нужны советы. Сейчас вопросы - не маловато ли ресурсов у выбранного МК для моих хотелок, как делать программные таймеры и почему они работают с точной периодичностью независимо от основной программы, действительно ли мне нужны конечные автоматы. В общем то разбираться планирую как можно больше самостоятельно, но просьба указать направление, в котором надо самопнуться.
×
×
  • Создать...