|
Атомарные операции (таймер Т1), что будет если...? |
|
|
|
Oct 25 2011, 00:01
|
Частый гость
 
Группа: Участник
Сообщений: 157
Регистрация: 20-01-09
Из: Новосибирск
Пользователь №: 43 645

|
Читаю даташит на мегу1284 и никак понять не могу что там с atomic operations и к чему они ведут. Вот, например, меговский таймер Т1 тактируется от внешней частоты, которая всего в 4 раза меньше системного клока. Вдруг захотелось считать регистр содержимого счетчика TCNT1 (сначала low байт, потом high байт). То есть, клоков внешней частоты на Т1 пройдет заведомо больше, чем один, за то время, пока я буду этот регистр читать.
Что я считаю из регистра TCNT1 в итоге? Наверное, ничего хорошего, но что именно? Будет ли таймер при таких условиях считать внешнюю частоту нормально или пропустит клоки, пока читать буду?
|
|
|
|
|
 |
Ответов
|
Oct 28 2011, 11:08
|
Участник

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

|
Атомарные операции в данном случае очень важны. При чтении low байт у вас одновременно читается и high байт во временный регистр, как уже сказал dxp. Так вот, если между чтением low и high байтов у вас произойдет прерывание - в его обработчике этот временный регистр может затереться другим значением, т.к. он один для всех двухбайтных регистров I/O. Атомарная операция, это та, которую нельзя разорвать прерыванием - это нужно вручную выставлять, например: сохранить состояние бита глобальных прерываний, запретить прерывания, выполнить чтение/запись двухбайтного регистра, возобновить старое состояние бита прерываний.
|
|
|
|
Сообщений в этой теме
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 Палыч Цитата(Schulz_K @ Oct 28 2011, 15:08) ...... Oct 28 2011, 13:57  ILYAUL QUOTE (Палыч @ Oct 28 2011, 17:57) Кто-то... Oct 28 2011, 15:24   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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|