Перейти к содержанию
    

Как вывести 10 бит АЦП через один вывод

Подскажите как выполнить операцию вывода 10-ти бит, не на весь порт, а на одну ножку.

К тому же в CV AVR, он эти 10 бит сразу записывает в как 16 битное число.

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите как выполнить операцию вывода 10-ти бит, не на весь порт, а на одну ножку.

К тому же в CV AVR, он эти 10 бит сразу записывает в как 16 битное число.

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Полностью поддерживаю предыдущего оратора!

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тем не менее, идея "1-wire" (точнее, что-то аналогичное по сути, PWM-модуляция) может пригодится, если нет свободного UART, или не хватает его быстродействия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Для пояснения, мне нужен не интерфейс, а только одна ножка.

Я думал что то типа побитового выставления 1 или 0 на ножке выхода.

Т.е. считываем 10 бит, выставляем его на PORTB.0, за тем 9-ый бит и т.д.

Или может я слишком мудрю. И можно определить переменную как word и загнать её сразу в нужную ножку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

УАРТ так и делает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне нужно текущее число со всеми шумами и т.д.
Шумы можно наблюдать и в интегральном коде (число непрерывных единиц к нем равно значению самого числа).

Для этого подойдет широтно-импульсную модуляция, что есть в каждом микроконтроллере.

В этом случае осциллограф надо синхронизировать началом импульса ШИМ, а шумы, в виде дребезга, просматривать на конце импульса.

Двоичный или десятичный код не позволят сделать оценку шумов без передачи их в компьютер.

 

По моему эту идею уже высказал rx3apf...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не, я-то подразумевал побитовый выход с PWM-модуляцией для каждого бита (например, "0" - 1 такт, "1" - 2 такта). А вывести результат преобразования через аппаратный PWM - тоже интересный вариант.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите как выполнить операцию вывода 10-ти бит, не на весь порт, а на одну ножку.

К тому же в CV AVR, он эти 10 бит сразу записывает в как 16 битное число.

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

 

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

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

ws2812-timing1.png

В СV есть код-генератор (Code Wizard), почти как Cube для stm32, можете задать ему все нужные параметры всей периферии, а потом посмотреть на код, и help в CV имхо достаточный. У вас полная, не учебная версия CV?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Картинка к чему?

Да, визардом умею пользоваться, периферии никакой не будет, дальше идет в аналоговую часть. Вот все равно не понял Вас, как там настроить четыре независимых "ноги"?

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

УАРТ так и делает.

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

Изменено пользователем Herz
Избыточное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Сначала опишите подробнее, что вы хотите сделать. И зачем? А то был 1 канал, стало 4. Это что, курсовой проект, что ли?

Выводите все каналы по одному проводу. 4 слова. В каком формате? В каком нравится. Здесь уже посоветовали несколько.

P.S. В один УАРТ можно 444 канала вывести, и еще останется... :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сначала опишите подробнее, что вы хотите сделать. И зачем? А то был 1 канал, стало 4. Это что, курсовой проект, что ли?

Выводите все каналы по одному проводу. 4 слова. В каком формате? В каком нравится. Здесь уже посоветовали несколько.

P.S. В один УАРТ можно 444 канала вывести, и еще останется... :rolleyes:

Нет, это не курсовой проект, с курсовыми я лет как 10 назад закончил.

Расширяю кругозор в области работы на МК.

Я не писал в начале, что у меня один канал, я спрашивал как вывести на одну ножку последовательно значения полученные в АЦП. Возможно это мое упущение, но не подумал, что мне могут рассказывать про УАРТ и 1 Wire.

Скорее всего ответ на мой вопрос лежит в области применения таймеров и PWM, но думал, что по проще можно. Вот только таймер 16-ти битный только один.

Задача именно такая, как и в начале я писал, вывести через одну ножку битовую последовательность с АЦП и еще с трёх ножек обработанные с помощью наложением маски.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорее всего ответ на мой вопрос лежит в области применения таймеров и PWM, но думал, что по проще можно.

Задача именно такая, как и в начале я писал, вывести через одну ножку битовую последовательность с АЦП и еще с трёх ножек обработанные с помощью наложением маски.

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

 

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

 

Сначала напишите, что вы уже сделали, что не нравится, тогда и советы будут определенные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ЦАП нет, атмега8.

Мне не нужна синхронизация.

А зачем прерывание таймера, почему нельзя по прерыванию окончания АЦП преобразования сделать следующее:

считать младший бит (10) значения ADCW сдвинув на 9 позиций в право (ADCW>>9) и вытавлять это значение PORTB.1 напрямую или через переменную

затем считываем девятый бит (ADCW>>8) и выставляем это значение на PORTB.1 и т.д. перебрав все 10 бит полученого значения.

Вот только вопрос, если я буду "отбрасывать" лишние значения, они будут удаляться или просто игнорироваться при считывании?

Затем запускать повторно считывания АЦП.

 

прежде чем, что то делать, лучше провести анализ, а если нет опыта спросить у других.

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

Изменено пользователем Herz
Избыточное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...