Есть светодиодное табло на меге32, которое периодически зависает, может проработать 2 дня, а может и час, исходников нет, поэтому программно исправить невозможно, но можно сбрасывать микру каждый час, два или ..., Нужна схемка для такого сброса, то есть, что бы она через определённый промежуток времени подавала ноль на 1-2 секунды, схема нужна чем проще-тем лучше, заранее спасибо.
Спасибо, то что искал, и пилить ничего не надо. ПС: Рано радовался, после отключения питания таймер сам не стартует, надо жать кнопку.... Ну можно для нажатия кнопки при старте ещё один мк допаять)))
Конкретнее ТЗ обрисуйте. На чем должна быть схема, нужны ли какие-то установки, индикация... Вот, например, на PIC12F629... Просто циклический таймер. ЧЧ часов реле включено, СС сек выключено. Пока реле включено мигает светодиод. СС задается при прошивке МК в EEPROM. Записывается в ячейку с номером 0x00 в hex формате. Например, 0xFE это 254 секунды. Если при прошивке в ячейку EEPROM ничего не записывалось (значение 0xFF) то СС = 3 сек. ЧЧ задается при прошивке МК в EEPROM. Записывается в ячейку с номером 0x01 в hex формате. Например, 0x0A это 10 часов. Значение часов не может быть больше 12 (0x0C). Если в ячейке 0x01 EEPROM значение больше 0x0C, то ЧЧ = 2 часа. ----- Во вложении схема, проект в Proteus, прошивка. Набросал за 10 минут, может где ошибся, но основу брал из рабочего, проверенного проекта. Если в принципе подходит - пишите что доработать.
int main (void) { DDRB = 1; // используем PB0 while(1) { uint16_t i; PORTB = 0; // низкий уровень на PB0 на 2 секунды _delay_ms(2000); PORTB = 1; // высокий уровень на PB0 на 1 час (3600 секунд) for(i=0; i<3600; i++) _delay_ms(1000); } }
держите. задействованы все свободные пины (PB0,PB1,PB2,PB3,PB4) - используйте любой. фьюзы заводские (внутренний RC 8 МГц/8). время высокого уровня примерно 1 час (нестабильность внутреннего RC + "обертка" цикла).
int main (void) { DDRB = 0x1F; // используем все PB0-PB4 while(1) { uint16_t i; PORTB = 0; // низкий уровень на 2 секунды _delay_ms(2000); PORTB = 0x1F; // высокий уровень на 1 час (3600 секунд) for(i=0; i<3600; i++) _delay_ms(1000); } }
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения