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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Как вывести 10 бит АЦП через один вывод, Atmega+ CVAVR
ikm
сообщение Dec 13 2016, 13:43
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894



Подскажите как выполнить операцию вывода 10-ти бит, не на весь порт, а на одну ножку.
К тому же в CV AVR, он эти 10 бит сразу записывает в как 16 битное число.
Ответ, на вопрос для чего мне это нужно: Хочу видеть значение которое выдает АЦП при измерении. т.е. усредняться и отфильтровывается не будет, мне нужно текущее число со всеми шумами и т.д.

А еще лучше порекомендуйте книгу по AVR в которой применяется компилятор CV AVR (кроме Лебедева М.В.)


--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
Go to the top of the page
 
+Quote Post
Smoky
сообщение Dec 13 2016, 14:36
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135



Цитата(ikm @ Dec 13 2016, 19:43) *
Подскажите как выполнить операцию вывода 10-ти бит, не на весь порт, а на одну ножку.
К тому же в CV AVR, он эти 10 бит сразу записывает в как 16 битное число.
Ответ, на вопрос для чего мне это нужно: Хочу видеть значение которое выдает АЦП при измерении. т.е. усредняться и отфильтровывается не будет, мне нужно текущее число со всеми шумами и т.д.

А еще лучше порекомендуйте книгу по AVR в которой применяется компилятор CV AVR (кроме Лебедева М.В.)


Интерфейс 1Wire.


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Dec 13 2016, 15:09
Сообщение #3


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Для начала хорошо б определиться, ГДЕ надо увидеть это значение.

Вместо 1-wire лучше использовать uart. При работе только на передачу (или только на приём) достаточно одного сигнального провода. И с компьютером легче сопрячь (методом покупки любого переходника uart<>usb).


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
YAM
сообщение Dec 13 2016, 16:34
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 7-07-04
Из: Ukraine
Пользователь №: 291



Полностью поддерживаю предыдущего оратора!
И выводить сразу в нужном виде, например в десятичном, и смотреть в любой терминальной программе.


--------------------
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 13 2016, 17:23
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Тем не менее, идея "1-wire" (точнее, что-то аналогичное по сути, PWM-модуляция) может пригодится, если нет свободного UART, или не хватает его быстродействия.
Go to the top of the page
 
+Quote Post
ikm
сообщение Dec 14 2016, 06:38
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894



Цитата(Smoky @ Dec 13 2016, 17:36) *
Интерфейс 1Wire.


1Wire можно сконфигурировать только под один из портов (в,с,d), а не под все сразу. Мне нужно сразу четыре таких ноги.

Для пояснения, мне нужен не интерфейс, а только одна ножка.
Я думал что то типа побитового выставления 1 или 0 на ножке выхода.
Т.е. считываем 10 бит, выставляем его на PORTB.0, за тем 9-ый бит и т.д.
Или может я слишком мудрю. И можно определить переменную как word и загнать её сразу в нужную ножку?


--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 14 2016, 07:33
Сообщение #7


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

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



Именно, мудрите непонятно что. По одному проводу выводят последовательно, бит за битом, пока все ваше слово не вылезет. Потом пауза. Или старт, стоп вокруг байта. Потом опять.
УАРТ так и делает.
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Dec 14 2016, 13:42
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(ikm @ Dec 13 2016, 17:43) *
мне нужно текущее число со всеми шумами и т.д.
Шумы можно наблюдать и в интегральном коде (число непрерывных единиц к нем равно значению самого числа).
Для этого подойдет широтно-импульсную модуляция, что есть в каждом микроконтроллере.
В этом случае осциллограф надо синхронизировать началом импульса ШИМ, а шумы, в виде дребезга, просматривать на конце импульса.
Двоичный или десятичный код не позволят сделать оценку шумов без передачи их в компьютер.

По моему эту идею уже высказал rx3apf...
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 14 2016, 19:14
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Не, я-то подразумевал побитовый выход с PWM-модуляцией для каждого бита (например, "0" - 1 такт, "1" - 2 такта). А вывести результат преобразования через аппаратный PWM - тоже интересный вариант.
Go to the top of the page
 
+Quote Post
Onkel
сообщение Dec 14 2016, 21:20
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 708
Регистрация: 8-05-11
Из: Чг
Пользователь №: 64 861



Цитата(ikm @ Dec 13 2016, 16:43) *
Подскажите как выполнить операцию вывода 10-ти бит, не на весь порт, а на одну ножку.
К тому же в CV AVR, он эти 10 бит сразу записывает в как 16 битное число.
Ответ, на вопрос для чего мне это нужно: Хочу видеть значение которое выдает АЦП при измерении. т.е. усредняться и отфильтровывается не будет, мне нужно текущее число со всеми шумами и т.д.

А еще лучше порекомендуйте книгу по AVR в которой применяется компилятор CV AVR (кроме Лебедева М.В.)

"на одну ножку" - посмотрите протокол NRZ, его нынче в адресных светодиодах ws2812 используют, так что он весьма широко распостранен, правда наиболее широко распостранен 800 кГц версия, но вроде есть и на 200 кГц приемники со светодиодами. Если хотите смотреть в реальном времени - подключите ленту, и по яркости будете видеть, как ползет сигнал, что-то вроде старинного прибора записи на светочувствительную ленту будет.

В СV есть код-генератор (Code Wizard), почти как Cube для stm32, можете задать ему все нужные параметры всей периферии, а потом посмотреть на код, и help в CV имхо достаточный. У вас полная, не учебная версия CV?
Go to the top of the page
 
+Quote Post
ikm
сообщение Dec 15 2016, 11:31
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894



Картинка к чему?
Да, визардом умею пользоваться, периферии никакой не будет, дальше идет в аналоговую часть. Вот все равно не понял Вас, как там настроить четыре независимых "ноги"?
Цитата(ViKo @ Dec 14 2016, 10:33) *
Именно, мудрите непонятно что. По одному проводу выводят последовательно, бит за битом, пока все ваше слово не вылезет. Потом пауза. Или старт, стоп вокруг байта. Потом опять.
УАРТ так и делает.

Не могли бы Вы привести пример, как правильно выводить последовательно, если не принимать в расчёт УАРТ (ведь мне нужно 4 таких канала, а УАРТ один).

Сообщение отредактировал Herz - Dec 16 2016, 09:33
Причина редактирования: Избыточное цитирование


--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 15 2016, 11:57
Сообщение #12


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

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



Цитата(ikm @ Dec 15 2016, 14:31) *
Не могли бы Вы привести пример, как правильно выводить последовательно, если не принимать в расчёт УАРТ (ведь мне нужно 4 таких канала, а УАРТ один).

Сначала опишите подробнее, что вы хотите сделать. И зачем? А то был 1 канал, стало 4. Это что, курсовой проект, что ли?
Выводите все каналы по одному проводу. 4 слова. В каком формате? В каком нравится. Здесь уже посоветовали несколько.
P.S. В один УАРТ можно 444 канала вывести, и еще останется... rolleyes.gif
Go to the top of the page
 
+Quote Post
ikm
сообщение Dec 15 2016, 12:33
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894



Цитата(ViKo @ Dec 15 2016, 14:57) *
Сначала опишите подробнее, что вы хотите сделать. И зачем? А то был 1 канал, стало 4. Это что, курсовой проект, что ли?
Выводите все каналы по одному проводу. 4 слова. В каком формате? В каком нравится. Здесь уже посоветовали несколько.
P.S. В один УАРТ можно 444 канала вывести, и еще останется... rolleyes.gif

Нет, это не курсовой проект, с курсовыми я лет как 10 назад закончил.
Расширяю кругозор в области работы на МК.
Я не писал в начале, что у меня один канал, я спрашивал как вывести на одну ножку последовательно значения полученные в АЦП. Возможно это мое упущение, но не подумал, что мне могут рассказывать про УАРТ и 1 Wire.
Скорее всего ответ на мой вопрос лежит в области применения таймеров и PWM, но думал, что по проще можно. Вот только таймер 16-ти битный только один.
Задача именно такая, как и в начале я писал, вывести через одну ножку битовую последовательность с АЦП и еще с трёх ножек обработанные с помощью наложением маски.


--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 15 2016, 12:55
Сообщение #14


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

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



Цитата(ikm @ Dec 15 2016, 15:33) *
Скорее всего ответ на мой вопрос лежит в области применения таймеров и PWM, но думал, что по проще можно.
Задача именно такая, как и в начале я писал, вывести через одну ножку битовую последовательность с АЦП и еще с трёх ножек обработанные с помощью наложением маски.

А ЦАП там есть? Выведите на него. rolleyes.gif

Пусть таймер выдает прерывание с интервалом, которым будете бит за битом выводить. По этому прерыванию и выдвигайте битики слова, пока не кончатся. А как кончатся, другое слово выдавайте... А чтобы синхронизацию сделать, на другую ножку выдайте один импульс, когда начинаете все свои слова выдавать.

Сначала напишите, что вы уже сделали, что не нравится, тогда и советы будут определенные.
Go to the top of the page
 
+Quote Post
ikm
сообщение Dec 15 2016, 14:06
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894



ЦАП нет, атмега8.
Мне не нужна синхронизация.
А зачем прерывание таймера, почему нельзя по прерыванию окончания АЦП преобразования сделать следующее:
считать младший бит (10) значения ADCW сдвинув на 9 позиций в право (ADCW>>9) и вытавлять это значение PORTB.1 напрямую или через переменную
затем считываем девятый бит (ADCW>>8) и выставляем это значение на PORTB.1 и т.д. перебрав все 10 бит полученого значения.
Вот только вопрос, если я буду "отбрасывать" лишние значения, они будут удаляться или просто игнорироваться при считывании?
Затем запускать повторно считывания АЦП.

прежде чем, что то делать, лучше провести анализ, а если нет опыта спросить у других.
А то если провести аналогию, блок питания на 5В можно сделать несколькими путями. Например взять трансформатор и выпрямить. А потом быть недовольным его габаритами и весом. Спросить на форуме, что мне с этим делать.

Сообщение отредактировал Herz - Dec 16 2016, 09:35
Причина редактирования: Избыточное цитирование


--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
Go to the top of the page
 
+Quote Post

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

 


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


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