Суббота, 30.11.2024, 11:48
электроника
Форум Мой профиль
РегистрацияВход/Выход

Вы вошли как Гость · Группа "Гости"Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: SITH, Denis_K, Катран  
Помогите с таймером
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
Всем доброго времени суток.У меня такой вопрос? Можно этот таймер применить к управлению светофора.Задача такая:при включении шести минутного таймера обратного отсчета загорается красный цвет,на пятой минуте загорается желтый в конце шестой зеленый.
 
Поиск: