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

 
 
 
Reply to this topicStart new topic
> STM32F103 - analog watchdog
toweroff
сообщение Aug 17 2016, 18:08
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Добрый день

Есть вход, который нужно контролировать по нижней границе. Тут все вроде понятно - настроил и лови прерывание
Но нужно еще и знать текущее напряжение на этом входе. Как?
Я так понимаю, что содержимое регистра данных валидно только в определенный момент - при окончании оцифровки, простым чтением оттуда ничего не добьешься, а прерывание настроено на нижнюю границу
В принципе, одна ножка контроллера свободна и находится в аккурат с нужной, можно их просто закоротить и использовать дополнительный канал ADC, но как-то не комильфо, возможно есть программное решение?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 17 2016, 19:21
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А разве Analog Watchdog без АЦП работает?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Aug 18 2016, 03:52
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(ViKo @ Aug 17 2016, 22:21) *
А разве Analog Watchdog без АЦП работает?

ну конечно с АЦП, весь вопрос в том, что в этом режиме прерывание генерится при выходе за границы окна, а не по окончании оцифровки. Или я что-то не так понял
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 18 2016, 05:25
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Я думаю, регистр данных всегда содержит правильное значение. Читайте, когда хотите.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Aug 19 2016, 07:53
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(ViKo @ Aug 18 2016, 08:25) *
Я думаю, регистр данных всегда содержит правильное значение. Читайте, когда хотите.

полазил по тырнетам... действительно, люди ждут первого преобразования, а потом читают регистр данных по мере необходимости не дожидаясь флага окончания преобразования
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 19 2016, 08:06
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (toweroff @ Aug 19 2016, 10:53) *
действительно, люди ждут первого преобразования, а потом читают регистр данных по мере необходимости не дожидаясь флага окончания преобразования
Вот за такое интернет и называют "всемирной помойкой". У АЦП один регистр данных на все каналы,если вы настроили преобразование хотя бы двух каналов - данные какого из каналов вы считаете из регистра "не дожидаясь флага"?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 19 2016, 08:35
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Сергей Борщ @ Aug 19 2016, 11:06) *
Вот за такое интернет и называют "всемирной помойкой". У АЦП один регистр данных на все каналы,если вы настроили преобразование хотя бы двух каналов - данные какого из каналов вы считаете из регистра "не дожидаясь флага"?

Надо думать, источник у топикстартера один. Если больше, инжектированные каналы рулят. Если еще больше, вот тогда хуже.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Aug 19 2016, 10:05
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(ViKo @ Aug 19 2016, 11:35) *
Надо думать, источник у топикстартера один. Если больше, инжектированные каналы рулят. Если еще больше, вот тогда хуже.

Источников 4
Используются 2 ADC - один для AWDT для одного канала, второй с инжектированными каналами - просто для мониторинга

Тут проблема тоже с этими инжектированными каналами - в прерывание влетает только 1 раз для каждого ADC, хотя флаг CONT выставлен... никак не пойму почему
Может потому, что что-то не так сделал, а может потому, что проверяется пока, ввиду отсутствия железки, в симуляторе Keil

Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 19 2016, 14:32
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (ViKo @ Aug 19 2016, 11:35) *
Если больше, инжектированные каналы рулят.
Далеко не всегда. Мне, например, в некоторых устройствах удобнее настроить серию запросов и пусть себе АЦП их по таймеру обрабатывает, а ПДП складывает в отведенные места в памяти. Когда набирается достаточно (половина буфера ПДП) - все сразу и обрабатываю. И это никак не мешает аналоговой собаке следить за одним из этих каналов и давать прерывание при выходе значения за заданные границы.


QUOTE (toweroff @ Aug 19 2016, 13:05) *
а может потому, что проверяется пока, ввиду отсутствия железки, в симуляторе Keil
Ну это вообще не показатель при всем уважении к Кейлу. Симулятор 8051 у них работал идеально, как и у Микрочипа симулятор PIC16C84. Но те времена ушли - сейчас и моделируемые контроллеры сложнее и программисты симуляторов уже не те.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 19 2016, 17:07
Сообщение #10


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Не помню, можно ли настроить размер памяти, куда будет DMA будет записывать данные с АЦП, кратным или равным последовательности каналов в АЦП. И чтобы писал непрерывно по кругу. Тогда данные для каждого канала будут на своем фиксированном месте.
Go to the top of the page
 
+Quote Post

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

 


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


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