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

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


Знающий
****

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



Цитата(XVR @ Dec 16 2016, 19:50) *
Потому что то, что вы написали невозможно применить в каких либо практических целях. Вот я и пытаюсь понять, что вы патались сделать. 'Вывести 10 бит через ножку' - это не ответ, это ваши хотелки.

А почему я не могу реализовать "мои хотелки", почему для вас вывод значений АЦП наружу не задача. Причем мне нужно будет сразу 4 канала вывода этих значений с наложением на каждый определённый алгоритм маскирования.
Как я понимаю исходя из своих "накопленных" знаний, это можно либо побитовым сдвигом через ножки и возможно через PWM с использованием таймеров. Я выбрал то, что пока мне понятнее на пальцах. Не знаю назовите этот девайс генератором кода, если Вам так будет проще. На осциле, я буду смотреть только на первом этапе кода соберу весь код, и то на предмет, того, что на "ножке" есть импульсы, и тут наверное лучше дописать ещё одну ногу для выхода синхронизации посылки 10 бит. потом эта система будет сама в себе.
За код правда спасибо. Вот только не понятно, зачем объявлять без регистровую переменную с, и как определена i ?

Цитата(ViKo @ Dec 16 2016, 12:08) *
А почему не циклом?
for (int i = 10; i > 0; i--) {
ADC_temp >>= 1;
...
}

Ну циклы мне писать еще рано, больше вероятность что запутаюсь.
Если я правильно понял, то ADC_temp >>= 1 сдвигает на один бит в каждом цикле, т.е. 9-ый бит встанет на место 10 бита, но ведь он это сделает в первом же цикле и я потеряю 10-ый бит?
Если предположить, что я не так понял, тогда код цикла будет выглядеть так:

for (int i = 10; i > 0; i--) {
ADC_temp >>= 1;
ADC_temp&=0x01 // битовая маска на младший 10-ый бит АЦП
if (ADC_temp== 0) PORTB.1=0;
if (ADC_temp!= 0) PORTB.1=1;
}


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


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Настройте вывод ШИМ на ножку.
10-ти битный ШИМ.
Скважностью этого ШИМа будет значение АЦП.
И смотрите стрелочным вольтметром значения вашего ацп.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 19 2016, 10:38
Сообщение #33


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

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



Цитата(ikm @ Dec 19 2016, 11:45) *
Ну циклы мне писать еще рано, больше вероятность что запутаюсь.
Если я правильно понял, то ADC_temp >>= 1 сдвигает на один бит в каждом цикле, т.е. 9-ый бит встанет на место 10 бита, но ведь он это сделает в первом же цикле и я потеряю 10-ый бит?

Правильно будет сначала выдать бит в порт, а потом сдвинуть. Т.е. ADC_temp >>=1 должна быть в конце тела цикла. Всего и делов то.
Go to the top of the page
 
+Quote Post
ikm
сообщение Dec 19 2016, 10:57
Сообщение #34


Знающий
****

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



Цитата(dimka76 @ Dec 19 2016, 12:57) *
Настройте вывод ШИМ на ножку.
10-ти битный ШИМ.
Скважностью этого ШИМа будет значение АЦП.
И смотрите стрелочным вольтметром значения вашего ацп.

В атмега 8 всего один 16 битный таймер и два 8-ми битных. Что из них вы предлагаете использовать в качестве 10-ти битного, с учётом того, что мне надо будет четыре канала выхода?
Ну раз вы предложили этот вариант, может прокоментируете мои представления о таймерах:
1.Получаем значения АЦП заносим OCR0A по которому таймер сбрасывается и изменяется состояние на ноге например PORTB.1
2. Так же мы можем независимо дать значение OCR0A по которому таймер сбросится и изменит состояние на ноге например PORTB.2
вот только у меня тут вопрос ведь если значение для OCR0A будет меньше чем, для OCR0В, то до события когда он досчитает до OCR0В мы можем и не дойти?
Или если таймер не сбрасывается, а просто выдает прерывание на значении OCR0A и продолжает считать дальше пока не дойдет до 255, то количество отсчётов между первым значением OCR0A и новым которое я задам при следующем считанным значением АЦП будет не одно и тоже , что если бы он начал отсчитывать опять с нуля- значит скважность будет разная?
Цитата(ViKo @ Dec 19 2016, 13:38) *
Правильно будет сначала выдать бит в порт, а потом сдвинуть. Т.е. ADC_temp >>=1 должна быть в конце тела цикла. Всего и делов то.

Значит, я Вас правильно понял, просто смутило многоточие стоящее после.
Еще раз спасибо.


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


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(ikm @ Dec 19 2016, 13:57) *
Ну раз вы предложили этот вариант, может прокоментируете мои представления о таймерах:

Во-первых, в datasheet все хорошо изложено.
Во-вторых, если вы не знакомы с английским, то по AVR написано несколько русскоязычных книг.

А ваше представление не верно.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
XVR
сообщение Dec 19 2016, 14:09
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(ikm @ Dec 19 2016, 11:45) *
А почему я не могу реализовать "мои хотелки", почему для вас вывод значений АЦП наружу не задача.
Я немного неправильно выразился. Ваша задача - не вывести наружу значения от АЦП через ножку, а увидеть их на осцилографе, я прав?
Просто вывести АЦП на ножку недостаточно - 'это' еще надо будет зафиксировать и понять, что именно было выведено.

Цитата
На осциле, я буду смотреть только на первом этапе кода соберу весь код, и то на предмет, того, что на "ножке" есть импульсы,
Ну если только на предмет 'наличия импульсов', то сойдет.
Цитата
и тут наверное лучше дописать ещё одну ногу для выхода синхронизации посылки 10 бит.
Вот это лучше. Но считывать значение АЦП будет довольно трудоемко, даже с синхронизацией.

Цитата
За код правда спасибо. Вот только не понятно, зачем объявлять без регистровую переменную с, и как определена i ?
с - что бы оптимизатор не выкинул цикл задержки, а i - это dly (описка в тексте)
Go to the top of the page
 
+Quote Post
ikm
сообщение Dec 20 2016, 07:23
Сообщение #37


Знающий
****

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



Цитата(XVR @ Dec 19 2016, 17:09) *
Я немного неправильно выразился. Ваша задача - не вывести наружу значения от АЦП через ножку, а увидеть их на осцилографе, я прав?
Просто вывести АЦП на ножку недостаточно - 'это' еще надо будет зафиксировать и понять, что именно было выведено.

Нет, не правы, именно вывести наружу задача.
Цитата(XVR @ Dec 19 2016, 17:09) *
Ну если только на предмет 'наличия импульсов', то сойдет.

Это как раз второстепенная задача, чисто посмотреть один раз что код написан правильно.


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


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(ikm @ Dec 20 2016, 10:23) *
Нет, не правы, именно вывести наружу задача.


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


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Dec 21 2016, 12:55
Сообщение #39


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

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



Цитата(dimka76 @ Dec 21 2016, 14:59) *
А почему бы вам просто не воспользоваться UART.
Его можно также программный ногодрыгом реализовать.
На передачу там все очень просто.

Да скоро будет уже. Ещё чуть-чуть, и человек разберётся, что длительность его битиков надо делать какой-то одинаково-стандартной, ввести признак "начало битиков" и "конец битиков" - и вот он, программно-ногодрыгный уарт :-)


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


Знающий
****

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



Цитата(esaulenka @ Dec 21 2016, 15:55) *
Да скоро будет уже. Ещё чуть-чуть, и человек разберётся, что длительность его битиков надо делать какой-то одинаково-стандартной, ввести признак "начало битиков" и "конец битиков" - и вот он, программно-ногодрыгный уарт :-)


Вы заблуждаетесь, для меня синхронизация моих битиков как раз лишняя, даже губительная для проекта. К тому же зачем городить код в десятки строк для формирования УАРТ, если и так все работает и меня полностью устраивает.

Спасибо еще раз Viko за помощь.


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


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Не вчитывался глубоко в топик, но вроде здесь речь идёт о способах передачи данных через один пин?
Интересно - только я один заметил, что уже сам ник топикстартера содержит одно из решений задачи? sm.gif
Go to the top of the page
 
+Quote Post
ikm
сообщение Dec 22 2016, 08:27
Сообщение #42


Знающий
****

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



Цитата(jcxz @ Dec 22 2016, 10:58) *
Не вчитывался глубоко в топик, но вроде здесь речь идёт о способах передачи данных через один пин?
Интересно - только я один заметил, что уже сам ник топикстартера содержит одно из решений задачи? sm.gif


Ну я бы сказал, что задача последовательный вывод данных, без преобразования в какой либо интерфейс.

И где пояснения к вашему решению?

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


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


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ikm @ Dec 22 2016, 11:27) *
И где пояснения к вашему решению?

Пояснения в гугле. Спросите его о "ИКМ" (импульсно-кодовая манипуляция (модуляция)).
PS: Грешным делом думал, что Вы ник свой выбрали имея в виду один из вариантов решения :-)
Go to the top of the page
 
+Quote Post
ikm
сообщение Dec 22 2016, 14:44
Сообщение #44


Знающий
****

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



Цитата(jcxz @ Dec 22 2016, 15:59) *
Пояснения в гугле. Спросите его о "ИКМ" (импульсно-кодовая манипуляция (модуляция)).


Типичный ответ человека с поверхностными знаниями : что то где то слышал, а как применять не знаю.
Т.к. для знающего материал хорошо, проще написать пару строк по делу с примером реализацией.


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


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ikm @ Dec 22 2016, 17:44) *
Типичный ответ человека с поверхностными знаниями : что то где то слышал, а как применять не знаю.
Т.к. для знающего материал хорошо, проще написать пару строк по делу с примером реализацией.

Тут Вам не детский сад - садить на горшок никто не будет, сами учитесь.
Если сами не умеете что-то делать - Вам в раздел "Предлагаю работу".
А о моих знаниях Вам судить и подавно рано.
Go to the top of the page
 
+Quote Post

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

 


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


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