Помогите с таймером
|
|
ddd | Дата: Вторник, 18.05.2010, 19:55 | Сообщение # 31 |
Новенький
Группа: Радиолюбитель
Сообщений: 4
Репутация: 0
Статус: Offline
| А какая требуется точность? Мне кажется при выдержках в несколько часов это не будет иметь никакого значения. Можно -ли схему для прокрутки в Протэусе, а то исходник на мой взгляд какой-то оригинальный?
|
|
| |
Катран | Дата: Вторник, 18.05.2010, 20:09 | Сообщение # 32 |
GOD
Группа: Администраторы
Сообщений: 1221
Репутация: 7801
Статус: Offline
| У меня в протеусе вроде не работало(нехвтатало ресурсов компьютера), я на реальное железо делал, комп не тот тогда был, что бы динамическую индикацию на нем крутить. А что с исходником не так?
|
|
| |
black7 | Дата: Вторник, 18.05.2010, 21:24 | Сообщение # 33 |
Новенький
Группа: Радиолюбитель
Сообщений: 7
Репутация: 0
Статус: Offline
| Здравствуйте, помогите мне встроить шим в таймер на Atmege8,. Мне нужно чтоб после нажатия кнопки старт включился Шим . и чтоб мощность можно было регулироватьв процентах с отдельной кнопки с расчета: Думал освободить 17 ножку атмеги(Oc2) и на ней сделать шим только не могу придумать как можно регулировать мощность помогите пожалусто….. схема
Сообщение отредактировал black7 - Вторник, 18.05.2010, 23:24 |
|
| |
Катран | Дата: Вторник, 18.05.2010, 21:36 | Сообщение # 34 |
GOD
Группа: Администраторы
Сообщений: 1221
Репутация: 7801
Статус: Offline
| А где исходник? И схему прикрепите увеличенную, а то я нажмаю - выкидывает на радикал сайт.
|
|
| |
black7 | Дата: Вторник, 18.05.2010, 22:00 | Сообщение # 35 |
Новенький
Группа: Радиолюбитель
Сообщений: 7
Репутация: 0
Статус: Offline
| исходник вот исходник и фаил протеуса Еще нужно добавить функцию , при изменение состояния на пине INT1 программа была в режиме кнопки стоп Можно сделать так: в обработчики прерывания поставить метку типа гоу ту и на место программы кнопки стоп?
Сообщение отредактировал black7 - Вторник, 18.05.2010, 22:12 |
|
| |
ddd | Дата: Вторник, 18.05.2010, 22:54 | Сообщение # 36 |
Новенький
Группа: Радиолюбитель
Сообщений: 4
Репутация: 0
Статус: Offline
| Катран, этоу Вас такие шутки? По коду у меня сплошные вопросы: void reserve_copy(void) { r_hours = hours; r_minuts = minuts; r_seconds = seconds; } void reserve_paste(void) { hours = r_hours; minuts = r_minuts; seconds = r_seconds; } Чтобы это значило? void main(void) { В основной функции видно только инициализацию!? // Включаем динамическую индикацию decoding(); TMR2ON = 1; TMR1ON = 1; while (1) { } Простите,как это вы ее включаете? И бесконечный цикл с пустым телом немного озадачивает. И как может все это работать?
|
|
| |
Катран | Дата: Среда, 19.05.2010, 08:58 | Сообщение # 37 |
GOD
Группа: Администраторы
Сообщений: 1221
Репутация: 7801
Статус: Offline
| Что значит шутки?! Всё работает, что не выходит?! Quote (ddd) Простите,как это вы ее включаете? И бесконечный цикл с пустым телом немного озадачивает. Почему озадачивает? Ну можешь всунуть в него какие то действия, что нравится - ну там помигать чем нибудь. У каждого свой стиль написания, тем более, он постоянно меняется, по крайней мере, на первых этапах программирования. А что мне в цикле делать? Code void reserve_copy(void) { r_hours = hours; r_minuts = minuts; r_seconds = seconds; } void reserve_paste(void) { hours = r_hours; minuts = r_minuts; seconds = r_seconds; } Там же выше написано, что резервная копия времени, что бы после окончания времени он вернулся в тоже место, где его установили. Прочитай техническое требование к программе и станет ясно.
|
|
| |
Катран | Дата: Среда, 19.05.2010, 09:08 | Сообщение # 38 |
GOD
Группа: Администраторы
Сообщений: 1221
Репутация: 7801
Статус: Offline
| black7, я не могу понять зачем для магнетрона ШИМ?
|
|
| |
black7 | Дата: Среда, 19.05.2010, 17:40 | Сообщение # 39 |
Новенький
Группа: Радиолюбитель
Сообщений: 7
Репутация: 0
Статус: Offline
| Quote (Катран) Профессионал я не могу понять зачем для магнетрона ШИМ? Катран, мне нужно собрать микроволновку , вот наткнулся на статью «таймер обратного отщета» очень понравилась ….. не смотря что я начинающий и практически не чего не понимаю в программировании код с коментами болие мения понятен…. Стал вопрос как управлять мощностью нагрузки (у меня магнетрон) мне известно(из диаграммы выше) что мощность магнетрона 800 ват это 100% мощности чтоб ие получить магнетрон нужно включить на 22 секунды(это 1 полный цикал), 70% мощности это 560 ват для этого магнетрон нужно включить 16 сек и 6 сек выключить и таким Макаром пока идет обратный отщет. Честно говоря «зачем шим» я просто думал что такой алгоритм можно только шимом реализовать, если можно по другому подскажите пожалуйста очень нужна помощь….
|
|
| |
Катран | Дата: Среда, 19.05.2010, 21:25 | Сообщение # 40 |
GOD
Группа: Администраторы
Сообщений: 1221
Репутация: 7801
Статус: Offline
| Мощность магнетрона в СВЧ печах не регулируется. Просто уменьшается время активности магнетрона. ШИМ не годится для таких малых интервалов времени. Здесь нужно программно управлять ним. Я могу только литературу подсказать и ошибки в программном коде показать, а вот написать программу - увы, нет на это у меня времени. В разделе литературы есть книги, http://cxema.at.ua/load/2 у меня на сервере много книг по контроллерам, правда сегодня сервер переношу на более мощный компьютер, завтра только работать будет, завтра и скорость вырасти с 1Мбита до 5ти должна. не обязательно писать на Си, можно на ассемблере, его освоить за неделю можно, причем книг по ассемблеру намного больше, хотя Си более гибкий, хотя встречаю очень много программистов, знающих Си, но они понятия не имею про ассемблер, но понимать его полезно.
|
|
| |
black7 | Дата: Среда, 19.05.2010, 22:24 | Сообщение # 41 |
Новенький
Группа: Радиолюбитель
Сообщений: 7
Репутация: 0
Статус: Offline
| спасибоза информацию ....я думал там шим((,буду думать .......
|
|
| |
Катран | Дата: Среда, 19.05.2010, 23:27 | Сообщение # 42 |
GOD
Группа: Администраторы
Сообщений: 1221
Репутация: 7801
Статус: Offline
| А что тут думать, ведь мощность выставляется дискретно: должно быть типа так: если выбрали мощность 800, то { постоянно включаем на всё время работы, пока не закончится время } если выбрали мощность 560, то { после каждых 16 секунд работы отключаем на 6, пока не закончится время } если выбрали мощность 320, то .... время должно работать на прерываниях по таймеру
|
|
| |
black7 | Дата: Воскресенье, 23.05.2010, 17:56 | Сообщение # 43 |
Новенький
Группа: Радиолюбитель
Сообщений: 7
Репутация: 0
Статус: Offline
| Quote (Катран) А что тут думать, ведь мощность выставляется дискретно: должно быть типа так: У меня получился такой код Code int OUT, cnt, mode ; // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) {
if (cnt==366) cnt; if (mode==1) { OUT=1; //тут оно всегда включено } if (mode==2) { if (cnt/15.2578125<16) { OUT=1; } else { PORTC.0 = OUT; } } if (mode==3) { if (cnt/15.2578125<10) { OUT=1; } else { PORTC.0 = OUT; } } if (mode==4) { if (cnt/15.2578125<6) { OUT=1; } else { PORTC.0 = OUT; } } cnt++; while (1) { if (PINC.1) mode=1;// выбор режима if (PINC.2) mode=2; if (PINC.3) mode=3; if (PINC.4) mode=4; };
} как мне привезать к таймеру ?
Сообщение отредактировал black7 - Воскресенье, 23.05.2010, 18:41 |
|
| |
Катран | Дата: Понедельник, 24.05.2010, 00:04 | Сообщение # 44 |
GOD
Группа: Администраторы
Сообщений: 1221
Репутация: 7801
Статус: Offline
| что такое cnt? и почему в строчке if (cnt/15.2578125<16) присутствует не целое число. Контроллеру это будет сложно посчитать - много времени занимать будет. И добавь комментарии, а то непонятно, что код означает. С кнопками тоже непонятно, в целом понял, но десятые убери. Впринципе идея правильная. Что бы привязать к таймеру нужно использовать таймер 1. Он 16разрядный. Для начала его нужно настроить. Потом работать с переменной TCNT1 - формировать с помощью его секундные задержки, т.е. переменная cnt должна увеличиваться по происшествию секунды, которую ты сформируешь в прерывании Например ты настраиваешь таймер на частоту 10кГц, для того, что бы получить 1с нужно, что бы таймер досчитывал до 10000, а потом сбрасывался. Выглядеть должно примерно так. Code void Прерывание по таймеру1(void) // имя зависит от компилятора { TCNT1 = 55536; // когда досчитает до 65536 - произойдет переполнение и вход в эту процедуру cnt++; // теперь переменная инкрементируется по истечении 1с }
|
|
| |
Павел | Дата: Суббота, 29.05.2010, 22:55 | Сообщение # 45 |
Новенький
Группа: Радиолюбитель
Сообщений: 1
Репутация: 0
Статус: Offline
| Всем доброго времени суток.У меня такой вопрос? Можно этот таймер применить к управлению светофора.Задача такая:при включении шести минутного таймера обратного отсчета загорается красный цвет,на пятой минуте загорается желтый в конце шестой зеленый.
|
|
| |