Jump to content

    
Sign in to follow this  
LLLLLLLLLL

pic18f45k22 и TMR1

Recommended Posts

Как написано в доке, можно сделать этот таймер 16-ти битным

 

TxRD16: 16-Bit Read/Write Mode Enable bit

1 = Enables register read/write of Timer1/3/5 in one 16-bit operation

0 = Enables register read/write of Timer1/3/5 in two 8-bit operation

 

Также там написано, что в случае 16-ти битности обращение к TMR1H+TMR1L надо производить через буфер.

А вот где этот буфер и как он называется я не обнаружил. Где искать?

Share this post


Link to post
Share on other sites

Он есть.

Для 16 битного режима:

При чтении TMR0L значение TMR0L читается и синхронно TMR0H копируется в буфер, чтение затем TMR0H (можно не сразу) - читаться будет из буфера а не из реального TMR0H. Запись - аналогично. При записи в TMR0L синхронно в TMR0H копируется из буфера, которое туда ранее надо записать записью в TMR0H. Если по простому - то операции с TMR0H - это операции с буфером. А операции с TMR0L это операции с TMR0L и синхронно выполняются операции TMR0H<-> буфер.

 

Share this post


Link to post
Share on other sites
Также там написано, что в случае 16-ти битности обращение к TMR1H+TMR1L надо производить через буфер.

А вот где этот буфер и как он называется я не обнаружил. Где искать?

 

Имеется ввиду порядок обращения - в 16-битном режиме чтение производится в порядке TMRxL-TMRxH?

Запись в обратном порядке TMRxH-TMRxL.

TMRxH - буфер, при записи в TMRxL обновляется TMRx 16бит целиком. При чтении - запрос от TMRxL считывает

16бит TMRx целиком старшей частью to TMRxH. При чтении записи в обратном порядке можно получить ерунду.

 

Упс- опоздал.

Share this post


Link to post
Share on other sites
Он есть.

Для 16 битного режима:

При чтении TMR0L значение TMR0L читается и синхронно TMR0H копируется в буфер, чтение затем TMR0H (можно не сразу) - читаться будет из буфера а не из реального TMR0H. Запись - аналогично.

.

Я вообще то спрашивал про Timer1.

То есть, "буфером" в 16 битном режиме является TMR1L. А я пытался использовать TMR1H, видимо поэтому и не получалось.

Share this post


Link to post
Share on other sites
А вот где этот буфер и как он называется я не обнаружил. Где искать?
Как уже выше сказали, это - не 16-битный режим таймера, а 16-битный режим записи/чтения в/из таймера.

Что бы в/у операции производились в оба регистра одновременно (называется атомарная операция, можно в Гугле просветиться).

Для этого, помимо включения режима, надо соблюдать определённую последовательность действий.

При записи, сперва записать байт в регистр H (насколько помню), при этом, он запишется в специальный буфер, недоступный физически, а затем, второй байт в регистр L, при этом одновременно, в регистр H (реальный регистр таймера) запишется байт из буфера.

При чтении, всё в обратной последовательности.

Кстати, всё это в даташите расписано. :)

 

Edited by Smen

Share this post


Link to post
Share on other sites
Кстати, всё это в даташите расписано. :)
.

 

Что буфер физически недоступен там не сказано. Я надеялся, что есть более прямая процедура записи 16 бит, чем указано в доках, но как оказалось, надеялся напрасно. Ошибся.

Edited by =L.A.=

Share this post


Link to post
Share on other sites
там не сказано
А как же п.12.6 и в нём картинка 12-2?

 

Я надеялся, что есть более прямая процедура записи 16 бит
А как ещё, интересно, можно записать/прочитать 16 битное слово, при 8-битной шине данных? :rolleyes:

 

Share this post


Link to post
Share on other sites
А как ещё, интересно, можно записать/прочитать 16 битное слово, при 8-битной шине данных?
.

 

Я хотел обнулить/сбросить Timer1 одной командой. А упомянутая кривокостыльная процедура/фича придумана, как я понимаю, для того, чтобы оба байта считывались одномоментно, ну или считанное значение было от определенного момента времени. Чтобы при чтении в момент перехода TMR1L от 0xFF к 0x00 не появилась ошибка в 255 тиков.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this