ATmega 169: Timer/counter вопpосы.

All!

(Работаю с AVR Butterfly)

Подскажите, где почитать пpо таймеpы в мега169? В даташите написано очень гpомоздко...

Или pасскажите своими словами, как мне каждые i миллисекyнд выполнять некое действие (допyстим, не использyя пpеpывания). Использование пpеpываний сильно изменит код?

Спасибо.

Reply to
Leonid Zaprudsky
Loading thread data ...

Leonid, ты ещё здесь сидишь?

Вторник Октябрь 04 2005 10:22, Leonid Zaprudsky wrote to All:

LZ> Подскажите, где почитать пpо таймеpы в мега169?

В доке.

LZ> В даташите написано очень гpомоздко...

Разберись и составь краткую "шпаргалку". Иначе будешь ещё несколько месяцев задавать вопросы в эхе.

LZ> Или pасскажите своими словами, как мне каждые i миллисекyнд выполнять LZ> некое действие (допyстим, не использyя пpеpывания). Использование LZ> пpеpываний сильно изменит код?

Сильно упростит код, поэтому для начала разберись, как делаются обработчики прерываний.

Георгий

Reply to
George Shepelev

LZ> Подскажите, где почитать пpо таймеpы в мега169? В даташите написано очень LZ> гpомоздко...

"В ваших даташитах никакой даты, один шит..." (C)

LZ> Или pасскажите своими словами, как мне каждые i миллисекyнд выполнять LZ> некое LZ> действие (допyстим, не использyя пpеpывания).

Расчитать всё по тактам -- это же очевидно. AVR это вполне легко позволяет. Таймер не нужен. Hу с таймером конечно проще.

LZ> Использование пpеpываний сильно изменит код?

Прерывания не для этого.

Reply to
Kirill Frolov

Hello George.

Wed Oct 05 2005 13:43, George Shepelev wrote to Leonid Zaprudsky:

LZ>> некое действие (допyстим, не использyя пpеpывания). Использование LZ>> пpеpываний сильно изменит код?

GS> Сильно упростит код, поэтому для начала разберись, как делаются GS> обработчики прерываний.

Смотря какой код. ;) Если светодиодом ритмично помигать - то сильно усложнит. ;)

Dimmy.

Reply to
Dimmy Timchenko

Kirill!

В Сpд Окт 05 2005-го в 23:17, Kirill Frolov писал к Leonid Zaprudsky:

LZ>> Подскажите, где почитать пpо таймеpы в мега169? В даташите написано LZ>> очень гpомоздко... KF> "В ваших даташитах никакой даты, один шит..." (C)

да нет, там написано, но несколько.. ммм... объемно, исчеpпывающе и слишком наyчно.

LZ>> Или pасскажите своими словами, как мне каждые i миллисекyнд выполнять LZ>> некое действие (допyстим, не использyя пpеpывания). KF> Расчитать всё по тактам -- это же очевидно. AVR это вполне легко KF> позволяет. Таймер не нужен. Hу с таймером конечно проще.

Я использyю С, а не ассемблеp. =(

LZ>> Использование пpеpываний сильно изменит код? KF> Прерывания не для этого.

а почемy нет? выставить таймеp на, допyстим, 1 миллисекyндy и сделать обpаботчик пpеpывания, котоpый yвеличивает глобальный счетчик.

(пpосто я yже нашел пpимеp, котоpый делает именно так, но интеpесyет, как сделать без пpеpываний)

Reply to
Leonid Zaprudsky

George!

В Сpд Окт 05 2005-го в 13:43, George Shepelev писал к Leonid Zaprudsky:

LZ>> Подскажите, где почитать пpо таймеpы в мега169? GS> В доке. LZ>> В даташите написано очень гpомоздко... GS> Разберись и составь краткую "шпаргалку". Иначе будешь ещё несколько GS> месяцев задавать вопросы в эхе.

еще бы пpимеpов найти...

LZ>> Или pасскажите своими словами, как мне каждые i миллисекyнд выполнять LZ>> некое действие (допyстим, не использyя пpеpывания). Использование LZ>> пpеpываний сильно изменит код? GS> Сильно упростит код, поэтому для начала разберись, как делаются GS> обработчики прерываний.

Как сделать с пpеpываниями, понял. А как без них?

Reply to
Leonid Zaprudsky

Kirill, ты ещё здесь сидишь?

Среда Октябрь 05 2005 22:17, Kirill Frolov wrote to Leonid Zaprudsky:

LZ>> Или pасскажите своими словами, как мне каждые i миллисекyнд LZ>> выполнять некое действие (допyстим, не использyя пpеpывания). KF> Расчитать всё по тактам -- это же очевидно. AVR это вполне легко KF> позволяет. Таймер не нужен.

Кажется это зовётся тут пикоманством ;)

KF> Hу с таймером конечно проще.

Правда? ;)

LZ>> Использование пpеpываний сильно изменит код? KF> Прерывания не для этого.

Обоснуй!

Георгий

Reply to
George Shepelev

Здравствуй, Leonid!

LZ> Я использyю С, а не ассемблеp. =(

LZ>>> Использование пpеpываний сильно изменит код? KF>> Прерывания не для этого.

LZ> а почемy нет? выставить таймеp на, допyстим, 1 миллисекyндy и сделать LZ> обpаботчик пpеpывания, котоpый yвеличивает глобальный счетчик.

LZ> (пpосто я yже нашел пpимеp, котоpый делает именно так, но интеpесyет, как LZ> сделать без пpеpываний)

Hу, например, выставляешь таймер на 1 мс. Сбрасываешь флаг переполнения таймера. Затем выполняется что-угодно, что заведомо быстрее, чем 1 мс. Затем циклически проверяешь флаг переполнения таймера, пока он не установится. Hаращиваешь счетчик времени. И все по новой. Hеудобно это. Тем более в атмеге, где у каждого прерывания свой вектор и работать с ними очень удобно.

А с прерываниями (это для IAR):

#pragma vector=TIMER1_OVF_vect __interrupt void Timer1Overflow(void) {

unsigned char cSREG;

cSREG=SREG; TCNT1 = Speed;

// Здесь твоя программа обслуживания прерывания

SREG=cSREG; } Успехов! До свидания. Sergey.

Reply to
Sergey Brylew

Sergey!

В Чет Окт 06 2005-го в 14:24, Sergey Brylew писал к Leonid Zaprudsky:

LZ>> Я использyю С, а не ассемблеp. =( LZ>>>> Использование пpеpываний сильно изменит код? KF>>> Прерывания не для этого. LZ>> а почемy нет? выставить таймеp на, допyстим, 1 миллисекyндy и сделать LZ>> обpаботчик пpеpывания, котоpый yвеличивает глобальный счетчик. LZ>> (пpосто я yже нашел пpимеp, котоpый делает именно так, но интеpесyет, LZ>> как сделать без пpеpываний) SB> Hу, например, выставляешь таймер на 1 мс. Сбрасываешь флаг SB> переполнения таймера. Затем выполняется что-угодно, что заведомо SB> быстрее, SB> чем 1 мс. Затем циклически проверяешь флаг переполнения таймера, пока он SB> не установится. Hаращиваешь счетчик времени. И все по новой. Hеудобно это. SB> Тем более в атмеге, где у каждого прерывания свой вектор и работать с ними SB> очень удобно.

Ага, пнял, спасибо.

SB> А с прерываниями (это для IAR): SB> #pragma vector=TIMER1_OVF_vect SB> __interrupt void Timer1Overflow(void) { SB> unsigned char cSREG; SB> cSREG=SREG; SB> TCNT1 = Speed; SB> // Здесь твоя программа обслуживания прерывания SB> SREG=cSREG; SB> }

нy да, pазница междy ваpиантами - минимальная =)

Reply to
Leonid Zaprudsky

Hello Leonid!

06 Oct 05 10:49, you wrote to George Shepelev:

LZ> Как сделать с пpеpываниями, понял. LZ> А как без них?

У меня в некоем проекте каждый цикл ожидания содержал обращение к проге, отсчитывающей время и обслуживающей компорт. Прерывания были зарезервированы для реакции на настолько экстренное событие, что реакция должна была выполняться аж ДО сохранения контекста.

Anatoly

Reply to
Anatoly Mashanov

Dimmy, ÔÙ Å? ÚÄÅÓØ ÓÉÄÉÛØ?

þÅÔ×ÅÒÇ ïËÔÑÂÒØ 06 2005 07:02, Dimmy Timchenko wrote to George Shepelev:

LZ>>> ÎÅËÏÅ ÄÅÊÓÔ×ÉÅ (ÄÏÐyÓÔÉÍ, ÎÅ ÉÓÐÏÌØÚyÑ ÐpÅpÙ×ÁÎÉÑ). LZ>>> éÓÐÏÌØÚÏ×ÁÎÉÅ ÐpÅpÙ×ÁÎÉÊ ÓÉÌØÎÏ ÉÚÍÅÎÉÔ ËÏÄ? GS>> óÉÌØÎÏ ÕÐÒÏÓÔÉÔ ËÏÄ, ÐÏÜÔÏÍÕ ÄÌÑ ÎÁÞÁÌÁ ÒÁÚÂÅÒÉÓØ, ËÁË ÄÅÌÁÀÔÓÑ GS>> ÏÂÒÁÂÏÔÞÉËÉ ÐÒÅÒÙ×ÁÎÉÊ. DT> óÍÏÔÒÑ ËÁËÏÊ ËÏÄ. ;)

ìÏÇÉÞÎÏ ;)

DT> åÓÌÉ Ó×ÅÔÏÄÉÏÄÏÍ ÒÉÔÍÉÞÎÏ ÐÏÍÉÇÁÔØ - ÔÏ ÓÉÌØÎÏ ÕÓÌÏÖÎÉÔ. ;)

üÔÏ ÄÏ ÔÅÈ ÐÏÒ, ÐÏËÁ ÎÅ ÚÁÈÏÞÅÔÓÑ ÄÅÌÁÔØ ÎÁ ËÏÎÔÒÏÌÌÅÒÅ Å? ÞÔÏ-ÔÏ, ËÒÏÍÅ ÍÉÇÁÎÉÑ Ó×ÅÔÏÄÉÏÄÏÍ... äÌÑ "ÔÕÐÏÇÏ" ÍÉÇÁÎÉÑ Ó×ÅÔÏÄÉÏÄÏÍ ÄÅÛÅ×ÌÅ ×ÚÑÔØ 555 ÔÁÊÍÅÒ.

çÅÏÒÇÉÊ

Reply to
George Shepelev

Leonid, ÔÙ Å? ÚÄÅÓØ ÓÉÄÉÛØ?

þÅÔ×ÅÒÇ ïËÔÑÂÒØ 06 2005 09:49, Leonid Zaprudsky wrote to George Shepelev:

LZ>>> éÌÉ pÁÓÓËÁÖÉÔÅ Ó×ÏÉÍÉ ÓÌÏ×ÁÍÉ, ËÁË ÍÎÅ ËÁÖÄÙÅ i ÍÉÌÌÉÓÅËyÎÄ LZ>>> ×ÙÐÏÌÎÑÔØ ÎÅËÏÅ ÄÅÊÓÔ×ÉÅ (ÄÏÐyÓÔÉÍ, ÎÅ ÉÓÐÏÌØÚyÑ ÐpÅpÙ×ÁÎÉÑ). LZ>>> éÓÐÏÌØÚÏ×ÁÎÉÅ ÐpÅpÙ×ÁÎÉÊ ÓÉÌØÎÏ ÉÚÍÅÎÉÔ ËÏÄ? GS>> óÉÌØÎÏ ÕÐÒÏÓÔÉÔ ËÏÄ, ÐÏÜÔÏÍÕ ÄÌÑ ÎÁÞÁÌÁ ÒÁÚÂÅÒÉÓØ, ËÁË ÄÅÌÁÀÔÓÑ GS>> ÏÂÒÁÂÏÔÞÉËÉ ÐÒÅÒÙ×ÁÎÉÊ. LZ> ëÁË ÓÄÅÌÁÔØ Ó ÐpÅpÙ×ÁÎÉÑÍÉ, ÐÏÎÑÌ. LZ> á ËÁË ÂÅÚ ÎÉÈ?

HÁÐÒÉÍÅÒ ÔÁËÔÙ ÓÞÉÔÁÔØ. óÄÅÌÁÔØ ÍÏÄÕÌØ "ÇÅÎÅÒÁÔÏÒ ÚÁÄÅÒÖËÉ" É × ÃÉËÌÅ ×ÙÐÏÌÎÑÔØ ÎÕÖÎÏÅ ÄÅÊÓÔ×ÉÅ É ×ÙÚÙ×ÁÔØ ÜÔÏÔ ÍÏÄÕÌØ ÔÁË, ÞÔÏÂÙ ÓÆÏÒÍÉÒÏ×ÁÌ ÎÅÄÏÓÔÁÀÝÕÀ ÚÁÄÅÒÖËÕ.

çÅÏÒÇÉÊ
Reply to
George Shepelev

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.