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

 
 
> Флаг ADIF регистра ADCSRA-в АЦП ATmega8-непонятно
serj32
сообщение Sep 27 2013, 14:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 25-01-13
Из: Брянск
Пользователь №: 75 345



Здравствуйте.Вот если перевести АЦП в непрерывный режим флаг ADIF установится сразу после окончания преобразования,но непонятно когда он сбросится , а ведь на очереди очередное преобразование.
Этот флаг необходимо програмно сбрасывать ,чтобы увидеть очередное преобразование.В даташите не увидел ответа.Благодарю всех ответившим.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
V_G
сообщение Sep 29 2013, 23:25
Сообщение #2


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Для полноты картины почитайте параграф "Accessing 16-bits Registers" в мануале по xmeg'ам.
Коротко: при чтении сначала читайте младший байт, при этом в том же цикле старший байт будет занесен во временный регистр. Второй командой читайте старший байт, он будет считан из временного регистра. Перед чтением запретите прерывания, т.к. временный регистр на АЦП всего один, и в прерываниях могут быть команды доступа к 16-разрядным регистрам, которые испортят содержимое временного. Этот регистр доступен и сам по себе, называется ADCA_TEMP.

Эта тема - одна из причин, почему я предпочитаю ассемблер. Сишные программисты редко лезут в такие дебри.
Была одна небольшая задачка (реализация ЧМ детектора на TigerSharс), которую я для теста написал на Си, чтобы не углубляться в архитектуру. Все быстро заработало, но для боевого применения в многоканальных системах обработки данных предпочту asm-реализацию с полным доступом ко всем вкусностям архитектуры TigerSharс. Хотя, возможно, такое возможно и на чистом Си, но с обязательным учетом особенностей аппаратной архитектуры.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 30 2013, 00:31
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(V_G @ Sep 30 2013, 03:25) *
Коротко: при чтении сначала читайте младший байт, при этом в том же цикле старший байт будет занесен во временный регистр. Второй командой читайте старший байт, он будет считан из временного регистра.

Но на C чтение двухбайтового значения именно так и происходит:
Код
// ADC_data = ADCA.CH1.RES;
LDS     R16, 556
LDS     R17, (556+1)
...
Я бы и на ассемблере короче не написала.

Цитата(V_G @ Sep 30 2013, 03:25) *
Перед чтением запретите прерывания, т.к. временный регистр на АЦП всего один, и в прерываниях могут быть команды доступа к 16-разрядным регистрам, которые испортят содержимое временного. Этот регистр доступен и сам по себе, называется ADCA_TEMP.

А вот это непонятно. Почему команды доступа к 16-разрядным регистрам в прерываниях должны портить именно ADCA_TEMP? А если они к АЦП никак не относятся (скажем, это 16-разрядный регистр таймера), то содержимое ADCA_TEMP тоже будет угроблено? Или вы имели в виду только обращения к 16-разрядным регистрам других каналов АЦП?

На счет запрета прерывания тоже имею вопрос: годится ли вместо пары STI/CLI запись CCP=0xD8, или protected IO register не может быть в этом деле помощником? Говорят, что он на 4 такта работу блокирует, там может быть этого хватит?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- serj32   Флаг ADIF регистра ADCSRA-в АЦП ATmega8-непонятно   Sep 27 2013, 14:49
- - ARV   он сбросится аппаратно в момент перехода на обрабо...   Sep 27 2013, 14:56
|- - serj32   Цитата(ARV @ Sep 27 2013, 18:56) он сброс...   Sep 27 2013, 15:23
- - RabidRabbit   В том экземпляре даташита, что есть у меня, в опис...   Sep 27 2013, 15:38
- - ARV   для обучения лучше делать правильно, а не "ка...   Sep 27 2013, 18:57
|- - serj32   Цитата(ARV @ Sep 27 2013, 22:57) для обуч...   Sep 27 2013, 20:33
||- - Сергей Борщ   QUOTE (serj32 @ Sep 27 2013, 22:33) А есл...   Sep 28 2013, 06:55
|- - RabidRabbit   Цитата(ARV @ Sep 27 2013, 22:57) для обуч...   Sep 28 2013, 07:51
|- - ARV   Цитата(RabidRabbit @ Sep 28 2013, 11:51) ...   Sep 28 2013, 13:30
|- - RabidRabbit   Цитата(ARV @ Sep 28 2013, 17:30) вы увере...   Sep 29 2013, 11:50
- - V_G   Идея топикстартера корректно реализуема в atxmega,...   Sep 27 2013, 23:31
|- - Xenia   Цитата(V_G @ Sep 28 2013, 03:31) АЦП рабо...   Sep 28 2013, 21:03
- - V_G   Названия регистров различаются в Си и ассемблере (...   Sep 28 2013, 22:52
|- - Xenia   Цитата(V_G @ Sep 29 2013, 02:52) Названия...   Sep 28 2013, 23:09
- - V_G   Ну так я написал же, что содержимое регистров один...   Sep 29 2013, 00:48
|- - Xenia   Цитата(V_G @ Sep 29 2013, 04:48) Ну так я...   Sep 29 2013, 20:06
|- - V_G   Цитата(Xenia @ Sep 30 2013, 10:31) Почему...   Sep 30 2013, 02:14
- - serj32   Хотел бы уточнить по флагу ADIF регистра ADCSRA.Во...   Oct 1 2013, 08:23
|- - RabidRabbit   Цитата(serj32 @ Oct 1 2013, 12:23) Вот ес...   Oct 1 2013, 09:58
- - V_G   Если преобразование еще не завершено, то и флаг AD...   Oct 1 2013, 08:53
|- - serj32   Цитата(V_G @ Oct 1 2013, 12:53) Если прео...   Oct 1 2013, 12:03
||- - Сергей Борщ   QUOTE (serj32 @ Oct 1 2013, 14:03) Мне не...   Oct 1 2013, 12:26
|- - serj32   Цитата(V_G @ Oct 1 2013, 12:53) Если прео...   Oct 1 2013, 14:17
- - ILYAUL   Повторю сказанное выше IDIF сбрасывается аппаратно...   Oct 1 2013, 14:41


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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 19:40
Рейтинг@Mail.ru


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