Страница 1 из 1
Помогите настроить TMR0 на Си
Добавлено: Пн июн 24, 2013 19:22:46
VHEMaster
Доброго всем времени суток! Пишу программу для темброблока, а нужен таймер для перехода в режим St-By
Вот что нужно..
Если переменная sleeptimerenable == 1 то что-бы каждую секунду sleeptime уменьшался на еденицу. А когда sleeptime == 0 то sleeptimerenable = 0 и stby = 1.. Помогите мне настроить таймер.. _XTAL_FREQ 8 MHz
И ещё, у меня TMR1 используется для приёма ИК комманд по RC-5
т.е.
Код: Выделить всё
............
#define _XTAL_FREQ 8000000
unsigned int sleeptime = 0;
bit sleeptimerenable = 0;
bit stby = 0;
............
............
void main(void)
{
........
........
INTEDG = 0;
TMR1IE = 1;
INTCON= = 0b11010000;
PEIE = 1;
INTE = 1;
GIE = 1;
........
........
}
void interrupt isr(void)
{
IR_RC5(); //приём ИК комманд
}
Помогите правильно оформить код
Re: Помогите настроить TMR0 на Си
Добавлено: Пн июн 24, 2013 20:32:21
Аlex
VHEMaster писал(а):Вот что нужно..
Если переменная sleeptimerenable == 1 то что-бы каждую секунду sleeptime уменьшался на еденицу. А когда sleeptime == 0 то sleeptimerenable = 0 и stby = 1..
Что-то не понятно, причём тут TMR0 ?
Код: Выделить всё
if(sleeptimerenable==1){
sleeptime--;
}
else{
sleeptimerenable=0;
stby=1;
}
По TMR0 -
http://www.microchip.ru/files/d-sheets-rus/pic16_11.pdf
Вся Русская дока -
http://www.microchip.ru/lit/?mid=1x0
Re: Помогите настроить TMR0 на Си
Добавлено: Вт июн 25, 2013 09:50:13
VHEMaster
Ясно) А как оформить этот код я знал, но всё равно спасибо) И ещё вопрос. Куда этот код вставить? в interrupt? И я не вижу кода задержки для ежесекундного выполнения..
Вам нужно прочитать Правила форума.
http://radiokot.ru/forum/viewtopic.php?f=19&t=6538
Нарушение Правил форума п. 2.7
aen
Re: Помогите настроить TMR0 на Си
Добавлено: Вт июн 25, 2013 11:24:23
VHEMaster
На счёт правил - понял, виноват.
Re: Помогите настроить TMR0 на Си
Добавлено: Вт июн 25, 2013 22:35:22
Аlex
Куда этот код вставить? в interrupt?
Туда, где Вы хотите уменьшать
sleeptime, я так полагаю...

Re: Помогите настроить TMR0 на Си
Добавлено: Вт июн 25, 2013 22:56:35
VHEMaster
Аlex писал(а):где Вы хотите уменьшать
sleeptime, я так полагаю...

Прошу прощения, но я так и не понял

Мне его нужно уменьшать паралельно с большим кодом...
т.е. таймер будет не точным

Мне это не нужно

можно ли вставить этот код в interrupt?
Re: Помогите настроить TMR0 на Си
Добавлено: Ср июн 26, 2013 09:45:14
urry
кажется, я понял метания ТС.
У него есть готовый рабочий код, в который нужно добавить 1 функцию, не сломав остальное.
Обработка прерывания у него написано некорректно с учетом того, что прерывание будет только одно, вот так
Код: Выделить всё
void interrupt isr(void)
{
IR_RC5(); //приём ИК комманд
}
У 16 пиков один вектор на все прерывания, поэтому корректнее добавить
Код: Выделить всё
void interrupt isr(void)
{
if (TMR1IF && TMR1IE)
{
TMR1IF=0;
IR_RC5(); //приём ИК комманд
}
if (T0IF && T0IE)
{
T0IF=0;
// Ваш код
}
}
Re: Помогите настроить TMR0 на Си
Добавлено: Пт июн 28, 2013 11:08:05
VHEMaster
urry писал(а):
Код: Выделить всё
void interrupt isr(void)
{
if (TMR1IF && TMR1IE)
{
TMR1IF=0;
IR_RC5(); //приём ИК комманд
}
if (T0IF && T0IE)
{
T0IF=0;
// Ваш код
}
}
Спасибо большое) Помогло) Теперь таймер обратного отсчёта работает на ура))