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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Программирование АЦП на atmega16L-16AI, Помогите разобраться с считыванием данных с АЦП
Палыч
сообщение Apr 11 2011, 12:24
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(abitwise @ Apr 11 2011, 16:09) *
С типами данных у функции read_adc, массива temp_range и переменной adc_data_l ничего не напутал ? Всё верно ?

1. Вы, уж, определитесь: АЦП у Вас сколько разрядов выдаст? Всё привели к типу int; "резать" два бита - зачем? В чём выигрыш?
2. Сейчас только заметил: Вы ШИМ программно формируете. Почему не использовать аппаратные возможности?
3. В проверках (в операторах if) вторая часть условия (после &&) - лишняя: обеспечивается предыдущим оператором if
Go to the top of the page
 
+Quote Post
abitwise
сообщение Apr 11 2011, 12:37
Сообщение #32





Группа: Участник
Сообщений: 14
Регистрация: 1-04-11
Пользователь №: 64 056



1. Мне нужно 8 разрядов.
Насколько я понял, выйгрыш от этого только в частоте преобразования. Если нужна точноть, то диапазон от 50 до 200 кГц.
А если нет, то частоту можно повысить. Правда припоминаю, что у меня частота 125 кГц_).
2. В чём заключаются аппаратные возможности?
3. Убрал.

Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 11 2011, 12:59
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(abitwise @ Apr 11 2011, 16:37) *
1. Мне нужно 8 разрядов.
Оставили бы тип unsigned char - транслятор сразу предупредил бы Вас о ошибке: в temp_range задано число больше чем 255...

Цитата(abitwise @ Apr 11 2011, 16:37) *
2. В чём заключаются аппаратные возможности?
Режим таймера: "Fast PWM". То же, что и у Вас, но - аппаратно...

P.S. Ага! У Вас - режим 5 "Fast PWM 8 bit"... Прерывания тогда зачем?
Go to the top of the page
 
+Quote Post
abitwise
сообщение Apr 11 2011, 13:07
Сообщение #34





Группа: Участник
Сообщений: 14
Регистрация: 1-04-11
Пользователь №: 64 056



Ясно. То есть, чтобы не было этого конфликта нужно, чтобы read_adc() temp_range, adc_data_l были одного типа? В данном случае unsigned char!?

В этом случае прерывания по совпадению не нужны и атмега сама выдаст на ноги PD4 и PD5 нужные сигналы !?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 11 2011, 13:15
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(abitwise @ Apr 11 2011, 17:07) *
нужно, чтобы read_adc() temp_range, adc_data_l были одного типа?
Желательно...
Цитата(abitwise @ Apr 11 2011, 17:07) *
В этом случае прерывания по совпадению не нужны и атмега сама выдаст на ноги PD4 и PD5 нужные сигналы !?
Типа того... Прочитайте внимательнее этот раздел в DS. Выходы ШИМ: OC1A и OC1B - посмотрите с чем совмещены сами.
Go to the top of the page
 
+Quote Post

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

 


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


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