реклама на сайте
подробности

 
 
> Атомарные операции (таймер Т1), что будет если...?
Stas-
сообщение Oct 25 2011, 00:01
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 157
Регистрация: 20-01-09
Из: Новосибирск
Пользователь №: 43 645



Читаю даташит на мегу1284 и никак понять не могу что там с atomic operations и к чему они ведут.
Вот, например, меговский таймер Т1 тактируется от внешней частоты, которая всего в 4 раза меньше системного клока.
Вдруг захотелось считать регистр содержимого счетчика TCNT1 (сначала low байт, потом high байт).
То есть, клоков внешней частоты на Т1 пройдет заведомо больше, чем один, за то время, пока я буду этот регистр читать.

Что я считаю из регистра TCNT1 в итоге? Наверное, ничего хорошего, но что именно?
Будет ли таймер при таких условиях считать внешнюю частоту нормально или пропустит клоки, пока читать буду?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Schulz_K
сообщение Oct 28 2011, 11:08
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 63
Регистрация: 25-05-10
Из: Киев
Пользователь №: 57 515



Атомарные операции в данном случае очень важны. При чтении low байт у вас одновременно читается и high байт во временный регистр, как уже сказал dxp. Так вот, если между чтением low и high байтов у вас произойдет прерывание - в его обработчике этот временный регистр может затереться другим значением, т.к. он один для всех двухбайтных регистров I/O. Атомарная операция, это та, которую нельзя разорвать прерыванием - это нужно вручную выставлять, например: сохранить состояние бита глобальных прерываний, запретить прерывания, выполнить чтение/запись двухбайтного регистра, возобновить старое состояние бита прерываний.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 28 2011, 13:57
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Schulz_K @ Oct 28 2011, 15:08) *
... он один для всех двухбайтных регистров I/O.

Вы проверили это "в железе", или это - Ваши домыслы?
Чтение DS не прояснило количество временных регистров (плохо смотрел?), а термин" Temporary Register" всегда встречается в единственном числе... Что породило сомнения - я всегда считал, что временный регистр есть у каждого шестнадцатибитного регистра, за исключением тех, для которых прямо написано об их отсутствии.
Имхо, Atmel'овцы - не дураки и, вероятно, поступили "по-уму" встроив в МК отнюдь не один временный регистр. Под рукой нет МК, чтобы проверить это "в железе"...
Симулятор AVRStudio (ох, не доверяю я этим симуляторам!) утверждает, что временный регистр всё-таки не один.

Кто-то может это проверить на реальном МК и подтвердить (или опровергнуть) слова Schulz_K?
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 28 2011, 15:24
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



QUOTE (Палыч @ Oct 28 2011, 17:57) *
Кто-то может это проверить на реальном МК и подтвердить (или опровергнуть) слова Schulz_K?


CODE
  lds  temp,OCR1AL
  lds  temp1,ADCH  
  lds  mean0,ADCL
  lds  mean1,OCR1AL

Сделал так , для каждого из устройств получил свои значения. Т.е получается у ADC свой временный регистр у таймера свой.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Stas-   Атомарные операции (таймер Т1)   Oct 25 2011, 00:01
- - dxp   Цитата(Stas- @ Oct 25 2011, 07:01) Ч...   Oct 25 2011, 01:55
- - ViKo   А Microchip для своих PIC-ов, у которых нет упомян...   Oct 25 2011, 08:49
|- - ILYAUL   QUOTE (Schulz_K @ Oct 28 2011, 15:08) сох...   Oct 28 2011, 11:13
|- - Artem_Petrik   Цитата(ILYAUL @ Oct 28 2011, 18:24) Код ...   Oct 28 2011, 15:39
|- - ILYAUL   QUOTE (Artem_Petrik @ Oct 28 2011, 19:39)...   Oct 28 2011, 16:02
|- - Artem_Petrik   Цитата(ILYAUL @ Oct 28 2011, 19:02) А Вы ...   Oct 28 2011, 18:14
|- - ILYAUL   QUOTE (Artem_Petrik @ Oct 28 2011, 22:14)...   Oct 28 2011, 18:44
- - aaarrr   Цитата(ILYAUL @ Oct 28 2011, 15:13) это л...   Oct 28 2011, 19:14
|- - ILYAUL   QUOTE (aaarrr @ Oct 28 2011, 23:14) Нет, ...   Oct 28 2011, 20:10
- - aaarrr   Запрещать/разрешать прерывания в произвольный моме...   Oct 28 2011, 20:24
|- - ILYAUL   QUOTE (aaarrr @ Oct 29 2011, 00:24) Запре...   Oct 28 2011, 20:38
|- - aaarrr   Цитата(ILYAUL @ Oct 29 2011, 00:38) CLI л...   Oct 28 2011, 20:53
|- - ILYAUL   QUOTE (aaarrr @ Oct 29 2011, 00:53) Предс...   Oct 28 2011, 21:05
- - ILYAUL   Что-то у меня логика не сходится. Пусть прерывание...   Nov 1 2011, 20:07
- - aaarrr   Цитата(ILYAUL @ Nov 2 2011, 00:07) Т.е , ...   Nov 1 2011, 20:22
- - ILYAUL   Цитата(aaarrr @ Nov 2 2011, 00:22) В этом...   Nov 1 2011, 20:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 00:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01426 секунд с 7
ELECTRONIX ©2004-2016