|
|
  |
Как вывести 10 бит АЦП через один вывод, Atmega+ CVAVR |
|
|
|
Dec 13 2016, 14:36
|

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

|
Цитата(ikm @ Dec 13 2016, 19:43)  Подскажите как выполнить операцию вывода 10-ти бит, не на весь порт, а на одну ножку. К тому же в CV AVR, он эти 10 бит сразу записывает в как 16 битное число. Ответ, на вопрос для чего мне это нужно: Хочу видеть значение которое выдает АЦП при измерении. т.е. усредняться и отфильтровывается не будет, мне нужно текущее число со всеми шумами и т.д.
А еще лучше порекомендуйте книгу по AVR в которой применяется компилятор CV AVR (кроме Лебедева М.В.) Интерфейс 1Wire.
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
Dec 14 2016, 06:38
|
Знающий
   
Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894

|
Цитата(Smoky @ Dec 13 2016, 17:36)  Интерфейс 1Wire. 1Wire можно сконфигурировать только под один из портов (в,с,d), а не под все сразу. Мне нужно сразу четыре таких ноги. Для пояснения, мне нужен не интерфейс, а только одна ножка. Я думал что то типа побитового выставления 1 или 0 на ножке выхода. Т.е. считываем 10 бит, выставляем его на PORTB.0, за тем 9-ый бит и т.д. Или может я слишком мудрю. И можно определить переменную как word и загнать её сразу в нужную ножку?
--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
|
|
|
|
|
Dec 14 2016, 13:42
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(ikm @ Dec 13 2016, 17:43)  мне нужно текущее число со всеми шумами и т.д. Шумы можно наблюдать и в интегральном коде (число непрерывных единиц к нем равно значению самого числа). Для этого подойдет широтно-импульсную модуляция, что есть в каждом микроконтроллере. В этом случае осциллограф надо синхронизировать началом импульса ШИМ, а шумы, в виде дребезга, просматривать на конце импульса. Двоичный или десятичный код не позволят сделать оценку шумов без передачи их в компьютер. По моему эту идею уже высказал rx3apf...
|
|
|
|
|
Dec 14 2016, 21:20
|
Знающий
   
Группа: Свой
Сообщений: 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?
|
|
|
|
|
Dec 15 2016, 11:31
|
Знающий
   
Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894

|
Картинка к чему? Да, визардом умею пользоваться, периферии никакой не будет, дальше идет в аналоговую часть. Вот все равно не понял Вас, как там настроить четыре независимых "ноги"? Цитата(ViKo @ Dec 14 2016, 10:33)  Именно, мудрите непонятно что. По одному проводу выводят последовательно, бит за битом, пока все ваше слово не вылезет. Потом пауза. Или старт, стоп вокруг байта. Потом опять. УАРТ так и делает. Не могли бы Вы привести пример, как правильно выводить последовательно, если не принимать в расчёт УАРТ (ведь мне нужно 4 таких канала, а УАРТ один).
Сообщение отредактировал Herz - Dec 16 2016, 09:33
Причина редактирования: Избыточное цитирование
--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
|
|
|
|
|
Dec 15 2016, 11:57
|

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

|
Цитата(ikm @ Dec 15 2016, 14:31)  Не могли бы Вы привести пример, как правильно выводить последовательно, если не принимать в расчёт УАРТ (ведь мне нужно 4 таких канала, а УАРТ один). Сначала опишите подробнее, что вы хотите сделать. И зачем? А то был 1 канал, стало 4. Это что, курсовой проект, что ли? Выводите все каналы по одному проводу. 4 слова. В каком формате? В каком нравится. Здесь уже посоветовали несколько. P.S. В один УАРТ можно 444 канала вывести, и еще останется...
|
|
|
|
|
Dec 15 2016, 12:33
|
Знающий
   
Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894

|
Цитата(ViKo @ Dec 15 2016, 14:57)  Сначала опишите подробнее, что вы хотите сделать. И зачем? А то был 1 канал, стало 4. Это что, курсовой проект, что ли? Выводите все каналы по одному проводу. 4 слова. В каком формате? В каком нравится. Здесь уже посоветовали несколько. P.S. В один УАРТ можно 444 канала вывести, и еще останется...  Нет, это не курсовой проект, с курсовыми я лет как 10 назад закончил. Расширяю кругозор в области работы на МК. Я не писал в начале, что у меня один канал, я спрашивал как вывести на одну ножку последовательно значения полученные в АЦП. Возможно это мое упущение, но не подумал, что мне могут рассказывать про УАРТ и 1 Wire. Скорее всего ответ на мой вопрос лежит в области применения таймеров и PWM, но думал, что по проще можно. Вот только таймер 16-ти битный только один. Задача именно такая, как и в начале я писал, вывести через одну ножку битовую последовательность с АЦП и еще с трёх ножек обработанные с помощью наложением маски.
--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
|
|
|
|
|
Dec 15 2016, 12:55
|

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

|
Цитата(ikm @ Dec 15 2016, 15:33)  Скорее всего ответ на мой вопрос лежит в области применения таймеров и PWM, но думал, что по проще можно. Задача именно такая, как и в начале я писал, вывести через одну ножку битовую последовательность с АЦП и еще с трёх ножек обработанные с помощью наложением маски. А ЦАП там есть? Выведите на него. Пусть таймер выдает прерывание с интервалом, которым будете бит за битом выводить. По этому прерыванию и выдвигайте битики слова, пока не кончатся. А как кончатся, другое слово выдавайте... А чтобы синхронизацию сделать, на другую ножку выдайте один импульс, когда начинаете все свои слова выдавать. Сначала напишите, что вы уже сделали, что не нравится, тогда и советы будут определенные.
|
|
|
|
|
Dec 15 2016, 14:06
|
Знающий
   
Группа: Свой
Сообщений: 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
Причина редактирования: Избыточное цитирование
--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|