Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 25.08.2017, 15:41   #1
Romius
Junior Member
 
Регистрация: 07.02.2017
Адрес: г.Заволжье
Возраст: 42
Сообщений: 23
Вес репутации: 100/5
Romius will become famous soon enoughRomius will become famous soon enough
По умолчанию Работа с таймером pic18f45k80

Здравствуйте! Подскажите пожалуйста как записать в TMR3 число, с которого продолжится счет. Хочу чтобы считал не с 0 а с определенного числа.
Чего только не пробовал... Организовал программный ШИМ на этом таймере и CCP2 (аппаратного мне мало) и меня не устраивает частота (при 4 МГц получается все 15 Гц) . Проблема бы решилась, если при каждом переполнении записывать какое-нибудь число, чтобы "приблизить" следующее переполнение..

Последний раз редактировалось Romius; 25.08.2017 в 16:00.
Romius вне форума   Ответить с цитированием
Старый 25.08.2017, 16:21   #2
Romius
Junior Member
 
Регистрация: 07.02.2017
Адрес: г.Заволжье
Возраст: 42
Сообщений: 23
Вес репутации: 100/5
Romius will become famous soon enoughRomius will become famous soon enough
По умолчанию Re: Работа с таймером pic18f45k80

Людиии.... Есть кто-нибудь?
Romius вне форума   Ответить с цитированием
Старый 25.08.2017, 16:22   #3
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 35
Сообщений: 1,115
Вес репутации: 3551/75
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: Работа с таймером pic18f45k80

Цитата:
Сообщение от Romius Посмотреть сообщение
Подскажите пожалуйста как записать в TMR3 число, с которого продолжится счет.


TMR3H = ....;
TMR3L = ....;

Даташит почитать не получается?
http://ww1.microchip.com/downloads/e...Doc/39977f.pdf

Код:
16.3 Timer3 16-Bit Read/Write Mode

Timer3 can be configured for 16-bit reads and writes
(see Figure 16.3). When the RD16 control bit
(T3CON<1>) is set, the address for TMR3H is mapped
to a buffer register for the high byte of Timer3. 

A read from TMR3L will load the contents of the high byte of
Timer3 into the Timer3 High Byte Buffer register. This
provides users with the ability to accurately read all
16 bits of Timer3 without having to determine whether a
read of the high byte, followed by a read of the low byte,
has become invalid due to a rollover between reads.

A write to the high byte of Timer3 must also take place
through the TMR3H Buffer register. The Timer3 high
byte is updated with the contents of TMR3H when a
write occurs to TMR3L. This allows users to write all
16 bits to both the high and low bytes of Timer3 at once.

The high byte of Timer3 is not directly readable or
writable in this mode. All reads and writes must take
place through the Timer3 High Byte Buffer register.
Writes to TMR3H do not clear the Timer3 prescaler.
The prescaler is only cleared on writes to TMR3L
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 25.08.2017, 16:25   #4
Romius
Junior Member
 
Регистрация: 07.02.2017
Адрес: г.Заволжье
Возраст: 42
Сообщений: 23
Вес репутации: 100/5
Romius will become famous soon enoughRomius will become famous soon enough
По умолчанию Re: Работа с таймером pic18f45k80

Спасибо, что ответили. Я читал даташит. Но когда я пытаюсь что-то записать в эти регистры - никакого эффекта нет. Все также идет счет от 0 до FFFF. Пробовал в различных режимах (RD16) - то же. Если знаете последовательность записи - прошу подсказать.
Пишу в XC8..., но это не важно...
Пробовал останавливать таймер и писать - нет эффекта

Последний раз редактировалось Romius; 25.08.2017 в 16:35.
Romius вне форума   Ответить с цитированием
Старый 25.08.2017, 16:37   #5
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 35
Сообщений: 1,115
Вес репутации: 3551/75
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: Работа с таймером pic18f45k80

Цитата:
Сообщение от Romius Посмотреть сообщение
Спасибо, что ответили. Я читал даташит. Но когда я пытаюсь что-то записать в эти регистры - никакого эффекта нет. Все также идет счет от 0 до FFFF. Пробовал в различных режимах (RD16) - то же. Если знаете последовательность записи - прошу подсказать.
Пишу в XC8..., но это не важно...
Пробовал останавливать таймер и писать - нет эффекта
Последовательность в даташите. Выделил специально.

Воспользуйтесь макросом WRITETIMER3(x) из pic18.h для xc8

Код:
#define WRITETIMER3(x) ((void)(TMR3H=((x)>>8),TMR3L=((x)&0xFF)))
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 25.08.2017, 16:44   #6
Romius
Junior Member
 
Регистрация: 07.02.2017
Адрес: г.Заволжье
Возраст: 42
Сообщений: 23
Вес репутации: 100/5
Romius will become famous soon enoughRomius will become famous soon enough
По умолчанию Re: Работа с таймером pic18f45k80

Пробовал - не получилось. Все также от 0 до 0xFFFF.

void interrupt high_priority recchar(void)
{ if (PIR5bits.RXB0IF) { receivE();RXB0CONbits.RXFUL = 0;PIR5bits.RXB0IF = 0;PIE5bits.RXB0IE = 0;}
if (PIR2bits.TMR3IF) {WRITETIMER3(0x0100);
LATD &= ~pa->port_off; // Port pins off
LATD |= pa->port_on; // Port pins on
pa = pa->next; // Next entry in list
CCPR1 = pa->time; // Update timer compare time
PIR2bits.TMR3IF = 0; //Сброс флага таймера3
PIR3bits.CCP1IF = 0;}

}
Буду шерстить программу, может где-нибудь ошибка... Использую часть чужого кода, но вроде не заметил влияния...
А может влияет использование модуля CCP, он же связан с этим таймером. Я использую его в режиме сравнения...
Romius вне форума   Ответить с цитированием
Старый 25.08.2017, 17:07   #7
Romius
Junior Member
 
Регистрация: 07.02.2017
Адрес: г.Заволжье
Возраст: 42
Сообщений: 23
Вес репутации: 100/5
Romius will become famous soon enoughRomius will become famous soon enough
По умолчанию Re: Работа с таймером pic18f45k80

Всем спасибо... Ступил.. Слишком маленькое число записывал (0x0100). Извините за отнятое время...
Romius вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с таймером на PIC18 r0cket111 Вопросы начинающих 2 26.03.2010 09:58
Корректная работа с переменными Gothician Продукция MICROCHIP 4 02.06.2009 22:12
Неустойчивая работа прерывания PORTB в 18F.... 1977and Продукция MICROCHIP 5 31.12.2008 08:05


Часовой пояс GMT +3, время: 10:45.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot