Помогите настроить TMR0 на Си

Поклонники продукции Microchip Technology Inc тусуются тут.
Закрыто
Аватара пользователя
VHEMaster
Потрогал лапой паяльник
Сообщения: 374
Зарегистрирован: Сб июл 14, 2012 09:20:09
Откуда: Украина, город Полтава

Помогите настроить TMR0 на Си

Сообщение 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(); //приём ИК комманд
}
Помогите правильно оформить код
Всем канифоли :)
https://vk.com/maks_naumchuk
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Помогите настроить TMR0 на Си

Сообщение Аlex »

VHEMaster писал(а):Вот что нужно..

Если переменная sleeptimerenable == 1 то что-бы каждую секунду sleeptime уменьшался на еденицу. А когда sleeptime == 0 то sleeptimerenable = 0 и stby = 1..
Что-то не понятно, причём тут TMR0 ? :roll:

Код: Выделить всё

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
Реклама
Аватара пользователя
VHEMaster
Потрогал лапой паяльник
Сообщения: 374
Зарегистрирован: Сб июл 14, 2012 09:20:09
Откуда: Украина, город Полтава

Re: Помогите настроить TMR0 на Си

Сообщение VHEMaster »

Аlex писал(а):
VHEMaster писал(а):Вот что нужно..

Если переменная sleeptimerenable == 1 то что-бы каждую секунду sleeptime уменьшался на еденицу. А когда sleeptime == 0 то sleeptimerenable = 0 и stby = 1..
Что-то не понятно, причём тут TMR0 ? :roll:

Код: Выделить всё

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

Ясно) А как оформить этот код я знал, но всё равно спасибо) И ещё вопрос. Куда этот код вставить? в interrupt? И я не вижу кода задержки для ежесекундного выполнения..




Вам нужно прочитать Правила форума.
http://radiokot.ru/forum/viewtopic.php?f=19&t=6538
Нарушение Правил форума п. 2.7

aen
Всем канифоли :)
https://vk.com/maks_naumchuk
Аватара пользователя
VHEMaster
Потрогал лапой паяльник
Сообщения: 374
Зарегистрирован: Сб июл 14, 2012 09:20:09
Откуда: Украина, город Полтава

Re: Помогите настроить TMR0 на Си

Сообщение VHEMaster »

На счёт правил - понял, виноват.
Всем канифоли :)
https://vk.com/maks_naumchuk
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Помогите настроить TMR0 на Си

Сообщение Аlex »

Куда этот код вставить? в interrupt?
Туда, где Вы хотите уменьшать sleeptime, я так полагаю... :roll:
Реклама
Аватара пользователя
VHEMaster
Потрогал лапой паяльник
Сообщения: 374
Зарегистрирован: Сб июл 14, 2012 09:20:09
Откуда: Украина, город Полтава

Re: Помогите настроить TMR0 на Си

Сообщение VHEMaster »

Аlex писал(а):где Вы хотите уменьшать sleeptime, я так полагаю... :roll:
Прошу прощения, но я так и не понял :( Мне его нужно уменьшать паралельно с большим кодом...
т.е. таймер будет не точным :o Мне это не нужно :( можно ли вставить этот код в interrupt?
Всем канифоли :)
https://vk.com/maks_naumchuk
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Помогите настроить TMR0 на Си

Сообщение 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;
// Ваш код
       }
}
Аватара пользователя
VHEMaster
Потрогал лапой паяльник
Сообщения: 374
Зарегистрирован: Сб июл 14, 2012 09:20:09
Откуда: Украина, город Полтава

Re: Помогите настроить TMR0 на Си

Сообщение VHEMaster »

urry писал(а):

Код: Выделить всё

void interrupt isr(void)
{
	if (TMR1IF && TMR1IE)
	{
        TMR1IF=0;
       IR_RC5(); //приём ИК комманд
       }
	if (T0IF && T0IE)
	{
		T0IF=0;
// Ваш код
       }
}
Спасибо большое) Помогло) Теперь таймер обратного отсчёта работает на ура))
Всем канифоли :)
https://vk.com/maks_naumchuk
Закрыто

Вернуться в «PIC»