|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 9:58 am
|
Страница 1 от 1
|
[ 5 мнения ] |
|
| Автор |
Съобщение |
|
smollov
Ранг: Минаващ
Регистриран на: Сря Ное 10, 2004 3:20 pm Мнения: 19
|
 ATmega 128 & Timers
Искам да попитам трябва ли преди да се зареди нова стойност в некой от таймерите на ATmega 128 в синхронен режим на работа да се забранява и разрешава след това глобалното прекъсване.
inline void Timer1_Set (u_int Value)
{
cli(); // забранява глобалното прекъсване
TCNT1 = Value;
TIMSK |= _BV(TOIE1); //Прекъсване при препълване
gT1Overflow = 0x00;
sei(); // разрешава глобално прекъсванията
}
В този примерен код необходими ли са cli() и sei() ??????????
|
| Вто Окт 25, 2005 11:56 am |
|
 |
|
TheHungry
Ранг: Почетен член
Регистриран на: Съб Сеп 03, 2005 11:31 am Мнения: 766 Местоположение: Пловдив
|
Според Atmel да.
|
| Вто Окт 25, 2005 2:18 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
По принцип, чисто технически - не. Ако обаче тоя таймер предизвиква някви действия, или пък от много прекъсвания може да бъде установен, ти трябва синхроннизация, а тя се постига cli.
|
| Вто Окт 25, 2005 3:12 pm |
|
 |
|
TheHungry
Ранг: Почетен член
Регистриран на: Съб Сеп 03, 2005 11:31 am Мнения: 766 Местоположение: Пловдив
|
За по сигурно "CLI" иначе има да се чуди човек от къде се пръкват разни проблеми.
|
| Вто Окт 25, 2005 6:31 pm |
|
 |
|
Топ
Ранг: Минаващ
Регистриран на: Пет Окт 28, 2005 3:24 pm Мнения: 30
|
 Timers
Ако е таймер 1 или 3, 100% да. Изобщо при достъп да периферията, за четене или запис, 16-битовите данни се четат или пишат в поредни инструкции при забрана на прекъсванията. При операциите участва и един междинен регистър, целта на който е по 8-битовата шина да се прочете/запише 16 битова стойност в един и същи машинен цикъл. Ако между четенето/записа на двата байта на 16-битивата стойност настъпи прекъсване, бозата става пълна.
|
| Пет Окт 28, 2005 4:07 pm |
|
|
|
Страница 1 от 1
|
[ 5 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|